SCCM 客户端在为系统安装 .msi 时究竟在做什么?

alx*_*x9r 7 windows-installer msi sccm sccm-2012-r2

我一直在使用特定的 .msi ( AppleApplicationSupport.msi)。我已经安装了两种不同的方式,我认为这两种方式是等效的。然而,结果不同如下。

PSEXEC -i -s cmd

使用psexec -i -s cmd命令提示符安装并运行msiexec /i AppleApplicationSupport.msi会产生我想要的结果:

  • “Apple 应用程序支持(32 位)”出现在“添加或删除程序”中
  • 可以卸载“Apple Application Support (32-bit)”

SCCM 客户端安装的 MSI 部署类型

创建 MSI 部署类型并使用 SCCM 客户端安装它会产生以下结果:

  • “添加或删除程序”中没有显示任何内容
  • SCCM 未检测到它已安装
  • 可以使用 找到“Apple 应用程序支持(32 位)”应用程序gwmi -Class Win32_Product,但是,运行$app.Uninstall()不会卸载它。

有什么不同?

我认为,安装了一个系统的MSI部署类型等同于运行msiexec从一个psexec -i -s cmd命令行。显然,它们并不相同。

  1. SCCM 客户端在为系统安装 MSI 技术部署类型时究竟在做什么?我可以在没有 SCCM 参与的情况下复制该操作吗?

  2. SCCM 客户端执行脚本安装程序部署类型的安装程序真的等同于调用msiexecfrompsexec -i -s cmd吗?换句话说,对于脚本安装程序部署类型,我应该期待msiexecSCCM 客户端msiexec运行和从 运行之间的奇偶校验psexec -i -s cmd吗?


在 kce 的回答之后添加:

  1. SCCM 如何安装 .msi 而不会出现在“添加或删除程序”中?

小智 4

  1. 当 SCCM 客户端为系统安装 MSI 技术部署类型时,它到底在做什么?我可以在没有 SCCM 参与的情况下复制该操作吗?

据我所知,SCCM 客户端正在运行部署类型中指定的任何安装字符串,它是在 NT AUTHORITY\SYSTEM 的上下文中执行的。您可以通过从属于 BUILTIN\Administrators 成员的帐户执行相同的安装字符串来近似但不能重复安装。MSIEXEC可以作为 32 位或 64 位进程运行,具体取决于您是否选中“在 64 位客户端上作为 32 位进程运行安装和卸载程序”框。


  1. SCCM 客户端执行脚本安装程序部署类型的安装程序是否真的相当于从 psexec -i -s cmd 调用 msiexec?换句话说,对于脚本安装程序部署类型,我是否应该期望 SCCM 客户端运行的 msiexec 与 psexec -i -s cmd 运行的 msiexec 之间存在奇偶校验?

嗯。好问题。客户端应该只运行安装字符串,但如果它做了一些更深层次、更黑暗的魔法,我也不会感到非常惊讶。在您的情况下,我能想到的唯一可能导致差异的事情是您运行安装程序的进程的位数。我认为 SCCM 客户端几乎总是使用 64 位,但 cmd.exe 是 32 位,对吗?

请查看我的回答,了解处理软件安装问题的其他一般建议。

祝你好运。