Windows Version Info and Manifest generator
Generates VERSIONINFO-containing Win32 resource file and WinSxS assembly manifest for your EXE or DLL according to details specified in the .info file, optionally incrementing build number.
To use as part of the build process in Visual Studio, in project properties, navigate to "Configuration Properties / Build Events / Pre-Build Event" and add following to the "Command Line" field:
"$(SolutionDir)rsrcgen.exe" "$(ProjectDir)$(AssemblyName).info" "dir=$(ProjectDir)\" debug=$(UseDebugLibraries) platform=$(PlatformTarget)
You will need to edit the path to the rsrcgen.exe file above.
First command line parameter is a full path to the .info file (details below). All following parameters should be in
abc=xyz format. These parameters define another variables available in the .info file.
The .info file is nothing else than a basic Windows INI file. Open the rsrcgen.info file in you favorite text editor to understand what the following talks about. There are following sections:
autoincrement- the only option available now: when true the rsrcgen will search in
build, increments it and writes it back into the .info file
This section contains predefined variables. Command line parameters take precedence. Variables can be referenced in any value in the .info file using
%name% syntax. Evaluation is recursive so beware endless loops.
Defines details of the VERSIONINFO resource.
filename- path to the resulting .rc file; if empty or missing none is generated
language- language (LANGID) of the description; use 0x0409 syntax
codepage- prefered codepage of single-byte-character string APIs, usually ignored
manifest- if the .rc file should reference the manifest created in the last section
dll- true/false, false means exe
productversion- canonical numeric versions, components separated by commas
Every value defined here is included into the VERSIONINFO resource. Some value names are recognized and translated. Some versions of Windows display all of them, more recent ones display only some of the known. See rsrcgen.info for examples and MSDN for list of the recognized strings as well as more details.
Current build file flags.
debug- debug build
prerelease- not intended for general use
private- private build, specify details in
special- special build, specify what is special in
Specifies details of generated manifest file.
filename- path to the resulting .manifest file; if empty or missing none is generated
architecture- binary architecture: x86, amd64, ia64, arm, arm64, etc.; typically passed through command line parameter
assemblyDescription- version and description
requestedExecutionLevel- if present, rsrscgen generates trustInfo block, typically: asInvoker, highestAvailable or requireAdministrator
dpiAware- if present, rsrscgen generates application/windowsSettings block; typically: true or true/pm
dpiAwareness- if present, rsrscgen generates application/windowsSettings block; for Windows 10 1703: "PerMonitorV2,PerMonitor"
longPathAware- if present, rsrscgen generates application/windowsSettings block; typically: true or false
supportedOS:#- where # is number (1 to N supported OS's, consecutive), if present rsrcgen generates compatibility block; value is GUID followed by optional comment
maxversiontested- highest OS version number under which the application was tested; for example Windows 10 19H1 is "10.0.18362.0"
dependentAssembly- numbered same as supportedOS, value contains name, version and publicKeyToken of the dependent assembly separated by spaces
Building the program
Rebuild of the source should be straightforward, Dev-C++ project is included. To refresh manifest and VERSIONINFO for the rsrcgen.exe itself, run:
rsrcgen.exe PATH\rsrcgen.info dir=PATH debug=false platform=x86
This tool is actually nothing much more than a very simple string replacing tool with predefined content. Written as very simplistic, for single purpose, does not even free allocated memory.