У меня есть MSI на основе WiX, который устанавливает службу и некоторые ярлыки (и множество других файлов, которые этого не делают).
Ярлык создается, как описано в документах WiX, с ключом реестра в HKCU. как ключевой файл. Это установка для всех пользователей, но для того, чтобы обойти ICE38, этот раздел реестра должен принадлежать текущему пользователю.
Когда служба запускается (она работает под учетной записью SYSTEM), она замечает, что этот раздел реестра недействителен (по крайней мере, для этого пользователя), и снова запускает установку для «восстановления».
В журнале событий я получаю события MsiInstaller 1001 и 1004, показывающие, что «Ресурс 'HKEY_CURRENT_USER \ SOFTWARE \ MyInstaller \ Foo' не существует». Это неудивительно, поскольку у пользователя SYSTEM не было бы этого ключа.
Я включил общесистемное ведение журнала MSI, и автоматическое восстановление создало свой файл журнала в папке C: \ Windows \ Temp, а не в папке TEMP конкретного пользователя, что, похоже, подразумевает, что текущий пользователь был SYSTEM (плюс файл журнала показывает "Calling процесс "быть мне на службе").
Могу ли я что-нибудь сделать, чтобы отключить функцию автоматического восстановления? Я что-то делаю не так или нарушаю какое-то правило MSI? Есть подсказки, где искать дальше?