web-dev-qa-db-fra.com

Définition des informations d'application dans un fichier exécutable Qt sous Windows

Quelqu'un a-t-il des conseils sur la configuration des informations d'application (c'est-à-dire un clic droit sur .exe-> propriétés) de Qt?

Je peux ajouter des chaînes de version arbitraires au fichier de ressources Qt (qrc) et les afficher. Mais la plupart des installateurs Windows vérifient le numéro de version et je ne peux pas trouver un moyen Qt de définir ces champs autre que la maintenance manuelle d'un fichier .RC séparé

Un moyen qui vous permet de mettre à jour cela à partir d'une version automatisée serait également bien!

38
Martin Beckett

Voici comment je le fais ... ajoutez un fichier appelé resources.rc à votre projet avec le contenu:

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

et un fichier appelé version.h avec le contenu:

#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

et enfin à votre fichier .pro, ajoutez: RC_FILE = resources.rc. Les plates-formes non Windows ignoreront la valeur, vous n'avez donc pas besoin de la préfixer avec win32:.

63
Jake Petroules

D'accord, deux ans après avoir été interrogé ... mais peut-être que quelqu'un le trouvera utile ...

Essayez d'utiliser les variables qmake suivantes:

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

Plus d'informations ici .

48
peter.slizik