在Windows上的Qt可执行文件中设置应用程序信息

Mar*_*ett 36 windows resources version qt4 versioninfo

任何人都有关于从Qt设置应用程序信息(即右键单击.exe->属性)的提示?

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

某些让你从自动构建中更新它的方法也很不错!

Jak*_*les 61

这是我如何做到的...将一个名为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
Run Code Online (Sandbox Code Playgroud)

和一个名为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
Run Code Online (Sandbox Code Playgroud)

最后到你的.pro文件,添加:RC_FILE = resources.rc.非Windows平台将忽略该值,因此您无需为其添加前缀win32:.

  • 您在resources.rc文件中使用的语法文档在哪里? (2认同)

pet*_*zik 46

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

尝试使用以下qmake变量:

VERSION = 0.4.0.1
QMAKE_TARGET_COMPANY = company
QMAKE_TARGET_PRODUCT = product
QMAKE_TARGET_DESCRIPTION = description
QMAKE_TARGET_COPYRIGHT = copyright
Run Code Online (Sandbox Code Playgroud)

更多信息在这里.