Можно ли выполнить пользовательское действие только в режиме восстановления

Мне нужно запускать пользовательские действия только во время ремонта. Но я не нашел подходящего условия для этого. Если я указываю настраиваемое действие с условием ниже, оно запускается как в режиме Modify, так и в режиме Repair.

Installed AND Not REMOVE

Я использую InstallShield 2012 весной.

3 ответа

Решение

Проверьте свойство REINSTALL. Условное выражение для вашего пользовательского действия должно выглядеть как REINSTALL<>""

REINSTALL="" будет оцениваться как True во время фаз установки и удаления, поэтому точное условие (Установлено и НЕ УДАЛЕНО) И (REINSTALL=""), потому что (Установлено и НЕ УДАЛЕНО) имеет значение True во время операций изменения и восстановления, но во время ремонта Свойство REINSTALL будет пустым

Для дальнейшего использования проверьте эти шпаргалки:

У меня не было времени, чтобы пройти все эти условия и проверить их, но последняя таблица выглядит разумно по номинальной стоимости. Тем не мение:

я верю REMOVE Например, иногда его можно установить во время установки (и изменить) - очень сложно справиться со всеми вариантами возможностей, поскольку интерфейс командной строки MSI и конфигурация свойств очень гибки.

Шпаргалка Installshield, которую я никогда активно не использовал и не проверял. Пожалуйста, ознакомьтесь с их предложениями по ремонту - есть разные в зависимости от того, как вызывается ремонт.

Пожалуйста, не забудьте также проверить самовосстановление - просто удалите основной EXE-файл приложения и запустите самовосстановление, вызвав объявленный ярлык приложения (если есть). Прошло много лет с тех пор, как я проверил, но самовосстановление может запускать действия только между InstallInitialize и InstallFinalize.

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