How to change an executable's properties? (Windows)
-
06-07-2019 - |
Question
When I create a .exe, I can right click it and go to properties->details. Then I get a list like:
File Description | Type | Application File Version | Product Name | Product Version | Copyright | Size | 18.0 KB Date Modified | 6/16/2009 8:23 PM Language |
How do I change these properties? (And on a side note, is there a way to change the icon?)
Solution
If you are using C/Win32 you can add something like this to your project encapsulated in a *.rc (resource) file:
VS_VERSION_INFO VERSIONINFO
FILEVERSION 0,0,0,2
PRODUCTVERSION 0,0,0,2
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
{
BLOCK "StringFileInfo"
{
BLOCK "040904b0"
{
VALUE "Comments", "comment\0"
VALUE "CompanyName", "comment\0"
VALUE "FileDescription", "base file\0"
VALUE "FileVersion", "0.0.0.2 TP\0"
VALUE "InternalName", "testTP\0"
VALUE "LegalCopyright", "none\0"
VALUE "OriginalFilename", "test.exe\0"
VALUE "ProductName", "test\0"
VALUE "ProductVersion", "0.0.0.2 TP\0"
}
}
BLOCK "VarFileInfo"
{
VALUE "Translation", 0x409, 1200
}
}
OTHER TIPS
Very easy if you are using visual studio:
- Right click on the 'Resource Files' folder in the project
- Click 'Add' then 'Resource'
- Choose 'Version' from the pop-up dialog
You can then double click on the file to open it in Visual Studio, and you get a handy editor to change the values.
Your values are then automatically linked in to the EXE.
This is simple file version info resource. For already existent files you can edit this information with any resource editor (for example Resource Hacker, it is outdated but still good). You can change icon this way too.
If you create your own application, then setting it depends on tool you are using. For example in Visual Studio you must look into project properties.
If you want to change the FileDescription or any other version resource string on a compiled executable, rcedit (a small open-source tool) does it pretty easily:
$ rcedit MyApp.exe --set-version-string FileDescription "My Awesome App"
For .NET, google for "setting assembly attributes" for information on what attributes are available. You then use the attributes like so ...
using System.Reflection; // Needed to get to the attributes.
[assembly:AssemblyTitle("My File Description")]
[etc.]