如何使用WiX从源重建完全相同的msi文件?

时间:2013-07-25 15:32:13

标签: wix wix3.7

从使用WiX制作的msi安装应用程序后:

  • 如果我运行相同的msi文件,它将进入维护模式,我可以修复/卸载。

  • 如果我在WiX源中运行一个从源重建的msi,其中包含Product Id =“*”,它将启动正常安装并且不会检测到它已经安装。如果我进行安装,它将在添加/删除程序中列出已安装2次(具有相同的版本号)。

  • 如果我在WiX源代码中运行使用Product Id =“my-own-guid”从源重建的msi,则会收到错误“已安装此产品的另一个版本。...” / p>

如何从源代码控制中构建完全相同的msi?这样我就不必保留原始msi文件而只保留源文件了吗?

2 个答案:

答案 0 :(得分:1)

您可以设置< Package Id =“YOUR_GUID”...>这样你的MSI每次构建都有相同的PackageCode。

答案 1 :(得分:1)

通过设置产品ID和包ID。 例如:

  <产品编号=" {F8B72915-0441-43D5-BCBF-2D9B56D40BD0}"名称=" $(var.Name)"
制造商=" $(var.Manufacturer)"的UpgradeCode =" $(var.UpgradeCode)"版本=" $(var.Version)"语言=" 1033">

<包ID =" {D715660D-CE5B-4AFE-878B-ABD943DD20FD}" InstallerVersion =" 300"压缩="是" />

问题说明:         如果产品ID设置为“*”,则产品ID将自动生成,并且在每次重建后,产品ID将被设置为具有不同的ID,这就是为什么第二次安装它的原因。 如果未使用唯一guid设置相应的包ID,则会出现错误"已安装此产品的另一个版本。 ..."

一旦您将id设置为唯一ID,然后在每次重建产品ID和包ID之后使用与之前版本的msi安装程序相同的ID设置,并且当您要安装新构建的安装程序时,它将要求您修复/ uninstall。