2010-05-06 66 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

相關問題