How do I set the version information for an existing .exe, .dll?
While it's not a batch process, Visual Studio can also add/edit file resources.
Just use File->Open->File on the .EXE or .DLL. This is handy for fixing version information post-build, or adding it to files that don't have these resources to begin with.
Unlike many of the other answers, this solution uses completely free software.
Firstly, create a file called Resources.rc
like this:
VS_VERSION_INFO VERSIONINFO FILEVERSION 1,0,0,0 PRODUCTVERSION 1,0,0,0{ BLOCK "StringFileInfo" { BLOCK "040904b0" { VALUE "CompanyName", "ACME Inc.\0" VALUE "FileDescription", "MyProg\0" VALUE "FileVersion", "1.0.0.0\0" VALUE "LegalCopyright", "© 2013 ACME Inc. All Rights Reserved\0" VALUE "OriginalFilename", "MyProg.exe\0" VALUE "ProductName", "My Program\0" VALUE "ProductVersion", "1.0.0.0\0" } } BLOCK "VarFileInfo" { VALUE "Translation", 0x409, 1200 }}
Next, use GoRC to compile it to a .res
file using:
GoRC /fo Resources.res Resources.rc
(see my comment below for a mirror of GoRC.exe
)
Then use Resource Hacker in CLI mode to add it to an existing .exe
:
ResHacker -add MyProg.exe, MyProg.exe, Resources.res,,,
That's it!
Or you could check out the freeware StampVer for Win32 exe/dll files.
It will only change the file and product versions though if they have a version resource already. It cannot add a version resource if one doesn’t exist.