How to sign maintencetool.exe [Qt Installer Framework]
От: nen777w  
Дата: 25.06.21 06:22
Оценка:
Проблема:
В процессе инсталяциии инсталяционный пакет QTIF создает maintenancetool.exe в каталоге с приложением.
Проблема в том что этот файл не подписан и Windows начинает справедливо ругаться на этот факт.

Я нашел кучу тикитеов по этому поводу:
https://bugreports.qt.io/browse/QTIFW-667
https://bugreports.qt.io/browse/QTIFW-1422
https://bugreports.qt.io/projects/QTIFW/issues/QTIFW-1482?filter=allissues

И перепрбовал все что только можно (наверно), но у меня maintenancetool.exe так и остается в итоге не подписанным.

Что я делаю (на данный момент):

1) Крпирую из QTIF/bin файл installerbase.exe и кладу его в свою папку data (в которой лежат бинари приложения) как maintenancetool.exe
2) Плписываю этот data/maintenancetool.exe
3) В скрипт инсталятор добавляю обработчик
Component.prototype.onInstallationFinished = function()
{
    if (component.updateRequested() || component.installationRequested()) {
        if (installer.value("os") === "win") {
            component.installerbaseBinaryPath = "@TargetDir@/installerbase.exe";
            installer.setInstallerBaseBinary(component.installerbaseBinaryPath);        
        }
    }
}

4) Запускаю QTIFW/bin/binarycreator.exe --offline-only ... что бы создать инсталяционный пакет.
5) Подписываю пакет.

6) Устанавливаю пакет и в итоге maintenancetool.exe который генерирует QTIFW это совсем не тот installerbase.exe (переименованный в 1 в maintenancetool.exe) и конечно же он не подписан.

Что я еще делал:
В одном из тикетов написано что в QTIFW/bin/binarycreator.exe надо передавать через -t путь к data/maintenancetool.exe я пробовал так делать.
В результате инсталяционный пакет создается но sign.exe говорит что инсаляционный_пакет.exe это НЕ ВАЛИДНЫЙ бинарь и отказывается его плписывать.
На это есть тикет https://bugreports.qt.io/browse/QTIFW-1422 который все еще не закрыт.

Я также пробовал переместить код из Component.prototype.onInstallationFinished в Component.prototype.onInstallationStarted,ничего не меняется.

Есть у кого то опыт решения этой проблемы?
Отредактировано 25.06.2021 6:36 nen777w . Предыдущая версия .
Re: How to sign maintencetool.exe [Qt Installer Framework]
От: Qt-Coder  
Дата: 25.06.21 06:51
Оценка:
А если подписать прямо в QTIF/bin?
Re[2]: How to sign maintencetool.exe [Qt Installer Framework]
От: nen777w  
Дата: 25.06.21 09:37
Оценка:
Здравствуйте, Qt-Coder, Вы писали:

QC>А если подписать прямо в QTIF/bin?

Я попробую, но не думаю что поможет.

Суть в том что maintenancetool.exe генерирует инсталятор , его как такового нет в QTIF/каталоге.
Но вместо него можно использовать QTIFW/installerbase.exe я проверял.
Это по сути один и тот же файл, только с той разнице что к тому что ГЕНЕРИРУЕТ инсталятор он еще что то дописывает.

Т.е. я вроде как все делаю правильно. Беру этот QTIFW/installerbase.exe кладу к себе с переименованием в packages/com.project.root/data/maintenancetool.exe.
Потом подписываю его.
+ все этим манипуалции со сриптом.

Но инсталятор создается таким образом что ему пофигу на это и он просто пересоздает этот файл своей неподписанной версией.
Вот надо как то запретить ему это делать.
Re[3]: How to sign maintencetool.exe [Qt Installer Framework]
От: Qt-Coder  
Дата: 25.06.21 09:54
Оценка:
Такой вариант — положить подписанный в пакет, в пакете прописать замену.
Re[4]: How to sign maintencetool.exe [Qt Installer Framework
От: nen777w  
Дата: 25.06.21 11:11
Оценка:
Здравствуйте, Qt-Coder, Вы писали:

QC>Такой вариант — положить подписанный в пакет, в пакете прописать замену.

Ну так и надо делать. Вопрос как заменить, своим, подписаным, maintencetool.exe (installerbase.exe) тот неподписанный maintencetool.exe который генерирует инсталятор?
Или даже: Как запретить инсталятору создавать maintencetool.exe ?
Я вообще не понимаю нафига инсталятор генерирует этот maintencetool.exe?
installerbase.exe — может вополне нормально работать и без дозаписи в него данных.
Все данные он возьмет из [maintencetool/installerbase].dat и [maintencetool/installerbase].int файлов в каталоге с проинсталированным приложением.
Т.е. эти доп. файлы должны называться также как и тулза их использующая и все будет ок.
Отредактировано 25.06.2021 11:14 nen777w . Предыдущая версия .
Re[5]: How to sign maintencetool.exe [Qt Installer Framework
От: Qt-Coder  
Дата: 25.06.21 11:25
Оценка:
В какой момент надо чтобы был подписан maintaincetool? Ты хочешь чтобы при сборке дистрибутива это уже был подписанный exe? Я имел ввиду, запаковать его в дистр и при установке развернуть в каталог приложения, заменив там неподписанный.
Re[3]: How to sign maintencetool.exe [Qt Installer Framework]
От: SаNNy Россия  
Дата: 25.06.21 12:18
Оценка:
Здравствуйте, nen777w, Вы писали:

N>Здравствуйте, Qt-Coder, Вы писали:


QC>>А если подписать прямо в QTIF/bin?

N>Я попробую, но не думаю что поможет.

N>Суть в том что maintenancetool.exe генерирует инсталятор , его как такового нет в QTIF/каталоге.

N>Но вместо него можно использовать QTIFW/installerbase.exe я проверял.
N>Это по сути один и тот же файл, только с той разнице что к тому что ГЕНЕРИРУЕТ инсталятор он еще что то дописывает.

N>Т.е. я вроде как все делаю правильно. Беру этот QTIFW/installerbase.exe кладу к себе с переименованием в packages/com.project.root/data/maintenancetool.exe.

N>Потом подписываю его.
N>+ все этим манипуалции со сриптом.

N>Но инсталятор создается таким образом что ему пофигу на это и он просто пересоздает этот файл своей неподписанной версией.

N>Вот надо как то запретить ему это делать.

Так исходники QTIFW открыты. Можно внести любые изменения для собственного использоания.
Re: How to sign maintencetool.exe [Qt Installer Framework]
От: Михaил  
Дата: 25.06.21 12:25
Оценка:
Здравствуйте, nen777w, Вы писали:

N>Проблема:

N>В процессе инсталяциии инсталяционный пакет QTIF создает maintenancetool.exe в каталоге с приложением.

а зачем его таскать со своим приложением? Требование lgpl?
Re[2]: How to sign maintencetool.exe [Qt Installer Framework]
От: nen777w  
Дата: 25.06.21 13:30
Оценка:
N>>Проблема:
N>>В процессе инсталяциии инсталяционный пакет QTIF создает maintenancetool.exe в каталоге с приложением.
М>а зачем его таскать со своим приложением? Требование lgpl?

Это штатный менеджер установки. Для обновления или удаления.
У меня тот же самый вопрос. Как его не использовать.
Re[4]: How to sign maintencetool.exe [Qt Installer Framework]
От: nen777w  
Дата: 25.06.21 13:30
Оценка:
SNN>Так исходники QTIFW открыты. Можно внести любые изменения для собственного использоания.
Тада.. Видимо придется и тут ковырять.
Re: How to sign maintencetool.exe [Qt Installer Framework]
От: nen777w  
Дата: 26.06.21 08:55
Оценка:
Проблема решилась. Мой косяк.
Добавил обработчик забыл его приконнектить в скрипте...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.