Upgraded from V6 to V7 recently and noticed that the V7 Build Delphi32 Action has changed in that the VersionInfo>Link ProductVersion to FileVersion is checked and grayed. Hence, the ProductVersion is not now set to my ProductVersion variable eg, 1.04 I set earlier (as in V6) but is always 1.0.4.0. I uncheck 'Use property Set for Version Info', uncheck 'Link ProductVersion to FileVersion' and then re-check 'Use property Set for Version Info' and save the project. I run the project and the ProductVersion is still 1.0.4.0. When I look at the action again, 'Link ProductVersion to FileVersion' is grayed and checked again! How do I get to set the ProductVersion using my version property set in V7?
I see this issue came up in March 2011. I have assigned my ProductVersion string variable to both the ProductVersion and ProductVersionString versioninfo properties in V7, but Product Version is always set to the FileVersion ie, 1.0.4.0 - and not to my ProductVersion value of 1.04 - after building the exe. In V6, this works fine using the ProductVersion property.
There were some changes in FB7, to correct some issues and allow some users to achieve what they want. There is a lot of confusion about version information, especially what bit comes from where.
If you are using a property set, then add a PropertySet Assign Values action before your delphi action, and assign False to the LinkProductVersion property. You will notice that there are few more properties on the propertyset than there were in FB6 and earlier, you can control the AutoUpdateFileVersionString and AutoUpdateProductVersionString there too.
This is how those values map to the VERSION_INFO record :
1 VERSIONINFO FILEVERSION 1,2,3,4 << FILEVERSION - must be 4 16bit integers PRODUCTVERSION 1,2,3,4 << PRODODUCTVERSION - must be 4 16bit integers FILEFLAGSMASK 0x3FL FILEFLAGS 0x00L FILEOS 0x40004L FILETYPE 0x1L FILESUBTYPE 0x00L BEGIN BLOCK “StringFileInfo” BEGIN BLOCK “0C0904E4” <<language &="" codepage=""> BEGIN VALUE “FileVersion”, “1.2.3.4\0” < VALUE “ProductVersion”, “1.04\0” < END END BLOCK “VarFileInfo” BEGIN VALUE “Translation”, 0x0C09, 1252 END END
Note that when you view the version info for an exe in explorer, it is the FILEVERSION and PRODUCTVERSIONSTRING values that you are seeing.
Thanks Vincent, checking and assigning False to the LinkProductVersion property fixed the problem.
BTW, what does AutoUpdateProductVersionString do? Also, I note that assigning the project's ProductVersion string variable to the ProductVersion property (as I did in V6) together with the LinkProductVersion property assignment is all that is required; the ProductVersionString property can be left unassigned. Why is that if that property value is used in the exe?
BTW, what does AutoUpdateProductVersionString do? Also, I note that assigning the project's ProductVersion string variable to the ProductVersion property (as I did in V6) together with the LinkProductVersion property assignment is all that is required; the ProductVersionString property can be left unassigned. Why is that if that property value is used in the exe?
AutoUpdateProductVersionString does just that, it takes the ProductVersion field and applies it to the ProductVersionString. It defaults to true for backwards compatibility.