如何自动执行MSI安装?


11

我有大约20个需要按特定顺序运行的应用程序。我想编写脚本,以便可以远程执行。

每个应用程序都有一个Setup.exe和一个MSI。

我只是希望有一个简单的脚本来调用带有答案文件的MSI,但是距我这样做已经有好几年了。但是,我不记得如何创建答案文件。

这是一个好方法吗?还是会有更简单的方法?

Answers:


17

谈论一个已加载的问题...

对于初学者,请忽略setup.exe。奇怪的是,它仅称为MSI。或者有时他们提取一堆东西,然后称为MSI,通常可以在运行安装程序时查看您的temp目录,并了解其作用。

我总是作弊,并在启动msiexec /i path/to-install.msi /l*v /qn日志的情况下试运行install(),然后遍历日志并选择了要设置的属性,并通过命令行进行设置。答案文件从不起作用,或者不值得进行整个过程来制作它们。

然后我找到了InstEdit并用了它。它可以让您编辑MSI的属性并生成一个Transform,然后可以将其作为脚本中的参数传递:msiexec /i path/to/installer.msi /t path/to/transform.mst 我建议您先试用一下,这里有一个免费的版本,可以处理所有事情。

您还可以在这里查看所有开关的msiexec内容。


+1,但不幸的是,这些开关似乎不适用于所有MSI。尚未调查原因,但某些情况确实如此。
西亚兰

取决于如何创建MSI。您可以设置一些属性来忽略某些参数,即IIRC。通常使用Instedit并构建Transform总是可以的,我遇到的唯一错误通常是人为错误。
Peelman


1
日志方法对我有用。重要的是要注意,这些属性将被列为Property(S) : PROPERTY_NAME...
Drew Chapin

5

Msiexec是您需要的工具。它具有-q参数,可让其安装“安静”的东西:

/ qn:不显示任何用户界面。

/ qb:显示基本的用户界面。

/ qr:显示简化的用户界面,并在安装结束时显示模式对话框。

/ qf:显示完整的用户界面,并在最后显示一个模式对话框。

/ qn +:除最后显示一个模式对话框外,不显示任何用户界面。

/ qb +:显示基本用户界面,并在最后显示一个模式对话框。

/ qb-:显示没有模式对话框的基本用户界面。

您还可以在命令行末尾提供命名选项(或“属性”)。支持哪些属性取决于软件包。例如,此命令:

msiexec /qb /l* perl-log.txt /i ActivePerl.msi PERL_PATH=Yes PERL_EXT=Yes

...这是安装ActiveState Perl的方式,指示MSI软件包将Perl.exe添加到PATH并将其与.pl文件关联。(来源


1
请注意,开发人员可以选择在其msi安装程序中禁用/ q选项。
Joel Coehoorn

2

大多数应用程序可以静默安装,因此可以编写脚本。每个Setup.exe都有许多潜在的开关,因此必须致电供应商或搜索其网站。有时,您可以通过使用/?,/ h / help开关启动安装程序来获取信息。MSI文件也可以具有任意数量的开关,但是本文的MSI命令行参数提供了一个列表。

在编写脚本过程时,您可能会遇到一个使用setup.exe安装的应用程序,然后启动另一个文件,例如MSI。一个例子是MS Office XP。发生这种情况时,您的脚本可能会认为您启动的文件已完成,然后启动下一个安装程序,该安装程序将导致所有内容消失。要解决此问题,请尝试绕过安装文件,然后直接使用命令行选项进入实际的安装程序(可能是MSI)。如果不可能,则可能需要创建某种计时器暂停。我曾经使用过一个在互联网上找到的名为wait.exe的小实用程序,但是有百万种方法可以做到这一点。但是,编写脚本的关键是能够识别应用程序是否正确安装,以便下次安装可以开始。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.