2010-05-06 17 views
32

Qualcuno ha un consiglio su come impostare le informazioni dell'applicazione (es. Fare clic con il tasto destro su .exe-> proprietà) da Qt?Impostazione delle informazioni dell'applicazione in un file eseguibile Qt su Windows

Posso aggiungere stringhe di versione arbitrarie al file di risorse Qt (qrc) e visualizzarle. Ma la maggior parte dei programmi di installazione di Windows verifica il numero di versione e non riesco a trovare un modo Qt per impostare questi campi oltre a mantenere manualmente un file .RC separato

Un modo per aggiornare questo da una build automatizzata sarebbe anche bello !

risposta

55

Ecco come lo faccio ... aggiungere un file chiamato resources.rc al progetto con i contenuti:

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 

e un file chiamato version.h con il contenuto:

#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 

e infine al file .pro, aggiungere: RC_FILE = resources.rc. Le piattaforme non Windows ignoreranno il valore quindi non è necessario prefissarlo con win32:.

+0

Grazie - questo continua a mantenere un file rc separato. Ho finito per fare qualcosa in cui il mio script di sviluppo di Python ha appena scritto un file RC come questo. –

+1

questo non ha funzionato per me nulla è cambiato con tutto questo codice aggiunto al file di risorse –

+0

Funziona benissimo. Assicurati di includere qualsiasi percorso nel tuo file RC. # File Windows RC RC_FILE = $$ PWD/resources/resources.rc –

36

D'accordo, due anni dopo essere stato chiesto ... ma forse qualcuno lo troverà utile ...

tenta di utilizzare la seguenti variabili QMake:

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

Maggiori informazioni here.

+1

Grazie, non l'ho provato perché lavoro in VS, ma più risposte sono sempre buone –

+1

C'è un modo per ottenere 'VERSION' in runtime con qualche pezzo di codice? – Niklas

+1

Vedere la macro APP_VERSION qui: http://www.openguru.com/2009/11/qt-best-way-to-set-application-version.html – parsley72

Problemi correlati