2014-11-04 58 views
4

我们的产品使用WIX安装程序,只有我们的支持团队执行安装例程。 一个用于升级的必由之路包含两个步骤:是否需要对所有产品版本使用独特的WIX产品ID(如果不支持升级)

  1. 删除已安装的应用程序的任何以前的版本。我们所有的产品GUID的列表,使我们可以删除所有可能的版本(MSIEXEC/X GUID)
  2. 安装了旧版本的方案最新的一个

升级,维修或安装将永远不会被用于此产品(这是不可能的,因为部署是由脚本执行的)。

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

回答

6

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

我想不出你为什么要让这个ID保持不变,以适应不同版本的安装程序;这会混淆Windows安装程序,例如当您尝试安装较新的软件包而未卸载上一个软件包时,您可能会收到修复对话框。

只有当您使用MajorUpgrade时,升级代码应该是相关的,但听起来您并未使用该代码。

编辑:好的,所以你想保持产品id相同,以便更容易卸载与msiexec /x {GUID}

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

+0

其实我们并不期望较旧版本的软件包安装更新,它是受限的(问题更新)。 – 2014-11-04 13:13:57

1

您的两个步骤过程正是主要升级所做的。但是,你说你不支持升级。这对我没有意义。

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

-2

我建议你保持相同的产品ID。更改同一产品的产品ID不是一种好的做法。保持相同的产品ID。在安装之前,像现在这样使用脚本“msiexec/x GUID”进行卸载,然后再次安装设置。据我所知,产品应该始终有唯一的ID。

+1

产品代码应该针对每个版本进行更改;将其视为包标识符,而不是“产品”的标识符。从[ProductCode属性]的文档(http://msdn.microsoft.com/en-us/library/aa370854(v = vs.85).aspx):*此ID必须因不同的版本和语言而有所不同。* – 2014-11-14 10:00:47