Windows-Server-2008-R2

Splunk UniversalForwarder 失敗並顯示“DetermineContextForAllProducts failed witht: 0x65b”

  • April 1, 2015

我正在嘗試使用 MSI 部署類型將 Splunk UniversalForwarder 作為 SCCM 應用程序部署到一小組測試伺服器,並且遇到 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.

有點 Google-fu,我在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 權限,並且 SYSTEM 具有完全控制權,這似乎反駁了這個答案,表明0x80004005. 嗯。如果我手動執行安裝會怎樣?

相同的安裝程序,相同的安裝參數(從 AppEnforce.log 中複製並粘貼),從以管理員身份執行 cmd.exe 提示符執行,並且在同一步驟中失敗並出現相同的錯誤。如果我返回並再次刪除系統資料庫項,然後從 cmd.exe 重新執行安裝程序,它就可以工作了! 大聲笑嗎?

讓我們重新總結一下:

  • 如果存在系統資料庫項,則安裝程序在DetermineContextForAllProducts安裝步驟中失敗,無論是由 SCCM 客戶端執行還是由我手動執行。
  • 如果我刪除系統資料庫項,SCCM 客戶端會嘗試執行安裝程序並在該DetermineContextForAllProducts步驟中失敗。
  • 如果我刪除了系統資料庫項,並從以管理員身份執行 cmd.exe 提示它使用相同的參數手動執行相同的安裝程序,則成功!¯\_(ツ)_/¯
  • 我在兩個非常不同的伺服器上得到了相同的結果。

有任何想法嗎?如果有幫助,我很樂意提供我的 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 錯誤而失敗。

查看那些系統資料庫項並嘗試找到導致問題的那個

引用自:https://serverfault.com/questions/677689