В компании, где я работаю, мы настраиваем непрерывную интеграцию, и в рамках этого мы хотим, чтобы ежедневный цикл сборки строил установщики и запускал их на промежуточном сервере.
Я написал установщики с использованием WiX 3.6, и они корректно работают на промежуточном сервере, когда я пытаюсь войти в систему с помощью удаленного рабочего стола и запустить их с помощью msiexec. Если я использую psexec для удаленного выполнения точно такой же командной строки msiexec с сервера сборки, процесс завершается без кода ошибки, в файле журнала нет ошибок, и все файлы установлены правильно, но программа не указана в «Установка и удаление программ».
Сравнивая файлы журналов, похоже, единственное отличие состоит в том, что при установке с сервера удаления он использует «32-битный повышенный сервер пользовательских действий», а при локальной установке - «32-битный олицетворенный сервер пользовательских действий».
Сравнивая записи реестра, локальная установка создает намного больше ключей во многих местах, но удаленная установка создает некоторые ключи, а именно:
HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Installer \ UserData \ {ID} \ Products \ {ID}
HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ {GUID}
HKU \ .DEFAULT \ Software \ Microsoft \ Installer \ Products \ {ID}
HKU \ {ID} \ Программное обеспечение \ Microsoft \ Installer \ Products \ {ID}