静默安装 msi

时间:2021-01-15 10:09:53

标签: installshield

0x80070652 - 安装 VS 2012 C++ 可再发行组件时。 大家好,

最近几天我遇到了一个奇怪的问题,我一直在论坛、谷歌等中寻找解决方案。 到目前为止,找不到类似的问题:

场景:

  1. 我有一个部署我们公司产品的“基本 MSI”项目。
  2. 一切正常,直到我需要添加 VS 2012 C++ 可再发行组件的安装。
  3. 我正在使用 installscript 启动命令行以静默安装它 - 'vcredist_x64.exe /q'。
  4. 如果自定义操作被添加到执行序列,以下错误来自“VS 2012 C++ 可再发行组件。- 错误 0X80070652:ERROR_INSTALL_ALREADY_RUNNING。此错误是由于另一个安装正在进行中。在继续此安装之前完成该安装。
  5. 如果手动运行它,无论 IS 安装如何,一切都运行良好。
  6. 此外,当自定义操作位于 UI 序列上时 - 效果很好。 - 我不能把它留在 UI 序列中,因为我们的产品正在与我们的产品客户端一起安静地部署。
  7. 我一直在尝试更改为不同的项目类型 - “installscript MSI”...同样的错误。

请指教,感谢您的意见。

1 个答案:

答案 0 :(得分:0)

简短回答:您不能从 MSI 中为 technical reasons 运行此可执行文件,您应该按顺序运行它们。首先是可执行文件,然后是您的 MSI(批处理文件或手动)。或者您应该制作一个按顺序运行它们的可执行文件(例如 WiX Bundle)。


VCRedist:VS 2012 C++ 可再发行vcredist_x64.exe 是一个 WiX 捆绑包,其中包含几个 MSI 文件。不允许在主 MSI 安装的同时运行嵌入/嵌套的 MSI 文件。 Simple explanation here。内联解释:这是因为 MSI 文件安装为一个应该可以回滚的事务。因此,文件安装顺序会锁定系统,以防止其他 MSI 文件在进行中时安装。

提取:您可以使用 WiX 工具包的 dark.exe:dark.exe /x D:\VCRedist vcredist_x64.exe 提取 WiX 包。必须安装 WiX 工具包并且dark.exe 必须在路径中或者您必须指定其完整路径。

Setup.exe:解决方案是在使用 WiX 创建的 setup.exe 包中按顺序运行 MSI 文件,Installshield(请参阅链接示例屏幕截图 - more on suite projects here)、高级安装程序或类似的设置创建工具。另一种方法是简单地在安装程序旁边提供运行时,并使用批处理文件按顺序安装它们,甚至通过指示用户这样做。

合并模块:大多数 VCRedist 版本都有可用于安装运行时的合并模块(与安装可执行文件相反)。 WiX sample。这些在构建时合并到您自己的 MSI 中,因此没有嵌套的 MSI 进程。 There are some issues with merge modules and recent VCRedist versions


链接: