如何使用 WiX 从源代码重建完全相同的 msi 文件?
Posted
技术标签:
【中文标题】如何使用 WiX 从源代码重建完全相同的 msi 文件?【英文标题】:How to rebuild the exact same msi file from source with WiX? 【发布时间】:2013-07-25 15:32:13 【问题描述】:从使用 WiX 制作的 msi 安装应用程序后:
如果我运行相同的 msi 文件,它将进入维护模式,我可以修复/卸载。
如果我在 WiX 源中运行从带有 Product Id="*" 的源重建的 msi,它将开始正常安装,并且不会检测到它是否已安装。如果我完成安装,它将在添加/删除程序中列为已安装 2 次(具有相同的版本号)。
1234563 /p>如何从源代码控制中构建完全相同的 msi?这样我就不必保留原始 msi 文件而只保留源?
【问题讨论】:
【参考方案1】:您可以设置
【讨论】:
@budreau 我认为您还需要更改ProductVersion
。至少Wix 3.11.1
似乎是这样。请参阅thisSO
帖子。
我相信 OP 希望从源代码重新构建 MSI 并具有相同的 MSI 输出。所以,他们不想改变任何事情......【参考方案2】:
通过设置产品 ID 和包裹 ID。 示例:
制造商="$(var.Manufacturer)" UpgradeCode="$(var.UpgradeCode)" Version="$(var.Version)" Language="1033">
问题说明: 如果产品 ID 设置为“*”,则产品 ID 将自动生成,并且在每次重建后,产品 ID 都设置为不同的 ID,这就是它第二次安装的原因。 如果相应的包 id 没有设置唯一的 guid,那么你会得到一个错误“该产品的另一个版本已经安装。...”
一旦您将 id 都设置为唯一 id,然后在每个重建的产品 id 和包 id 都设置为与以前版本的 msi 安装程序相同的 id 之后,当您要安装新的内置安装程序时,它会要求您修复/卸载。
【讨论】:
以上是关于如何使用 WiX 从源代码重建完全相同的 msi 文件?的主要内容,如果未能解决你的问题,请参考以下文章
Jenkins 和 MSBuild 不会构建包含相同 dll 的多个版本的 WiX .msi