Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Setting application info in a Qt executable file on Windows

Anyone have an tips on setting the application info (ie. right click on .exe->properties) from Qt?

I can add arbitrary version strings to Qt resource file (qrc) and display them. But most Windows installers check the version number and I can't find a Qt way of setting these fields other than manually maintaining a separate .RC file

Some way that lets you update this from an automated build would also be nice!

like image 820
Martin Beckett Avatar asked May 06 '10 21:05

Martin Beckett


People also ask

How do I change the icon for an EXE file in Qt?

Setting the Application Icon on Windows This can be done using Microsoft Visual Studio: Select File >> New, and choose the Icon File. Note: You need not load the application into the Visual Studio IDE as you are using the icon editor only.

How do I run a QT program in Windows?

Usage: windeployqt [options] [files] Qt Deploy Tool 6.0. 0 The simplest way to use windeployqt is to add the bin directory of your Qt installation (e.g. <QT_DIR\bin>) to the PATH variable and then run: windeployqt <path-to-app-binary> If ICU, etc. are not in the bin directory, they need to be in the PATH variable.


2 Answers

Here's how I do it... add a file called resources.rc to your project with the contents:

IDI_ICON1   ICON    DISCARDABLE "res/app.ico"  #include <windows.h> #include "version.h"  VS_VERSION_INFO VERSIONINFO FILEVERSION     VER_FILEVERSION PRODUCTVERSION  VER_PRODUCTVERSION BEGIN     BLOCK "StringFileInfo"     BEGIN         BLOCK "040904E4"         BEGIN             VALUE "CompanyName",        VER_COMPANYNAME_STR             VALUE "FileDescription",    VER_FILEDESCRIPTION_STR             VALUE "FileVersion",        VER_FILEVERSION_STR             VALUE "InternalName",       VER_INTERNALNAME_STR             VALUE "LegalCopyright",     VER_LEGALCOPYRIGHT_STR             VALUE "LegalTrademarks1",   VER_LEGALTRADEMARKS1_STR             VALUE "LegalTrademarks2",   VER_LEGALTRADEMARKS2_STR             VALUE "OriginalFilename",   VER_ORIGINALFILENAME_STR             VALUE "ProductName",        VER_PRODUCTNAME_STR             VALUE "ProductVersion",     VER_PRODUCTVERSION_STR         END     END      BLOCK "VarFileInfo"     BEGIN         VALUE "Translation", 0x409, 1252     END END 

and a file called version.h with the contents:

#ifndef VERSION_H #define VERSION_H  #define VER_FILEVERSION             1,0,0,0 #define VER_FILEVERSION_STR         "1.0.0.0\0"  #define VER_PRODUCTVERSION          1,0,0,0 #define VER_PRODUCTVERSION_STR      "1.0\0"  #define VER_COMPANYNAME_STR         "Your Organization" #define VER_FILEDESCRIPTION_STR     "CoolApplication" #define VER_INTERNALNAME_STR        "CoolApplication" #define VER_LEGALCOPYRIGHT_STR      "Copyright © 2010 Your Organization" #define VER_LEGALTRADEMARKS1_STR    "All Rights Reserved" #define VER_LEGALTRADEMARKS2_STR    VER_LEGALTRADEMARKS1_STR #define VER_ORIGINALFILENAME_STR    "coolapplication.exe" #define VER_PRODUCTNAME_STR         "CoolApplication"  #define VER_COMPANYDOMAIN_STR       "example.org"  #endif // VERSION_H 

and lastly to your .pro file, add: RC_FILE = resources.rc. Non-Windows platforms will ignore the value so you needn't prefix it with win32:.

like image 170
Jake Petroules Avatar answered Sep 20 '22 01:09

Jake Petroules


Okay, two years after being asked... but maybe somebody will find it useful...

Try to use the following qmake variables:

VERSION = 0.4.0.1 QMAKE_TARGET_COMPANY = company QMAKE_TARGET_PRODUCT = product QMAKE_TARGET_DESCRIPTION = description QMAKE_TARGET_COPYRIGHT = copyright 

More info here.

like image 29
peter.slizik Avatar answered Sep 20 '22 01:09

peter.slizik