Пробуем реализовать задуманное в проекте "Проект без Qt на Си без плюсов". Цель - поместить в исполняемый файл иконку программы, манифест и данные version info.
Первым делом составляем файл манифеста, пусть это будет MyApp.exe.manifest :
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32" name="Microsoft.Windows.EasyKeys" version="1.0.0.0" processorArchitecture="x86" />
<description>Приложение для полезных действий в редактировании текста</description>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="*"/>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
При создании иконки обязательно "встроить" изображения размером 16x16 и 32x32. Но я, пользуясь отличным редактором "Junior Icon Editor", использовал изображения всех размеров: 16x16, 24x24, 32x32, 48x48, 64x64. Пусть имя файла иконки приложения будет MyApp.ico.
MyApp.rc - впоследствии он будет подключен к qmake-проекту (кодировка UTF-8).
#include "winver.h"
// Иконка приложения, всегда выбирается первой, если их несколько
101 ICON "MyApp.ico"
// Манифест
1 24 "MyApp.exe.manifest"
// Определение бинарных ресурсов для битмапов
201 BITMAP "Bitmap1.bmp"
202 BITMAP "Bitmap2.bmp"
203 BITMAP "Bitmap3.bmp"
// Version INFO
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,0
PRODUCTVERSION 1,0,0,0
{
BLOCK "StringFileInfo"
{
BLOCK "041904e3"
{
VALUE "CompanyName", "MyCompany Lab.\0"
VALUE "FileDescription", "MyApp - helper for all occasions\0"
VALUE "FileVersion", "1.0.0.0\0"
VALUE "LegalCopyright", "2023 © MyCompany Lab. All Rights Reserved\0"
VALUE "OriginalFilename", "MyApp.exe\0"
VALUE "ProductName", "MyApp\0"
VALUE "ProductVersion", "1.0.0.0\0"
}
}
BLOCK "VarFileInfo"
{
VALUE "Translation", 0x419, 1251
}
}
Файл проекта MуApp.pro :
TEMPLATE = app
CONFIG -= console
CONFIG -= qt
LIBS += -lgdi32 -lcomctl32 -lUser32
HEADERS += MyApp.h
SOURCES += MyApp.c
RC_FILE += MyApp.rc
DISTFILES += MyApp.rc
# обязательная строчка, иначе кириллица в VERSIONINO корректно отображаться не будет
QMAKE_RC = $${CROSS_COMPILE}windres --codepage=65001
Вот теперь можно производить сборку штатными командами из QtCreator.