在 Windows 上的 Qt 可执行文件中设置应用程序信息
Posted
技术标签:
【中文标题】在 Windows 上的 Qt 可执行文件中设置应用程序信息【英文标题】:Setting application info in a Qt executable file on Windows 【发布时间】:2011-02-16 14:26:03 【问题描述】:谁有关于从 Qt 设置应用程序信息(即右键单击 .exe->properties)的提示?
我可以将任意版本字符串添加到 Qt 资源文件 (qrc) 并显示它们。 但是大多数 Windows 安装程序会检查版本号,除了手动维护单独的 .RC 文件之外,我找不到设置这些字段的 Qt 方法
让您从自动构建中更新它的某种方式也很好!
【问题讨论】:
【参考方案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 文件中使用的语法的文档在哪里? @Jack:文档在这里:msdn.microsoft.com/en-us/library/windows/desktop/…【参考方案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/…以上是关于在 Windows 上的 Qt 可执行文件中设置应用程序信息的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Windows XP 的批处理文件中设置处理器关联?
在 Linux 上使用 Qt 为 Windows 创建可执行文件