使用installshield和msi时,版本号有哪些限制

Tal*_*Tal 3 windows-installer installshield version

由于内部原因,我们当前的版本设置为901.0.1500.0,我们的项目是C#.NET,并使用installShield进行安装,补丁创建,升级等...在我们的测试期间,一切正常但我们最近遇到了几篇文章(主要是相当旧的)表明abcd的版本号必须遵循a和b必须小于255的规则.同样,我们在测试期间没有遇到任何问题,但这让我们有点担心.

任何人都可以协助解决这个问题吗?

非常感谢.

Mic*_*man 6

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

  • 产品版本:它存储在ProductVersion属性中,由于它的压缩副本在注册表中存储为DWORD以支持主要升级,因此它必须采用最多格式255.255.65535.x(在x版本比较中忽略的位置)工作正常.
  • 文件版本:这些文件存储在许多PE格式文件(.exe,.dll,.etc)的版本块中,并且通常存储在File表Version列中.将这两者作为文件版本控制规则的一部分进行比较,以确定给定文件是替换另一个文件还是已被替换.他们通常会正确比较版本高达65535.65535.65535.65535.
  • 汇编版本:如果您正在使用.NET,您可能会遇到这些并将它们与文件版本混淆.在使用GAC时,Windows Installer仅关注这些问题.大多数操作都依赖于文件版本.

我想你在谈论第一个案例.您可能遇到的问题是,为了查看给定安装的产品是否在升级表中描述的版本范围内进行的版本比较是使用DWORD表示完成的.当901这样的主要版本被打成一个字节时,它将以难以预测和利用的方式溢出.赔率很高,它的行为类似于103 的主要版本,否则可能会有效.但是,次要版本插槽中的大量数字可能会影响作为主要版本的值.

有关可能的后果的示例,请参阅Installshield 2011 - 问题使用版本格式2009.727.1365升级现有软件.