MSI 软件包的静默安装

Posted

技术标签:

【中文标题】MSI 软件包的静默安装【英文标题】:Silent installation of a MSI package 【发布时间】:2012-01-23 12:20:54 【问题描述】:

我有一个 MSI 包,如果该包尚未安装,我需要安装它。我也需要静默安装。包提示用户:

安装位置(C:\Program Files\Foobar) 安装类型:最小和完整(最小)

我需要使用命令行参数或其他方法覆盖这两个参数。那么我该如何解决这两个问题。我将使用 VBScript 编写脚本。

【问题讨论】:

【参考方案1】:

静默安装 MSI 的正确方法是通过msiexec.exe command line,如下所示:

msiexec.exe /i c:\setup.msi /QN /L*V "C:\Temp\msilog.log"

快速解释:

 /L*V "C:\Temp\msilog.log"= verbose logging
 /QN = run completely silently
 /i = run install sequence 

这里有一个更全面的答案:Batch script to install MSI。此答案提供了有关 msiexec.exe 命令行选项 的详细信息以及如何查找可以在安装时在命令行上设置的“公共属性” 的说明。对于每个 MSI,这些属性通常是不同的。

【讨论】:

【参考方案2】:

您应该能够将/quiet/qn 选项与msiexec 一起使用来执行静默安装。

MSI 包导出公共属性,您可以在msiexec 参数末尾使用PROPERTY=value 语法进行设置。

例如,这个命令安装一个没有 UI 和重启的包,带有一个日志和两个属性:

msiexec /i c:\path\to\package.msi /quiet /qn /norestart /log c:\path\to\install.log PROPERTY1=value1 PROPERTY2=value2

您可以阅读msiexec 的选项,只需在 Start -> Run 中不带任何选项运行即可。

【讨论】:

有没有办法找到可接受的参数列表(在您的示例中为PROPERTY1PROPERTY2)? 这里是预定义的属性列表:msdn.microsoft.com/en-us/library/windows/desktop/… 每个安装创作工具的安装文件夹属性都不同。您使用什么来创建 MSI? @Cosmin:MSI 包含支付系统的运行时 DLL(不是我创建的)。我正在查看一个名为 Ocra 的工具来剖析 MSI,它给了我一个关于名为“INSTALLLOCATION”的变量的提示。我正在检查。 注意:msiexec 似乎对指定 MSI 包的完整文件路径非常挑剔。不要尝试任何.\mypackage.msi 业务。我花了一点时间才弄明白。 MS产品的名字其实是Orca,不是ocra。拼写错误可能很难用谷歌搜索。你可能会得到很多克里奥尔食谱......但不是 MSI 建设者。 msdn.microsoft.com/en-us/library/aa370557(v=vs.85).aspx

以上是关于MSI 软件包的静默安装的主要内容,如果未能解决你的问题,请参考以下文章

Wix静默安装MSI我们可以停止创建目录吗

如何使用 WiX 和 MSI 进行静默安装和卸载?

jdk silent install - JDK的静默安装

如何将参数从exe文件传递到msi?

怎么使用软件静默安装参数

如何在 Windows 上静默卸载 Python 2.7?