1

好的,我不在我的元素,但无论如何都可以。

我需要静默安装供应商提供的 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 是真的吗?

任何帮助表示赞赏 - 谢谢。

4

2 回答 2

1

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

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

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

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

于 2014-07-15T12:27:50.390 回答
1

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

这些设置具有许多用于 setup.exe 文件的命令行参数。正如克里斯所说,您可能可以通过转换运行它并设置属性SETUPEXEDRIVEN=1,您可以尝试使用它setup.exe /a来运行管理员安装(更多信息:管理员安装的目的)。这将从 MSI 中提取所有 cab 文件(如果有)并将文件放在“网络安装位置”以用于公司网络 - 本质上是一个较小的 MSI,旁边有安装文件。我已经看到允许直接从 MSI 运行的设置 - 也可以试一试。

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

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

这是我之前对类似问题的回答,其中包含指向带有实际示例命令行的 PDF 的链接。

于 2014-07-15T15:26:18.820 回答