Inno Setup не перезапускает службы, если есть ожидающая перезагрузка Windows

Мы создали сценарий Inno Setup для установки и обновления службы Windows. Тот же установщик можно использовать вручную или из решения для автоматической установки / обновления.

При использовании установщика для обновления существующей установки установка правильно завершает запущенный процесс службы перед ее обновлением. Эта служба использует диспетчер перезапуска Windows для автоматического перезапуска, и Inno Setup может перезапустить его после завершения установки.

В некоторых случаях некоторые файлы, развернутые с помощью установщика, не могут быть обновлены на лету, поскольку для их завершения требуется перезагрузка Windows. Мы решили НЕ принудительно перезагружать систему и убедительно предложили пользователю как можно скорее перезагрузиться. Все работает, как ожидалось, за исключением того, что Inno Setup отменяет перезапуск службы из-за ожидающей перезагрузки Windows, даже если нет прямых зависимостей процессов, которые необходимо обновить после перезагрузки.

Из журнала установки Inno:

      Need to restart Windows, not attempting to restart applications

Хотя это может иметь логику, тот факт, что служба не перезапускается автоматически, представляет собой проблему в нашем сценарии, которая вынуждает пользователя немедленно перезагружаться, чего мы не хотим.

Это аргументы командной строки: /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /RESTARTEXITCODE=123456 /RESTARTAPPLICATIONS

Это часть журнала установки:

Флаг командной строки / RESTARTAPPLICATIONS не влияет на это поведение, поскольку приложение-служба перезапускается правильно независимо от наличия этого флага, когда нет ожидающей перезагрузки.

Решением может быть вызов внешнего сценария в разделе «Выполнить» или использование кода Pascal для перезапуска службы, но мы бы хотели избежать этого, если это возможно.

Мы что-то упускаем? Есть ли способ, чтобы перезапуск службы всегда проходил успешно, даже если есть ожидающая перезагрузка?

0 ответов

Другие вопросы по тегам