Я пишу установщик Inno Setup, который можно установить несколько раз и устанавливать сторонние продукты. Для каждой установки требуются сторонние продукты, поэтому при удалении моего приложения я запускаю функцию проверки в записи [UninstallRun]
, чтобы узнать, есть ли еще какие-либо экземпляры моего приложения по-прежнему в системе. Если это так, то я бы не удалял сторонние продукты (только удаление последнего экземпляра моего приложения удалит эти ...).UninstallRun Проверка выполнения функции во время удаления
Проблема заключается в том, что функция проверки [UninstallRun]
выполняется и оценивается во время установки и не деинсталляции (поскольку данные деинсталляции встроены во время установки). Это означает, что если я удалю первый установленный экземпляр моего приложения, он удалит сторонние продукты (потому что время установки первого не было других экземпляров моего приложения).
Есть ли способ сказать Inno Setup выполнить функцию проверки раздела [UninstallRun]
во время и только при удалении? Если нет идей, как добиться требуемого поведения?
Я бы назвал это ошибкой, так как нет необходимости проверять функции проверки во время установки. Их записи никогда не исполняются во время установки, поэтому нет необходимости оценивать их проверки. Я думал, что смогу помочь вам, предложив условное выполнение ваших функций, если 'IsUninstaller' возвращает True. Что еще хуже, функция IsUninstaller возвращает False даже из деинсталлятора. У меня нет времени идти глубже, но я чувствую, что здесь что-то не так. (кстати, у меня есть v.5.5.4) – TLama
Кажется, что это по дизайну: http://news.jrsoftware.org/read/article.php?id=99482&group=jrsoftware.innosetup#99482 Нечетный. .. –
Uhm, поэтому все значения проверки оцениваются при создании деинсталлятора. Это очень вводит в заблуждение, и я думаю, что многие люди ожидают условного запуска чего-либо в зависимости от реальной ситуации в определенном состоянии системы при запуске деинсталлятора, а не при установке приложения (и создании деинсталлятора). В этой ситуации я за удаление параметра 'Check' из раздела' [UninstallRun] ', следовательно, это может привести к неожиданному поведению. – TLama