我正尝试使用 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 搜索找到了这个帖子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 事件的完整副本或任何其他信息。
答案1
刚刚收到支持人员的回复。这是 6.2.2 中的一个已知问题,修复已在计划中,将在即将发布的版本中发布。我无法向您保证版本号,但您可以查看缺陷编号 SPL-95121 的发布说明。
答案2
当我尝试通过 Windows 命令行安装 Splunk 6.2.2 时也发生了这种情况。
在对 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 错误。
检查这些注册表项并尝试找到导致问题的项