У меня есть MSI, созданный WIX, который можно запускать локально от имени администратора без ошибок. Но при развертывании через SCCM в качестве развертывания приложения, импортированного из MSI, отображается в центре программного обеспечения как сбойный код. 0x87D00324
. В любом случае фактическая установка завершается успешно (файлы и записи реестра создаются должным образом, а приложение загружается).
Ошибка SCCM предполагает, что продукт не определяется после установки. При установке вручную с использованием той же командной строки, что и SCCM, настроен для использования (msiexec /i [msi goes here] /qn
), Центр программного обеспечения показывает приложение как установленное, указывая на правильность правил обнаружения - обнаружение настроено на поиск установленного кода продукта. AppEnforce.log
Следы предполагают, что происходит следующее:
MSI настроен для установки для всех пользователей (ALLUSERS=1
как свойство MSI, а не в командной строке) и требует повышения прав для запуска. Задание SCCM настроено как «Установить для системы» и «Только когда ни один пользователь не вошел в систему» и нацелен на определенные машины, а не на пользователей.
При включенном ведении журнала MSI на уровне машины есть некоторые различия в выводе журнала, которые, как я полагаю, могут способствовать:
PROPERTY CHANGE: Deleting ALLUSERS property. Its current value is '1'
хотя неясно, что вызывает это msiexec
- как «Добавление АЛЛЮЗЕРОВ ...», затем «Удаление АЛЛЮЗЕРОВ ...» несколькими строками позже.ProductPublish
запись шага / журнала имеет Assignment
значение 0 при установке через SCCM (эквивалентно Per User, согласно документации), но 1 при установке вручную (эквивалентно Per Machine)ADVERTISE
действиеmsiexec
вообще, но это, возможно, оставшаяся часть ADVERTISE
запись действия в другой файл по какой-то причинеINSTALL
)После установки, Get-WmiObject -Namespace root\ccm\CIModels -Class CCM_MSIProduct
имеет разные результаты для двух методов установки:
Оба метода показывают приложение как установленное при запросе через wmic product get
.
Клиент: Windows 10 Enterprise, клиент SCCM 5.0.0.8577.1115
Сервер: SCCM 1710 (5.0.0.8577.1115)
Обновление от 12 апреля 2018 г., дополнительная информация:
pstools
для запуска MSI как СИСТЕМЫ - если это сделано один раз, удаление MSI вручную, а затем переустановка через SCCM работает и обнаруживает правильно (это, очевидно, бессмысленно, но интересный результат)Using cached product context: User assigned for product: 6176BC215761514458869E9B9ABB08BC
HKLM\Software\Classes\Installer\Products\[[Product Code]]\AdvertiseFlags
, который 0x180
в неисправном состоянии и 0x184
в проходящем состоянииЧто может вызвать разницу в поведении задания SCCM и ручной установки? Что может привести к запуску задания SCCM в контексте пользователя, даже если оно выглядит как СИСТЕМА и настроено на установку для системы?
Как вы упомянули, он пытается рекламировать MSI, а не устанавливать, что странно. Возможно, вам придется пересмотреть сценарий или прочитать его в orca и посмотреть.
Вы случайно не проверяли, что код продукта, который определяется при обнаружении, также появляется в реестре.
32-разрядная версия: HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ Product code
или
64-разрядная версия: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ Product code