Russian Qt Forum
Ноябрь 23, 2024, 13:38 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qt MinGW: Добавление информации в бинарный файл (иконка, версия и т.д.)  (Прочитано 13306 раз)
lesav
Частый гость
***
Offline Offline

Сообщений: 235


qnx.org.ru


Просмотр профиля WWW
« : Август 10, 2011, 11:02 »

Иногда необходимо добавить информацию в приложение: версия, наименование програмного продукта, копирайт и т.д.
Это просто сделать добавив файл описания .rc

Проблемы возникают если в программном комплексе несколько исполняемых файлов. Приходиться "слонятся" по директориям проекта в поисках .rc файлов и монотонное редактирование.

Для решения этой проблеммы необходимо создать файлы .rc для каждого приложения примерно такого содержания

Файл rc_info.rc кодировка cp1251
Код:
#include <winuser.h>
#include <winnt.h>

#define stringify(v1) #v1
#define quote(v1)  stringify(v1)

#define NVER  NVER1.NVER2.NVER3.NVER4

LANGUAGE 25,1

STRINGTABLE LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
BEGIN
        1 "Программный комплекс РТК-07 ""ТАЙФУН""\0"
END
IDI_ICON1       ICON    DISCARDABLE     "img/srv_ico.ico"
IDR_APP_ICON    ICON                    "img/srv_ico.ico"

1 VERSIONINFO
        FILEVERSION    NVER1,NVER2,NVER3,NVER4
        PRODUCTVERSION NVER1,NVER2,NVER3,NVER4
        FILEOS         0x00000000
        FILETYPE       0x00000001
BEGIN
        BLOCK "StringFileInfo"
        BEGIN
          BLOCK "040904e4"
          BEGIN
          VALUE "Comments",           "Супер программа для ..."
          VALUE "CompanyName",        "ОАО ""ПУПКИН"""
          VALUE "FileDescription",    "Установка контроля и т.д"
          VALUE "FileVersion",        quote(NVER)
          VALUE "InternalName",       "РТК-07 ПРО"
          VALUE "LegalCopyright",     "ОАО ""ПУПКИН"""
          VALUE "LegalTrademarks",    "РТК-07 ПРО ""ТАЙФУН"""
          VALUE "OriginalFilename",   quote(TARGET) ".exe"
          VALUE "ProductName",        "Установка контроля и т.д"
          VALUE "ProductVersion",     quote(NVER)
          VALUE "PrivateBuild",       "Ревизия SVN " quote(SVN_REV)
          VALUE "SpecialBuild",       "Программный комплекс РТК-07 ПРО ""ТАЙФУН"" Программа опроса АЦП и датчиков пристутствия"
          VALUE "Builder",            "Lesav"
          END
        END
        BLOCK "VarFileInfo"
        BEGIN
            VALUE "Translation",        0x0419, 0x04E3
        END
END

Затем сгенерить файл rtk_version.pri
Файл rtk_version.pri
Код:
DEFINES     += SVN_REV=356
DEFINES     += NVER1=0
DEFINES     += NVER2=1
DEFINES     += NVER3=0
DEFINES     += NVER4=112
DEFINES     += TARGET=$$TARGET

И в каждый файл .pro после обявления TARGET добавить строчки
Код:
TARGET = rzs

include( $$_PRO_FILE_PWD_/../rtk_version.pri )

CONFIG(debug, debug|release):{
  TARGET = $$sprintf('%1_d', $$TARGET)
}else:{
  TARGET = $$sprintf('%1_r', $$TARGET)
}

win32 {
  RC_FILE     += rc_info.rc
  OTHER_FILES += rc_info.rc
}


Результат см в картинке
Записан

Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Август 10, 2011, 11:09 »

А для CMake?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #2 : Август 10, 2011, 12:19 »

А что есть IDR_APP_ICON? В смысле понятно из названия, что иконка приложения, но чем она отличается от IDI_ICON1? Где какая используется?
Можно просто ткнуть, где почитать.  Подмигивающий
Записан
lesav
Частый гость
***
Offline Offline

Сообщений: 235


qnx.org.ru


Просмотр профиля WWW
« Ответ #3 : Август 10, 2011, 14:05 »

А для CMake?
Я c CMake не работал.

А что есть IDR_APP_ICON? ... где почитать?

Сам бы с удовольствием почитал. Долго искал в ин-те информацию по структуре файла .rc  Информации такой не нашел.

Может ResEd Вам поможет ?

Записан

kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #4 : Август 10, 2011, 14:46 »

мне вот этот гайд помог, но там IDR_APP_ICON не упоминается
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
lesav
Частый гость
***
Offline Offline

Сообщений: 235


qnx.org.ru


Просмотр профиля WWW
« Ответ #5 : Август 10, 2011, 15:22 »

мне вот этот гайд помог

Гдеж Вы раньше были!  Веселый
Я на эту конструкцию пол дня убил
Код
C
#define STRINGIZE2(s) #s
#define STRINGIZE(s) STRINGIZE2(s)

но там IDR_APP_ICON не упоминается

А я стартовал из другой точки, там IDR_APP_ICON упоминается. И я решил его оставить.

В MSDN описания IDR_APP_ICON нет.
Записан

lesav
Частый гость
***
Offline Offline

Сообщений: 235


qnx.org.ru


Просмотр профиля WWW
« Ответ #6 : Август 10, 2011, 15:53 »

Разобрался.

001     ICON    DISCARDABLE     "img/srv_ico1.ico"
002     ICON    DISCARDABLE     "img/srv_ico2.ico"
003     ICON    DISCARDABLE     "img/srv_ico3.ico"

Первое поле добавляет идентификатор ресурса, по которому этот ресурс можно заюзать из программы

Примерно также реализована %SystemRoot%\system32\SHELL32.dll  (в ней 237 иконок)

Если Вы используете несколько иконок в .rc файле, появиться возможность сменить картинку в ярлыке программы.

А вот результат расследования! ))))

IDR_APP_ICON  всплыло из проекта http://trac.emma-soft.com/halite.
там стояло в Halite.rc
#define IDR_APP_ICON                    128

Автор топика на ВинГраде просто забыл убрать это объявление
Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.346 секунд. Запросов: 22.