Иконка приложения, манифест и version info в qmake-проекте :: Cетевой уголок Majestio

Иконка приложения, манифест и version info в qmake-проекте


Пробуем реализовать задуманное в проекте "Проект без 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.

#C
Рейтинг: 0/5 - 0 голосов