gpt4 book ai didi

windows-installer - 使用 installshield 和 msi 时版本号有什么限制

转载 作者:行者123 更新时间:2023-12-04 09:02:51 27 4
gpt4 key购买 nike

由于内部原因,我们的当前版本设置为 901.0.1500.0,我们的项目是 C# .NET 项目,使用 installShield 进行安装、补丁创建、升级等...在我们的测试过程中,它一切正常,但我们最近确实遇到了几篇文章(大部分是很旧的文章),其中指出 a.b.c.d 的版本号必须遵循 a 和 b 必须小于 255 的规则。同样,我们在测试期间没有遇到任何问题,但这让我们有点担心。

谁能帮忙解决这个问题?

非常感谢。

最佳答案

在 Windows Installer 程序包中会遇到三种版本:

  • 产品版本:这存储在 ProductVersion property 中,并且由于它的压缩副本在注册表中存储为 DWORD 以支持 Major Upgrades ,它的格式必须高达 255.255.65535.x(其中 x 被版本比较忽略)才能正常工作。
  • 文件版本:这些存储在许多PE格式文件(.exe、.dll、.etc)的版本 block 中,也经常存储在Version列中File table .两者作为 File Versioning Rules 的一部分进行了比较确定给定文件是否替换了另一个文件或已经被替换。他们通常会正确地比较最高 65535.65535.65535.65535 的版本。
  • 程序集版本:如果您使用 .NET,您可能会遇到这些并将它们与文件版本混淆。 Windows Installer 在使用 GAC 时只关心这些。大多数操作都依赖于文件版本。

我想你说的是第一种情况。您可能遇到的问题是版本比较是为了查看给定的已安装产品是否在 Upgrade table 中描述的版本范围内。使用 DWORD 表示法完成。当 901 等主要版本被分解为单个字节时,它将以难以预测和利用的方式溢出。很有可能它的行为类似于 103 的主要版本,否则可能会成功。但是,次要 版本槽中的大量数字可能会影响被视为主要 版本的值。

参见 Installshield 2011 - Problem Upgrading existing software with Version format 2009.727.1365有关可能后果的示例。

关于windows-installer - 使用 installshield 和 msi 时版本号有什么限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26157202/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com