V7 Build Delphi32 Action

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?

Regards...Andrew

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.

Using D2007 with FB 7.0.0.1724.

Regards…Andrew

Hi Andrew

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.

HTH

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?

Regards...Andrew

Posted By Andrew on 19 Jan 2012 03:53 AM

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?

Hi Vincent,

Can you advise on this please?

Regards...Andrew

AutoUpdateProductVersionString does just that, it takes the ProductVersion field and applies it to the ProductVersionString. It defaults to true for backwards compatibility.

Thanks Vincent. Couldn't find anything about this in Help.

Regards...Andrew