Я пытаюсь развернуть Splunk UniversalForwarder как приложение SCCM с использованием типа развертывания MSI на небольшой группе тестовых серверов и сталкиваюсь с необычно запутанной проблемой с установщиком MSI.
Сам тип развертывания довольно прост. Я загрузил файл MSI (splunkforwarder-6.2.1-245427-x64-release.msi) на сервер сайта SCCM и разрешил автоматическое заполнение метода обнаружения из MSI. Единственное, что я сделал, это изменил строку установки, включив в нее следующие аргументы:
msiexec.exe /lv splunkinstall.log /i "splunkforwarder-6.2.1-245427-x64-release.msi" AGREETOLICENSE=YES DEPLOYMENT_SERVER="splunkd.security.contoso.com" /quiet /norestart /qn
Благодаря включению /lv
Я могу перейти в папку C: \ Windows \ CCMcache и просмотреть журнал установки:
GetPreviousSettings: Error: DetermineContextForAllProducts failed witht: 0x65b.
GetPreviousSettings: Error 0x80004005: Failed to GetInstalledSplunkSettings.
GetPreviousSettings: Info: Leave GetPreviousSettings: 0x80004005.
CustomAction GetPreviousSettings returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)
Action ended 14:20:23: GetPreviousSettings. Return value 3.
Немного гугл-фу, и я нахожу это сообщение на Поддержка сообщества Splunk но я не очень уверен в правильности ответов; однако сбойный шаг установщика является GetInstalledSplunkSettings
так что, может быть, мне стоит порыться в реестре, чтобы увидеть, не вызывают ли устаревшие ключи продукта или установщика ошибочные попытки установщика удалить несуществующие экземпляры UniversalForwarder.
С помощью ProcMon и ручного поиска в реестре мне удалось найти следующие ключи, которые кажутся связанными.
HKCR:\Installer\Products\B0271F4D65C5D084FA81634DC56AD4A
HKCR:\Installer\Features\B0271F4D65C5D084FA81634DC56AD4AE
HKCR:\Installer\UpgradeCodes\13631B46466632F4FA2E89CF8E9602DB
HKLM:\SOFTWARE\Classes\Installer\Features\B0271F4D65C5D084FA81634DC56AD4AE
HKLM:\SOFTWARE\Classes\Installer\UpgradeCode\13631B46466632F4FA2E89CF8E9602DB
События ProcMon во время установки:
10:17:31.8751924 AM MsiExec.exe 7436 RegQueryKey HKLM SUCCESS Query: HandleTags, HandleTags: 0x0
10:17:31.8752103 AM MsiExec.exe 7436 RegOpenKey HKLM\Software\Microsoft\Windows\CurrentVersion\Installer\Managed\S-1-5-18\Installer\Products\B0271F4D65C5D084FA81634DC56AD4AE NAME NOT FOUND Desired Access: Read
10:17:31.8752409 AM MsiExec.exe 7436 RegQueryKey HKU SUCCESS Query: HandleTags, HandleTags: 0x0
10:17:31.8752584 AM MsiExec.exe 7436 RegOpenKey HKU\S-1-5-18\Software\Microsoft\Installer\Products\B0271F4D65C5D084FA81634DC56AD4AE REPARSE Desired Access: Read
10:17:31.8752831 AM MsiExec.exe 7436 RegOpenKey HKU\.DEFAULT\Software\Microsoft\Installer\Products\B0271F4D65C5D084FA81634DC56AD4AE NAME NOT FOUND Desired Access: Read
10:17:31.8753062 AM MsiExec.exe 7436 RegQueryKey HKLM SUCCESS Query: HandleTags, HandleTags: 0x0
10:17:31.8753230 AM MsiExec.exe 7436 RegOpenKey HKCR\Installer\Products\B0271F4D65C5D084FA81634DC56AD4AE SUCCESS Desired Access: Read
10:17:31.8753486 AM MsiExec.exe 7436 RegQueryValue HKCR\Installer\Products\B0271F4D65C5D084FA81634DC56AD4AE\ProductName SUCCESS Type: REG_SZ, Length: 38, Data: UniversalForwarder
10:17:31.8753716 AM MsiExec.exe 7436 RegCloseKey HKCR\Installer\Products\B0271F4D65C5D084FA81634DC56AD4AE SUCCESS
10:34:31.5741168 AM MsiExec.exe 7560 RegEnumKey HKCR\Installer\Products SUCCESS Index: 11, Name: B0271F4D65C5D084FA81634DC56AD4AE
10:34:31.5744153 AM MsiExec.exe 7560 RegOpenKey HKCR\Installer\Products\B0271F4D65C5D084FA81634DC56AD4AE SUCCESS Desired Access: Read
10:34:31.5744407 AM MsiExec.exe 7560 RegQueryValue HKCR\Installer\Products\B0271F4D65C5D084FA81634DC56AD4AE\ProductName SUCCESS Type: REG_SZ, Length: 38, Data: UniversalForwarder
10:34:31.5744637 AM MsiExec.exe 7560 RegCloseKey HKCR\Installer\Products\B0271F4D65C5D084FA81634DC56AD4AE SUCCESS
Теперь все становится интересно! Я удаляю ключи, ожидая успеха, запускаю цикл развертывания и оценки клиентских приложений и получаю такие же неутешительные результаты. Я дважды проверил разрешения NTFS для этих ключей, и у СИСТЕМЫ есть полный доступ, что, кажется, опровергает этот ответ указывая, что 0x80004005
. Хммммм. Что, если я запустил установку вручную?
Тот же установщик, те же аргументы установки (копирование и вставка прямо из AppEnforce.log), запускается из командной строки «Запуск от имени администратора» cmd.exe, и на том же этапе происходит сбой с той же ошибкой. Если я вернусь и снова удалю ключи реестра и повторно запущу установщик из cmd.exe оно работает! LOL WUT?
Давайте перепишем:
DetermineContextForAllProducts
шаг установки, выполняемый как клиентом SCCM, так и мной вручную.DetermineContextForAllProducts
шаг.¯\_(ツ)_/¯
Любые идеи? Я счастлив предоставить полную копию моих событий ProcMon или любую другую информацию, если это будет полезно.
Только что получил ответ от службы поддержки. Это известная проблема в 6.2.2, и исправление уже готовится к выпуску в следующей версии. Я не могу обещать вам номер версии, но вы можете посмотреть примечания к выпуску для номера дефекта SPL-95121.
Это случилось и со мной, когда я пытался установить Splunk 6.2.2, бросая командную строку Windows.
После некоторых исследований с ProcMon я обнаружил, что проблема в том, что для Splunk найдена другая установка.
Он выполняет поиск в следующих разделах реестра, содержащих код продукта:
HKU\S-1-5-18\Software\Microsoft\Installer\Products
HKCR\Installer\Products
HKLM\Software\Microsoft\Windows\CurrentVersion\Installer\Managed\S-1-5-18\Installer\Products
HKU\.DEFAULT\Software\Microsoft\Installer\Products
По какой-то причине он не работает с указанной вами ошибкой, а не с ошибкой MSI, как ожидалось.
Просмотрите эти ключи реестра и попытайтесь найти тот, который вызывает проблемы.