我可以通过 Wix 工具集将 Microsoft Visual C++ 2010 可再发行组件的安装与我的安装包集成在一起吗?
我使用自定义操作尝试了此操作,但如果正在进行另一个安装,则不会安装。有人会对如何做到这一点有任何建议吗?
另外,还有一个问题:我可以在我正在创建的这个 MSI 安装程序中调用一个 MSI 安装程序吗?
我可以通过 Wix 工具集将 Microsoft Visual C++ 2010 可再发行组件的安装与我的安装包集成在一起吗?
我使用自定义操作尝试了此操作,但如果正在进行另一个安装,则不会安装。有人会对如何做到这一点有任何建议吗?
另外,还有一个问题:我可以在我正在创建的这个 MSI 安装程序中调用一个 MSI 安装程序吗?
您不能进行递归 MSI 安装 - 冒着明显的风险,当您收到“另一个安装正在进行中”的错误时,另一个安装就是您。
如果您使用合并模块来安装 VC 运行时,并且您有一个依赖于它们的 C++ 服务,您使用 StartServices (WiX ServiceControl) 启动,那么您可能会发现该服务不会启动。这是因为 C++ 运行时的 SxS 版本在 InstallFinalize 之前不可用,这是在 StartServices 操作之后。可能的解决方案是:
使用指向 C++ 运行时的静态链接构建服务,但随后对 VC++ 运行时 Dll 的更新将不会应用于您构建的二进制文件,以防出现问题。
在安装自己的 MSI 文件之前,使用像 Burn 这样的引导程序来运行 VC++ redist exe。
将运行时 Dll 作为私有副本复制到您的应用文件夹,仅供您的应用使用。这种东西,旧的但仍然适用我相信:
使用合并模块可能会遇到的另一个问题是它们需要每台机器安装。如果您将它们包含在每个用户安装中,则安装将失败。