当SCCM客户端为系统安装.msi时,究竟是什么呢?

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

PSEXEC -i -s cmd

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

  • “添加或删除程序”中显示“Apple应用程序支持(32位)”
  • “Apple应用程序支持(32位)”可以被卸载

MSI部署types由SCCM客户端安装

创build一个MSI部署types并使用SCCM客户端安装它将产生以下结果:

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

有什么不同?

我以为为系统安装的MSI部署types相当于从psexec -i -s cmd命令行运行msiexec 。 显然,他们是不一样的。

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

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


在kce的回答后添加:

  1. SCCM如何pipe理安装.msi而不显示在“添加或删除程序”中?

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

据我所知,SCCM客户端正在运行部署types中指定的任何安装string, 它正在NT AUTHORITY \ SYSTEM的上下文中执行它。 您可以通过从作为BUILTIN \ Administrators成员的帐户执行相同的安装string来近似但不复制安装。 根据您是否选中“在64位客户端上运行安装和卸载程序为32位进程”checkbox, MSIEXEC可以作为32位或64位进程运行。

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

嗯。 好问题。 客户端应该运行安装string,但是如果它做了一些更深入,更深的魔法,我不会感到惊讶。 在你的情况下,我能想到的唯一可能导致差异的是你正在运行安装程序的进程的一小部分。 我认为SCCM客户端几乎总是使用64位,但cmd.exe是32位的权利?

看看我的答案在这里处理软件安装问题的其他一般build议。

祝你好运。

除了@kce的这个艺术作品之外,我还要补充一些微不足道,简单的东西

  • 我平等对待所有的软件包

一般情况下,我会避免“应用程序”,除非我被迫与他们打交道,这通常是在创buildApp-V部署时。 否则,我坚持包装,他们不像你看到或将看到的头痛。

在SCCM中,我为我的.msi文件创build了一个与其他安装程序相同的包。 像kce说,它是在系统帐户下安装,但是当我创build一个包与使用它的默认msi处理程序,我有更好的控制它运行的安装string,例如msiexec /i "my.msi" /qb /v和无论默认是什么 我的应用程序基本上总是出现在添加/删除,他们会显示我手动安装。 理论上,是的,SCCM应用程序的部署types应该是幻想的,但是在实践中使用不同的东西可能会给你更好的结果。 由于这个版本的SCCM的应用程序是新的,所以可能会出现一些问题。

奖金

如果您确实想知道这是否与安装帐户相关,请使用psexec开关在系统帐户下运行该命令。