2010-05-06 92 views
32

任何人都有从Qt中设置应用程序信息的提示(即右键单击.exe->属性)?在Windows上设置Qt可执行文件中的应用程序信息

我可以添加任意版本字符串到Qt资源文件(qrc)并显示它们。 但大多数Windows安装程序检查版本号,我找不到一个Qt的方式来设置这些字段,而不是手动维护一个单独的.RC文件

某种方式可以让你从自动构建更新这也将是很好的!

回答

55

这里是我如何做到这一点......一个名为resources.rc文件添加到您的项目与内容:

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 

和与内容叫version.h文件,方法:

#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 

并最后添加到.pro文件中,请添加:RC_FILE = resources.rc。非Windows平台将忽略该值,因此您不需要在win32:前加前缀。

+0

谢谢 - 这仍然保持一个单独的rc文件。我最终做了一些事情,我的python构建脚本就像这样写了一个RC文件。 – 2010-07-24 05:42:40

+1

这对我没有用 没有任何改变将所有这些代码添加到资源文件 – 2010-11-10 21:37:08

+0

它工作的很好。确保你包含了任何RC文件的路径。 #Windows RC文件 RC_FILE = $$ PWD/resources/resources.rc – 2012-01-06 19:51:53

36

好了,两年后被问...但也许有人会发现它很有用...

尝试使用下面的qmake变量:

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

更多信息here

+1

谢谢,没有测试过,因为我在VS工作,但更多的答案总是好 – 2012-08-15 14:41:03

+1

有没有什么办法可以在运行时用某段代码来获得'VERSION'? – Niklas 2013-12-15 16:00:43

+1

请参阅APP_VERSION宏:http://www.openguru.com/2009/11/qt-best-way-to-set-application-version.html – parsley72 2013-12-31 22:55:09

相关问题