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

时间:2014-11-04 11:29:27

标签: windows wix

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

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

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

3 个答案:

答案 0 :(得分:9)

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

我想不出你为什么希望这个Id对于不同版本的安装程序保持不变的原因;这会混淆Windows安装程序,例如当您尝试安装较新的软件包而不卸载之前的软件包时,可能会收到修复对话框。

升级代码仅在您使用MajorUpgrade时才有意义,但听起来您没有使用它。

修改:好的,因此您希望保持产品ID不变,以便使用msiexec /x {GUID}轻松卸载。

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

答案 1 :(得分:1)

您的两步流程正是重大升级所做的。但是,您说您不支持升级。这对我没有意义。

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

答案 2 :(得分:-2)

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