【问题标题】:Can I Run Windows Installer (msiexec) from a Windows Batch File?我可以从 Windows 批处理文件运行 Windows Installer (msiexec) 吗?
【发布时间】:2014-09-05 14:55:07
【问题描述】:

好吧,我已经不在我的元素了,但不管怎样。

我需要静默安装供应商提供的 Windows 程序。供应商提供了一个用于安装的 MSI 文件。我创建了一个 bat 文件来运行 msiexec,其中包含以下行:

msiexec /i "C:\archibussilent\afm\ARCHIBUS 19.msi" /L*V C:\archibussilent\log\msi_SETUP.log

当我执行 bat 文件时,会弹出一个错误对话框,上面写着:

“此安装无法通过直接启动 MSI 包来运行。您必须运行 setup.exe”

msiexe 错误日志显示:

MSI (c) (80:B0) [15:48:02:588]: Note: 1: 1729 
MSI (c) (80:B0) [15:48:02:589]: Product: ARCHIBUS 19 -- Configuration failed.
MSI (c) (80:B0) [15:48:02:590]: Windows Installer reconfigured the product. Product Name: ARCHIBUS 19. Product Version: 19.3.30032.003. Product Language: 1033. Manufacturer: ARCHIBUS, Inc.. Reconfiguration success or error status: 1603.

错误 # 是 1603,这意味着权限问题,但我检查了访问权限并没有发现任何问题。

不运行Setup.exe就无法运行msiexe是真的吗?

感谢任何帮助 - 谢谢。

【问题讨论】:

    标签: batch-file installation windows-installer installscript installscript-msi


    【解决方案1】:

    “您必须运行 setup.exe”是供应商编写的要求,一般不特定于 MSI。他们可能有充分的理由这样做,或者他们可能只是将其创作为无需测试其他场景的门检查。

    您必须使用 ORCA 编辑 MSI 并查看 LaunchCondition 和 InstallExecuteSequence 表以了解它们是如何实现的。然后,您可以创建一个转换来绕过检查,或者可能传递一个属性,例如 SETUPEXEDRIVEN=1,以模拟从 setup.exe 调用。 (当您使用它创建 setup.exe 时,一个特别大且知名的安装程序开发产品会将其传递到他们的 MSI。)

    setup.exe 可能有作用。例如,它可能是使用需要提升的清单创作的,或者它可能正在下载和安装先决条件,或者可能确保 MSI 缓存在给定位置以供将来的安装事务使用。

    我还假设您想添加 /QB 或 /QN 以使安装无声。您还需要在调用之前提升 cmd 会话,因为 MSI 在静默安装时不支持 UAC 提示。

    【讨论】:

      【解决方案2】:

      这很可能是使用 Installshield 制作的 Installscript MSI 文件。这是一个非标准的 MSI 文件,具有更高级的 GUI 和其他一些优点。在我看来,这是一种特别有问题的设置类型,因为有一些严重的错误没有合适的解决方法。我一直建议不要使用这种项目类型。这对于企业部署尤其成问题。

      这些设置具有多个command line parameters for the setup.exe file。正如 Chris 所说,您可能可以通过转换运行它并设置属性 SETUPEXEDRIVEN=1,并且您可以尝试使用 setup.exe /a 运行管理员安装(更多信息:purpose of an admin install)。这将从 MSI 中提取所有 cab 文件(如果有)并将文件放在“网络安装位置”以在公司网络中使用 - 本质上是一个较小的 MSI,旁边有安装文件。我已经看到了允许直接从 MSI 运行的设置 - 也可以试一试。

      关于这些设置需要 setup.exe 启动的原因:

      • 在以前的 Installshield 版本中,必须在启动基于 Installscript 的 MSI 之前安装 Installscript 语言运行时。这似乎不再是这种情况,因为 Installscript 现在在没有运行时的情况下运行。
      • setup.exe 用于安装 Windows Installer Engine (msiexec.exe) 的任何更新,为此需要 setup.exe 启动器。这种更新很少需要,现在应该通过 Windows Update 完成。
      • 许多遗留功能,例如能够通过 setup.exe 访问 Internet (!)(非常不适合企业使用)、下载运行时和组件以及提取临时文件也可以通过 setup.exe 完成。
      • 还有其他功能,其中大部分不适合企业部署。

      这是我的 previous answer 就类似问题提供的一个链接,其中包含指向带有实际示例命令行的 PDF 的链接。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-29
        • 2020-08-21
        相关资源
        最近更新 更多