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

Windows installer 使用installshield和msi时,版本号有哪些限制,windows-installer,version,installshield,Windows Installer,Version,Installshield,由于内部原因,我们当前的版本设置为901.0.1500.0,我们的项目是C#NET项目,使用installShield进行安装、补丁创建、升级等。。。 在我们的测试过程中,一切正常,但我们最近确实看到了几篇文章(大部分都是非常老的文章),其中指出a.b.c.d的版本号必须遵循a和b必须小于255的规则。 同样,我们在测试过程中没有遇到任何问题,但这让我们有点担心 有人能帮忙解决这个问题吗 非常感谢。Windows Installer软件包中有三种版本: 产品版本:此版本存储在中,由于它的压缩副

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

有人能帮忙解决这个问题吗


非常感谢。

Windows Installer软件包中有三种版本:

  • 产品版本:此版本存储在中,由于它的压缩副本在注册表中以DWORD格式存储以支持,因此必须采用最高达
    255.255.65535.x
    (其中
    x
    在版本比较中被忽略)的格式才能正常工作
  • 文件版本:这些文件存储在许多PE格式文件(.exe、.dll、.etc)的版本块中,并且通常存储在的
    版本
    列中。作为的一部分,将对这两个文件进行比较,以确定给定文件是否替换了另一个文件或已被替换。他们通常会正确比较高达65535.65535.65535.65535的版本
  • 程序集版本:如果使用.NET,可能会遇到这些问题,并将其与文件版本混淆。Windows Installer仅在使用GAC时才关心这些问题。大多数操作都依赖于文件版本
我想你说的是第一个案子。您可能遇到的问题是,为查看给定安装的产品是否在中所述的版本范围内而进行的版本比较是使用DWORD表示完成的。当像901这样的主要版本被粉碎成一个字节时,它将以难以预测和利用的方式溢出。很有可能它会像103的主要版本一样工作,并且可能会以其他方式工作。但是,次要版本插槽中的较大数字可能会影响被视为主要版本的值


有关可能产生的影响的示例,请参见。

正如Michael所说,ProductVersion可能就是您所指的产品版本,下面是Microsoft的评论,我相信它现在仍然相关。