MSI无提示安装无法正常工作

时间:2017-03-01 22:45:09

标签: windows-installer silent-installer

我正在尝试使用以下代码通过PowerShell安装MSI:

msiexec /a [MSI File] /qn

根据事件日志,该软件已成功安装,但未出现在添加/删除程序中或注册表项内。我在没有Admin控件的笔记本电脑上,这就是我使用/a而不是/i的原因。我也尝试了以下代码与以前相同的结果:

msiexec /a [MSI File] ALLUSER=2 ARPSYSTEMCOMPONENT=0 /qn

有关为何发生这种情况的任何线索,以及我如何解决此问题以便正确安装软件?

1 个答案:

答案 0 :(得分:4)

您正在采取的步骤不应该具有您期望的结果。正如您简要提到的那样,/a执行所谓的administrative install。这不是软件的安装,而是创建未压缩的安装源。这通常是供公司使用,以避免物理上共享安装光盘(当有安装光盘时返回)。

您的第二个命令行有几个错误:

  • /a仍然没有"安装"软件
  • ALLUSER=2没有意义,因为未定义属性ALLUSER。正确的属性名称为ALLUSERS。您可能正在寻找ALLUSERS=2 MSIINSTALLPERUSER=1来调用Windows Installer 5 / Windows 7或更高版本的每用户重定向。请注意,除非程序包为MSIINSTALLPERUSER,否则authored with this so-called dual purpose in mind可能无法正常运行。
  • ARPSYSTEMCOMPONENT=0可能会与您预期的相反。 Windows Installer主要用于定义/未定义(即非空字符串与空字符串)的真值定义,而不是1/0定义。虽然documentation确实将其设置为1将阻止应用程序在ARP中列出,但实现可能会检查任何非空字符串值。 (当然,根据第一个子弹,它并不重要,因为您没有执行正常安装。)

您最好的选择是获得管理权限,在这种情况下,一个简单的msiexec /i package.msi将完成这项工作。如果您无法获得管理权限,并且已正确创作程序包,则可以使用msiexec /i package.msi ALLUSERS=2 MSIINSTALLPERUSER=1进行安装。在任何一种情况下,你也可以传递/qn或类似的东西来抑制用户界面,但我建议你避免这种情况,直到你有事情发生。正如评论中所提到的,添加/l*v verbose.log可以帮助诊断无论UI水平如何,都会发生什么。