Проблема:
В процессе инсталяциии инсталяционный пакет 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,ничего не меняется.
Есть у кого то опыт решения этой проблемы?