Question

I'm trying to configure our resource build to take version info on the command line

rc.exe /DVERCSV=8,0,0,0 /DVERDOT="8.0.0.0"

I thought it was working to start with, but there seems some glitch.

I seem to be getting a corruption when viewing in explorer - shows rubbish in the ProductVersion string, however opening the exe or res file shows the string values properly

however explorer is able to show the desired value if storing the value directly in the rc, or editing it to the 'same' value (minor change to get it to save) in visualstudio reosurce editor (after compilation to .res)

VS_VERSION_INFO VERSIONINFO
 FILEVERSION VERCSV
 PRODUCTVERSION VERCSV
 FILEFLAGSMASK 0x17L
 FILEFLAGS 0x0L
 FILEOS     VOS_NT_WINDOWS32
 FILETYPE   VFT_APP
 FILESUBTYPE    VFT2_UNKNOWN
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904b0"
        BEGIN
            VALUE "FileDescription", "XXX Application"
            VALUE "FileVersion", VERDOT
            VALUE "InternalName", "XXX"
            VALUE "LegalCopyright", "Copyright (C) 2010"
            VALUE "OriginalFilename", "XXX.exe"
            VALUE "ProductName", "XXX Application"
            VALUE "ProductVersion", VERDOT
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1200
    END
END

I've tried a variety of other things to resolve

  • missing trailing null?
    • VALUE "ProductVersion", VERDOT "\0"
    • \DVERDOT="8.0.0.0\0"
  • order
  • other translations
  • changes to code pages
  • #pragma code_page(1200)
  • secondary #define in the file
  • adding quotes around string using #VERDOT
  • using the CSV value instead
Was it helpful?

Solution

I saw corruption too, not so sure it matches your case since I used the IDE and you didn't describe what you saw. Post a screen shot next time. The number is embedded in binary instead of ASCII, producing a single character when viewed in the property sheet, a black rectangle with a white center circle. Character code 8.

I fixed it by putting two pair of double-quotes around the string so the inner pair survives a trip through cmd.exe:

/DVERDOT=""8.0.0.0""
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top