Как узнать (программно), что установщик Installshield работает в фоновом режиме?

У меня есть история установщиков MSI Installscript (которые были заменены установщиками Basic MSI), и когда я их удаляю, мне нужно знать, выполняется ли удаление в фоновом режиме или нет. Я запускаю некоторый пользовательский код, который проверяет наличие файлов .iss (необходимых для автоматического удаления), и если их там нет, я вывожу сообщение о том, что файлы находятся не там, где они должны быть. Проблема в том, что когда программа удаляется из панели управления (не молча), этот код запускается и отображает сообщение. Поэтому мне нужна системная переменная, которая сообщит мне, что она работает в тихом режиме, поэтому, когда это не так, я могу подавить сообщение.

Я не могу найти ничего, что говорит мне об этом. Кто-нибудь знает, как я могу сказать программно?


person Ben_G    schedule 16.01.2021    source источник


Ответы (1)


Предполагая, что вы хотите обнаружить автоматическую установку внутри установки, ответ зависит от типа проекта:

  • Проекты InstallScript могут проверять, выполняются ли они в автоматическом режиме, сравнивая MODE системная переменная в SILENTMODE
  • Базовые MSI могут сравнивать UILevel свойство со значением 2.
  • MSI InstallScript могут проверять, что более важно для контекста (используя MsiGetProperty для получения UILevel, если это необходимо, но будьте осторожны с отложенными пользовательскими действиями; им нужно будет передать его через CustomActionData).
  • Для полноты, но вряд ли это имеет отношение к вашему вопросу, Suites может ссылаться на ISSilentInstall собственность.
person Michael Urman    schedule 12.02.2021