Можно ли выполнить пользовательское действие только в режиме восстановления
Мне нужно запускать пользовательские действия только во время ремонта. Но я не нашел подходящего условия для этого. Если я указываю настраиваемое действие с условием ниже, оно запускается как в режиме Modify, так и в режиме Repair.
Installed AND Not REMOVE
Я использую InstallShield 2012 весной.
3 ответа
Проверьте свойство REINSTALL. Условное выражение для вашего пользовательского действия должно выглядеть как REINSTALL<>""
REINSTALL="" будет оцениваться как True во время фаз установки и удаления, поэтому точное условие (Установлено и НЕ УДАЛЕНО) И (REINSTALL=""), потому что (Установлено и НЕ УДАЛЕНО) имеет значение True во время операций изменения и восстановления, но во время ремонта Свойство REINSTALL будет пустым
Для дальнейшего использования проверьте эти шпаргалки:
- Установите щиток состояния шпаргалки.
- Как добавить пользовательское действие WiX, которое происходит только при удалении (через MSI)?
У меня не было времени, чтобы пройти все эти условия и проверить их, но последняя таблица выглядит разумно по номинальной стоимости. Тем не мение:
я верю REMOVE
Например, иногда его можно установить во время установки (и изменить) - очень сложно справиться со всеми вариантами возможностей, поскольку интерфейс командной строки MSI и конфигурация свойств очень гибки.
Шпаргалка Installshield, которую я никогда активно не использовал и не проверял. Пожалуйста, ознакомьтесь с их предложениями по ремонту - есть разные в зависимости от того, как вызывается ремонт.
Пожалуйста, не забудьте также проверить самовосстановление - просто удалите основной EXE-файл приложения и запустите самовосстановление, вызвав объявленный ярлык приложения (если есть). Прошло много лет с тех пор, как я проверил, но самовосстановление может запускать действия только между InstallInitialize и InstallFinalize.