使用自定义字符串覆盖MSI DisplayVersion

问题描述 投票:2回答:2

我有一个.msi安装程序(通过q​​azxswpoi)我正在处理的应用程序,但应用程序的版本号不符合我的MSI的注册表wix所需的XYZ版本号,所以版本号被“修复”成适合的东西每次发布都会增加。

我没关系。

Version作为最终清理的一部分,将此X.Y.Z整数编码版本号转换为字符串并将其转储到msiexec注册表项中。我想要做的是用我自己的字符串覆盖该字符串,其中包含我的应用程序的实际版本号。

这当然可能。例如...

DisplayVersion

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\19BF4688EE4961F41A44D0282A2340D9\InstallProperties DisplayName = (REG_SZ) "Configuration Manager Client" LocalPackage = (REG_SZ) "C:\Windows\Installer\41202.msi" DisplayVersion = (REG_SZ) "5.00.7958.1000" Version = (REG_DWORD) 0x05001f16 是编码值“5.00.7958”,那么Version字符串的其余部分来自哪里?

如何,仅使用wix / msi支持的选项,我是否使用自己的自定义字符串覆盖注册表中的DisplayVersion

wix windows-installer msiexec
2个回答
1
投票

可能是一个比你想要做的更大的变化,但......

如果在MSI中设置ARPSYSTEMCOMPONENT = 1,它将不会为您的产品注册ARP条目。然后,您可以通过在MSI的注册表中填充HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ [ProductCode]键来为您的产品创建自己的ARP条目。


0
投票

我最终通过让MSI在安装过程结束时启动自定义安装程序二进制文件来完成此操作。该程序会分配自身的后台副本并退出,以便安装完成。

后台任务会暂停一段时间以完成安装,然后直接更改注册表以将DisplayVersion设置为所需的字符串。

这里有一个竞争条件,但它不是一个问题,更新字符串并不重要。

© www.soinside.com 2019 - 2024. All rights reserved.