I\'m really confused about msi version numbers. Here the Version number as used for the ProductVersion in the Property table and in the Update table is restricted to having
Yes, MSI ProductVersion and version in MSI file table are unrelated.
Yes, FILEVERSION in VERSIONINFO can be used to set the version in the MSI file table.
When working with MSI version, the numbers are often retrieved from VERSIONINFO resource (used in resource files) or .NET assembly contexts. The MSI terms might be easier to understand when compared with those:
Version
Product version
PRODUCTVERSION, a statement using the version data type AssemblyName.VersionFile version
Windows installer: is neither a property nor a data type. It is used as term to combine version string & language string. The windows installer methods Installer.FileVersion and MsiGetFileVersion ...
[..] return the version string or language string
No "FileVersion" property exists in the MSI.
FILEVERSION, a statement using the version data typeThe version data type in Windows installer - despite being a string - has the same limitations as the version data type in resource files ...
The version consists of two 32-bit integers, defined by four 16-bit integers.
... as well as the AssemblyName.Version ...
Metadata restricts the major, minor, build, and revision components for an assembly to a maximum value of UInt16.MaxValue - 1
So in case:
PRODUCTVERSION or AssemblyVersion are used for the MSI ProductVersion property during the build/deploy processthe developers has to heed:
VERSIONINFO/AssemblyName.Version (unsigned 16bit.16bit.16bit.16bit) andIf you include a fourth field in your product version, the installer ignores the fourth field.
So programs used in deploy processes which uses the version number of programs for their MSI setup have to heed the following limitations:
PRODUCTVERSION/AssemblyVersion: 8bit.8bit.16bit-1.16bit-1 (unsigned int)FILEVERSION/AssemblyFileVersion: 16bit-1.16bit-1.16bit-1.16bit-1 (unsigned int)Please point out weaknesses/faults of those comparisons.