Повторно кэшированный MSI по-прежнему работает старое настраиваемое действие
Я внес изменение в пользовательское действие в своем MSI-файле, чтобы не пытаться остановить службу Windows, если служба остановлена или ожидающая остановки. Однако после повторного кэширования msi с помощью msiexec /fv mymsi.msi при запуске основного обновления до следующей версии (в которой также есть исправленное настраиваемое действие, прекращающее работу службы), подробное ведение журнала показывает, что старый код настраиваемого действия все еще выполняется запустить, хотя кэшированный MSI был обновлен. Я даже провел двоичное сравнение кэшированных MSI с тем, которое использовалось при повторном кэшировании.
Что я тут не так делаю.
2 ответа
Если старое настраиваемое действие все еще выполняется, это означает одно из двух:
Новая логика MSI неверна и все еще выполняет настраиваемое действие.
Перезапись / переустановка не сработала.
Для повторного кэширования / переустановки убедитесь, что ваш MSI в основном идентичен (тот же ProductCode/Upgradecode и т. Д.) Старому MSI, за исключением обновленного настраиваемого действия. Затем сделайте:
msiexec /fv new.msi /l*v log.txt
Это перезапишет старый MSI и выполнит восстановление с использованием нового MSI (и даст вам файл журнала на случай, если что-то пойдет не так).
В моем случае это была кэшированная копия моего MSI в%windir%\Installer и соответствующие ключи в системном реестре (они были найдены по GUID в HKLM и HKCR).