2010-05-06 9 views
32

¿Alguien tiene consejos sobre cómo configurar la información de la aplicación (es decir, haga clic derecho en .exe-> propiedades) desde Qt?Configuración de la información de la aplicación en un archivo ejecutable Qt en Windows

Puedo agregar cadenas de versión arbitraria al archivo de recursos de Qt (qrc) y mostrarlas. Pero la mayoría de los instaladores de Windows comprueban el número de versión y no puedo encontrar un modo Qt para configurar estos campos aparte de mantener manualmente un archivo .RC separado .RC

De alguna manera que le permite actualizar esto desde una compilación automatizada también sería bueno !

Respuesta

55

Así es como lo hago ... añadir un archivo llamado resources.rc a su proyecto con el contenido:

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 

y un archivo llamado version.h con el contenido:

#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 

y finalmente a su archivo .pro, agregue: RC_FILE = resources.rc. Las plataformas que no son de Windows ignorarán el valor, por lo que no es necesario que prefijas el win32:. les pide

+0

Gracias - eso sigue manteniendo un archivo rc separado. Terminé haciendo algo donde mi script de construcción python acaba de escribir un archivo RC como este. –

+1

esto no funcionó para mí nada cambió con todo este código agregado al archivo de recursos –

+0

Funciona muy bien. Asegúrese de incluir cualquier ruta a su archivo RC. # archivo Windows RC RC_FILE = $$ PWD/resources/resources.rc –

36

bien, dos años después ... pero tal vez alguien le resultará útil ...

Trate de usar las siguientes variables qmake:

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

Más información here.

+1

Gracias, no lo he probado porque trabajo en VS, pero hay más respuestas siempre buenas –

+1

¿Hay alguna forma de obtener 'VERSION' en tiempo de ejecución con algún fragmento de código? – Niklas

+1

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

Cuestiones relacionadas