3

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

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

  • 如果我在 WiX 源中运行从带有 Product Id="*" 的源重建的 msi,它将开始正常安装并且不会检测到它是否已安装。如果我完成安装,它将在添加/删除程序中列为已安装 2 次(具有相同的版本号)。

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

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

4

2 回答 2

1

您可以设置 <Package Id="YOUR_GUID"...> 以便您的 MSI 具有与每个构建相同的 PackageCode。

于 2013-08-09T04:28:33.437 回答
1

通过设置产品 id 和包 id。例子:

< 产品 ID="{F8B72915-0441-43D5-BCBF-2D9B56D40BD0}" Name="$(var.Name)"
Manufacturer="$(var.Manufacturer)" UpgradeCode="$(var.UpgradeCode)" Version=" $(var.Version)" 语言="1033">

< 包 ID="{D715660D-CE5B-4AFE-878B-ABD943DD20FD}" InstallerVersion="300" Compressed="yes"/>

问题说明:如果产品 ID 设置为“*”,则产品 ID 将自动生成,并且在每次重建后,产品 ID 设置为不同的 ID,这就是它第二次安装的原因。如果相应的包 id 没有设置唯一的 guid,那么你会得到一个错误“这个产品的另一个版本已经安装。...”

一旦你用唯一的 id 设置了两个 id,然后在每个重建的产品 id 和包 id 都设置为与以前版本的 msi 安装程序相同的 id 之后,当你要安装新的内置安装程序时,它会要求你修复/卸载。

于 2015-01-06T10:45:57.510 回答