Windows 如果不支持升级,是否有必要为所有产品版本使用唯一的WIX产品ID

Windows 如果不支持升级,是否有必要为所有产品版本使用唯一的WIX产品ID,windows,wix,Windows,Wix,我们有一个使用WIX安装程序的产品,只有我们的支持团队执行安装例程。 用于升级应用程序的唯一方法包括两个步骤: 删除已安装的任何早期版本的应用程序。我们有一个所有产品GUID的列表,通过它我们可以删除所有可能的版本(msiexec/x GUID) 安装最新版本 此产品永远不会使用升级、修复或安装旧版本方案(这是不可能的,因为部署是通过脚本执行的) 如果我们不使用升级功能,是否有必要使所有新版本的产品id都是唯一的,或者是否可以保留相同的产品和升级id 来自的文档:此ID必须因不同版本和语言而异。

我们有一个使用WIX安装程序的产品,只有我们的支持团队执行安装例程。 用于升级应用程序的唯一方法包括两个步骤:

  • 删除已安装的任何早期版本的应用程序。我们有一个所有产品GUID的列表,通过它我们可以删除所有可能的版本(msiexec/x GUID)
  • 安装最新版本
  • 此产品永远不会使用升级、修复或安装旧版本方案(这是不可能的,因为部署是通过脚本执行的)


    如果我们不使用升级功能,是否有必要使所有新版本的产品id都是唯一的,或者是否可以保留相同的产品和升级id

    来自的文档:此ID必须因不同版本和语言而异。因此,通常您只需在
    Product
    元素中设置
    Id=“*”
    ,以便生成的每个安装程序包都是唯一的

    我想不出为什么你希望这个Id在不同版本的安装程序中保持不变;这将混淆windows installer,例如,当您尝试安装较新的软件包而不卸载以前的软件包时,可能会出现“修复”对话框

    升级代码应该只在您使用
    MajorUpgrade
    时才相关,但听起来好像您没有使用它

    编辑:确定,因此您希望保持产品id不变,以便使用
    msiexec/x{GUID}
    轻松卸载


    另一种方法是让安装程序自己在某处记录产品代码GUID。例如通过。或者,您可以将产品Guid写入注册表中的一个固定位置,然后您可以编写一个脚本,读取该值以卸载。

    您的两步过程正是主要升级所做的。但是,您说您不支持升级。这对我来说毫无意义


    正确编写的安装程序可以通过脚本以静默方式执行,以自动将软件的任何早期版本升级到当前版本。

    我建议您保留相同的产品ID。更改相同产品的产品ID不是一个好做法。保持相同的产品ID。在安装之前,请像现在一样使用脚本“msiexec/x GUID”卸载,然后再次安装安装程序。正如我所知,产品应该始终具有唯一的ID。

    事实上,我们不希望更新的软件包安装超过旧的软件包安装,它受到限制(问题已更新)。每个版本的产品代码都应该更改;将其视为包标识符,而不是“产品”的标识符。来自的文档:此ID必须因不同版本和语言而异。Hmmm?产品ID和产品代码都有——它们不一样吗?(没关系,Wix产品ID属性变成了Windows Installer产品代码)