如何使用SCCM服务器使用参数推送MSI

时间:2017-12-11 13:42:16

标签: windows-installer msiexec sccm

我想使用SCCM服务器使用参数推送MSI安装程序。即

msiexec.exe /i "setup.msi" INSTALLFOLDER="SpecifiedInstallationLocation" CONFIGFILE="FileName"

我可以使用我定义的参数名称,还是必须在命令行中使用特定的参数名称? 是否有任何特定格式传递参数? 我可以将参数传递给MSI安装程序吗?

如果我在批处理文件中使用相同的命令,那么它将正常工作。

3 个答案:

答案 0 :(得分:1)

您可以在msiexec.exe命令行上设置两种常规类型的属性:

  1. 此处列出的公共属性,public含义大写。 https://msdn.microsoft.com/en-us/library/windows/desktop/aa370905(v=vs.85).aspx
  2. 实际上并没有那么多可以有用的设置。

    1. 安装在设计时接受的公共属性。例如,如果安装程序具有接受文本框值属性名称SERVERTHING的UI,则安装应设计为在静默安装中在命令行上接受SERVERTHING。根据所使用的目录名称,其他常用选项是INSTALLFOLDER或TARGETDIR来设置默认的主应用程序文件夹。因此,如果该安装被设计为期望在命令行上设置CONFIGFILE它应该工作,但它与运行程序并给它一堆参数相同:如果程序没有编码来处理它们那么它们有没有效果。

答案 1 :(得分:0)

一般而言,有关SCCM或企业部署工具的问题可以在StackExchange系统管理员站点 serverfault.com 上得到更好的解答。部署是发展的关键部分。

但是,请尽量在将来尽可能明确和具体地提出问题,并向serverfault.com提供此类主题。

除了Phil的建议:当通过SCCM推出软件包时,您不仅限于在命令行上设置属性,如您所示,您还可以使用转换在原始MSI文件中配置您想要的任何内容。转换只是在安装时应用于原始MSI的数据库片段(更改集)。

设置命令行参数(大写PUBLIC属性)是配置MSI文件安装的“轻量级”方式。您只能设置由MSI文件本身公开和定义的属性(您不能“发明”自己的参数)。 转换是配置MSI软件包的“重量级”方式 - 您基本上可以在整个软件包中更改所需内容(通常用于公司部署)。

有关设置属性和在此处使用转换的更长说明:How to make better use of MSI files。也许快速脱脂,可能会有所帮助。我认为它至少比上面的描述更好。

为每个MSI查找可配置的PUBLIC属性的过程通常涉及打开MSI并检查Property table大多数时候该属性将在那里列出,但它也会发生仅在GUI对话框中定义属性(表示设计不佳的MSI)。您可以使用MSI文件查看器(例如Orcaor another, third party tool)检查所有这些内容。供应商的网页还可能包含有关如何在企业环境中静默部署其MSI的说明。拍摄他们的电子邮件并询问他们的信息往往是一个好主意。可能有您不知道的配置选项。我过去常常为PDF格式提供一页“大规模部署”指南。

特定的路障是一些MSI文件设计糟糕,在无声模式下运行时无法正常工作(当跳过整个GUI时 - 这就是SCCM所做的事情)。解决MSI文件中的这些设计错误可能会让人头疼。这是导致您遇到问题的原因并非不可能。您可以在此处找到有关此问题的一些信息:Uninstall from Control Panel is different from Remove from .msi

总结如下:

  • 您可以在Property table中的MSI中找到可配置的PUBLIC属性,有时也可以在设置GUI对话框中找到(由GUI输入或更改设置的属性)。
  • 只能在msiexec.exe命令行中设置大写PUBLIC PROPERTIES。
  • 为了进一步复杂化,有一个特殊属性,它定义了允许在安全环境中传递给延迟(静默)安装模式的公共属性列表(具有提升权限的托管安装 - AD设置):{{3} }。根据经验,使用转换将您在命令行中设置的任何属性添加到此安全属性列表中。如果您还没有看到安装问题(并且您的网络是托管的 - 在安装期间具有提升权限的域名),则尤其如此。
  • 您无法自己定义新参数并在命令行上进行设置,但如果您知道如何,则可以使用转换更改原始MSI中的任何内容。通常,这需要专业的MSI知识才能成功完成(应用程序重新打包者 / 设置开发人员)。
  • 联系应用程序/设置供应商以获取有关静默部署的信息总是一个好主意。他们可能有一个单页文档可以解决您的所有问题。
  • 某些MSI文件存在设计缺陷,导致无提示运行时出现错误安装。通常,这涉及仅在设置GUI序列中执行安装任务的设置(在静默运行设置时会跳过此设置 - 这是一个非常严重的MSI设计错误,但是很常见)。

冗长而且有点凌乱,但我希望这个建议和Phil的建议能帮助你实现你想要的目标。

答案 2 :(得分:0)

如果使用MST而不是参数,会更好。但如果你不能做到这一点,那么SCCM完全支持公共财产。只需把整个命令放在“安装程序”里面你已经有了部分msiexec命令,默认SCCM会为相当安装添加“/ q”。如果您的属性值有空格,请注意引用焦点。