【问题标题】:Setting application info in a Qt executable file on Windows在 Windows 上的 Qt 可执行文件中设置应用程序信息
【发布时间】:2011-02-16 14:26:03
【问题描述】:

谁有关于从 Qt 设置应用程序信息(即右键单击 .exe->properties)的提示?

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

让您从自动构建中更新它的某种方式也很好!

【问题讨论】:

    标签: windows resources qt4 version versioninfo


    【解决方案1】:

    我是这样做的……将一个名为 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:

    【讨论】:

    • 谢谢 - 那仍然维护一个单独的 rc 文件。我最终做了一些事情,我的 python 构建脚本只是写了一个像这样的 RC 文件。
    • 这对我不起作用,所有这些代码都添加到资源文件中没有任何改变
    • 效果很好。确保包含 RC 文件的任何路径。 # Windows RC 文件 RC_FILE = $$PWD/resources/resources.rc
    • 您在 resources.rc 文件中使用的语法的文档在哪里?
    【解决方案2】:

    好的,在被问到两年后......但也许有人会觉得它有用......

    尝试使用以下 qmake 变量:

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

    更多信息here

    【讨论】:

    • 谢谢,因为我在VS工作,所以没有测试过,但是更多的答案总是好的
    • 有什么方法可以在运行时通过一些代码获得VERSION
    • 在此处查看 APP_VERSION 宏:openguru.com/2009/11/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-13
    • 2020-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多