我们如何为 Wix Product/@Version 使用自定义产品版本格式 - 例如 2022.02.01?
如果我使用编译时变量(@)执行此操作,则会出现错误 - 产品版本必须具有小于 256 的主要版本、小于 256 的次要版本以及小于 65536 的构建版本
如果我尝试使用文件版本等活页夹变量,那么它不能具有我需要的格式,因为我只需要 3 部分格式。而且它也不允许 02,因为它使它成为 2。
我已经浏览了如下一些链接,这些链接似乎对我的场景没有多大帮助。 https://stackoverflow.com/a/641094
https://stackoverflow.com/a/8555951/8052403
有什么建议/想法/指导吗?
我们使用的Wix版本是3.10.2.2516。不过我觉得这种行为与版本无关。
我在 Windows 功能列表中看到一些条目(在下面的快照中突出显示),这些条目在主要/次要版本中的值似乎大于 256。 “你是怎么做到的?”
正确。这不是 WiX 工具集的限制,而是 Windows Installer 本身的限制。有关详细信息,请参阅产品版本文档。要改变这种情况,您需要与 Microsoft 联系以更新 Windows Installer 以允许您的专用产品版本。
MSI 数据库中的产品版本确实实际上允许任何字符串值,并且不必与 x.x.x.x 格式匹配。很难做到这一点,因为你提到 Wix 不允许这样做,并且会显示此错误:
The Product/@Version attribute's value, '11.3.2416.32.W', is not a valid version.
Legal version values should look like 'x.x.x.x' where x is an integer from 0 to 65534
其他 MSI 工具(例如 EXEMSI MSI 包装器)也会出现类似的错误:
Your version number must match the format of #.#.#.# where # represents a number in the range 0-65535.
我找到的解决方案是在使用SuperOrca构建它之后修改MSI。只需打开文件并转到“属性”表即可:
是的,这是实际安装在 MSI 数据库中并通过 Powershell 脚本验证的真实版本。
Fetching Installed Products, Please Wait (this may take a few minutes)...
Do not close this window...
Invalid Version Format Summary
-------------------------
ProductCode: {58901A3C-8C12-40FA-90DD-D12CC8F8BB30}
Version: 11.3.2416.32.W
我必须对此进行调查,因为我编写了一个程序来获取所有已安装的程序和版本,它是否在客户的计算机上遇到了错误。
我将 MSI 数据库版本列中的所有版本转换为 System.Version 类型,而“不合规”版本破坏了它,因此我使用不合规版本制作了自己的安装程序来测试这一点。