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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как в релиз добавить информацию о файле?  (Прочитано 9089 раз)
juvf
Программист
*****
Offline Offline

Сообщений: 570


Просмотр профиля
« : Апрель 18, 2015, 15:54 »

В прикреплении пример.... винда из файла ехе вытащила версию, название, копирайт и т.д.

На самом деле не столько нужно, чтоб винда видела эту инфу, сколько чтоб видел innosetup. В борланде есть в гуях галочка "включить инфо в ехе", после этого innosetup вытаскивает инфу из ехе командами
Код:
;Переменные, читаемые из инсталируемой программы
#define CompanyName      GetStringFileInfo(AppFileNameExe, "CompanyName")
#define FileDescription  GetStringFileInfo(AppFileNameExe, "FileDescription")
#define FileVersion      GetStringFileInfo(AppFileNameExe, "FileVersion")
#define LegalCopyright   GetStringFileInfo(AppFileNameExe, "LegalCopyright")
#define ProductName      GetStringFileInfo(AppFileNameExe, "ProductName")
#define OriginalFilename GetStringFileInfo(AppFileNameExe, "OriginalFilename")
Как это сделать в Qt? Удалось прикрутить только версию файла к моему ехе. проводник в винде видет версию файла, а innosetup не может её вытащить.... тащит пустые строки. У кого есть подобный опыт.... поделитесь... как танцевать этот танец и в какой бубен стучать?
Записан
PimenS
Крякер
****
Offline Offline

Сообщений: 371


Просмотр профиля
« Ответ #1 : Апрель 18, 2015, 16:00 »

В файле проекта можно использовать макросы:

Код:
VERSION = 1.0.8

QMAKE_TARGET_COMPANY = ***
QMAKE_TARGET_DESCRIPTION = ***
QMAKE_TARGET_PRODUCT = ***
QMAKE_TARGET_COPYRIGHT = ***

Есть еще и другие, но я не ковырял.
Записан
Bepec
Гость
« Ответ #2 : Апрель 18, 2015, 16:19 »

Можно навешивать дополнительно.
А на деле, в exe зашиты все эти данные. Не знаю как для minGw, а для MCVS добавляет файл ресурсов и в него всё пишем.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #3 : Апрель 18, 2015, 16:33 »

А в гугле забанили?
Записан

ArchLinux x86_64 / Win10 64 bit
juvf
Программист
*****
Offline Offline

Сообщений: 570


Просмотр профиля
« Ответ #4 : Апрель 18, 2015, 16:40 »

В файле проекта можно использовать макросы:

Код:
VERSION = 1.0.8

QMAKE_TARGET_COMPANY = ***
QMAKE_TARGET_DESCRIPTION = ***
QMAKE_TARGET_PRODUCT = ***
QMAKE_TARGET_COPYRIGHT = ***
Эти макросы не работают, если в профайле определён свой RC_FILE. Определена иконка. Если убрать из профайла RC_FILE, то qmake сделает свой .rc с данными из макросов VERSION, QMAKE_TARGET_COMPANY  и т.д. Причем это только с версии 5.0.2 стало работать, пруфлинк

Убрал из профайла свой .rc, проводник увидел версию, а инносетап нет.

Цитировать
Не знаю как для minGw, а для MCVS добавляет файл ресурсов и в него всё пишем.
qmake тоже добавляет файл ресурсов, и в него пишет.... но тут либо иконку, либо версию файла к ехе. А как и рыпку съесть, и .....? К тому же инносетап не видет эту версию в ехе. У кого есть опыт по созданию инсталяторов qt приложений?
Записан
juvf
Программист
*****
Offline Offline

Сообщений: 570


Просмотр профиля
« Ответ #5 : Апрель 18, 2015, 16:44 »

А в гугле забанили?
Нет. Не забанили. А зачем этот форум, если гугл всё найдет? Естественно вначале гуглил.... не нашел рабочих примеров. Дайте ссылку гугла на рабочий пример решения моей проблемы?
Записан
Bepec
Гость
« Ответ #6 : Апрель 18, 2015, 16:53 »

знач редактируй прям после компиляции и впихивай свои данные) редакторов ресурсов дофига )
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #7 : Апрель 18, 2015, 16:58 »

Нужно использовать только один RC_FILE (в общем случае, т.к. MinGW шный winrc компилер не поддерживает несколько RC файлов), в котором прописать и иконку и VersionInfo. Имею ввиду - не использовать всякие там QMAKE_TARGET_XXX макросы.


Цитировать
Естественно вначале гуглил.... не нашел рабочих примеров. Дайте ссылку гугла на рабочий пример решения моей проблемы?

Да неужели?
« Последнее редактирование: Апрель 18, 2015, 17:08 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #8 : Апрель 18, 2015, 19:29 »

https://github.com/kambala-decapitator/d3-window-db-manager/blob/master/Resources/d3windowdbmanager.rc пример. дефайны задаются в .pro
Записан

Изучением 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
juvf
Программист
*****
Offline Offline

Сообщений: 570


Просмотр профиля
« Ответ #9 : Апрель 20, 2015, 12:56 »

Нужно использовать только один RC_FILE (в общем случае, т.к. MinGW шный winrc компилер не поддерживает несколько RC файлов), в котором прописать и иконку и VersionInfo. Имею ввиду - не использовать всякие там QMAKE_TARGET_XXX макросы.


Цитировать
Естественно вначале гуглил.... не нашел рабочих примеров. Дайте ссылку гугла на рабочий пример решения моей проблемы?

Спасибо за отклик... однако... вы сами пробовали сделать то, что я делаю... по своим ссылкам?
1) по вашей ссылке на иконку, нужно так 'nameID ICON filename', однако в qt приложении это делается так 'IDI_ICON1               ICON    DISCARDABLE     "filename.ico" '
2) и вторую ссылку я видел и по ней пример копипастил в проект.... не видет инносетап версию файла.
3)
Цитировать
спасибо за ссылку, но во первых где вы там видите слово "inno setup"? Там нет решения моей проблемы. Во вторых.... вы кинули голое "А в гугле забанили?".  Зачем? Холивар устроить? После я вас попросил дать ссылку ГУГЛА на решение проблемы... не ссылку на решение проблемы, а именно ссылку гугла.... что вы вводите в поиск? какие ключевые слова?  может я не те слова в поиск ввожу... можно же было как-то так сразу ответить "А в гугле забанили?" или хотябы так "Учитесь искать в гугле"


что я имею на данный момент..... такой rc файл
Код:
IDI_ICON1               ICON    DISCARDABLE     "logo.ico"

#include <windows.h>

#define VER_FILEVERSION 1,2,3,4

VS_VERSION_INFO VERSIONINFO
FILEVERSION     VER_FILEVERSION
PRODUCTVERSION  VER_FILEVERSION
FILEFLAGSMASK 0x17L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904E4"
        BEGIN
            VALUE "CompanyName",        "VER_COMPANYNAME_STR"
            VALUE "FileVersion",        "5.2.3.4"
            VALUE "ProductVersion",     "6.2.3.4"
    VALUE "InternalName",     "D3WindowDBManager"
            VALUE "LegalCopyright",   "Copyright (C) kambala 2013"
            VALUE "OriginalFilename", "D3WindowDBManager.exe"
            VALUE "ProductName",      "D3WindowDBManager"

        END
    END

    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x0, 1251
    END
END
в атаче скрин из проводника. вот что в проекте innosetup
Код:
...
#define AppFileName      "D3WindowDBManager"
#define AppFileNameExe   AppFileName + ".exe"
#define FileVersion      GetStringFileInfo(AppFileNameExe, "FileVersion")
;Название файла инсталятора
#define OutputBaseFileName "setup_"+FileVersion
...
[Setup]
OutputBaseFileName={#OutputBaseFileName}
...
на выходе получается инсталятор с именем setup_.exe. Т.е. инносетап не смог вытащить из ехе файла версию.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #10 : Апрель 20, 2015, 13:26 »

Цитировать
Спасибо за отклик... однако... вы сами пробовали сделать то, что я делаю... по своим ссылкам?

Конечно, у меня все работает.

Цитировать
но во первых где вы там видите слово "inno setup"?
а выходе получается инсталятор с именем setup_.exe. Т.е. инносетап не смог вытащить из ехе файла версию.

проблемы с "inno setup" нужно искать на форумах для "inno setup".

Записан

ArchLinux x86_64 / Win10 64 bit
juvf
Программист
*****
Offline Offline

Сообщений: 570


Просмотр профиля
« Ответ #11 : Апрель 20, 2015, 13:30 »

Конечно, у меня все работает.
а что работает? у вас инносетап вытаскивает инфу из ехе?

Цитировать
проблемы с "inno setup" нужно искать на форумах для "inno setup".
так инносетап вытаскивает инфу из других ехе. Я не знаю кто виноват... mingw, qt или inno setup. Решение проблемы ищю по всем форумам. Может тут кто-то уже сталкивался с подобным и решил эту проблему.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #12 : Апрель 20, 2015, 14:18 »

Цитировать
а что работает?

Работает добавление в ресурсы.

Цитировать
у вас инносетап вытаскивает инфу из ехе?

Я ни разу не использовал это...

Как вариант - открыть какой-нить "нормальный" EXE файл и "ненормальный" EXE файл с помощью любого редактора ресурсов (например ResEdit-win32) и сравнить секции..
Или как вариант - взять какой-то любой EXE скомпиленный MinGW (который имеет инфу в ресурсах) и попытаться через inno-setup "использовать" и посмотреть: будет он получать ресурсы или нет. Ну, и, конечно, почитать доки от inno-setup.

PS: Но это уже не относится к Qt (и не относилось ранее).
Записан

ArchLinux x86_64 / Win10 64 bit
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #13 : Апрель 20, 2015, 17:43 »

А вы пробовали другие exe засунуть в установщик? Быть может ваша копия никакие exe не ест
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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