Wix 工具集安装 C++ 2010 Redistributable
Wix Toolset install C++ 2010 Redistributable
我可以通过 Wix 工具集将 Microsoft Visual C++ 2010 redistributable 的安装与我的安装包集成在一起吗?
我尝试使用自定义操作进行此操作,但如果正在进行另一个安装,它不会安装。有人会对如何执行此操作有任何建议吗?
此外,另一个问题:我可以在我正在创建的这个 MSI 安装程序中调用 MSI 安装程序吗?
您可以使用 C++ 运行时合并模块安装 C++ 运行时文件:
How To: Install the Visual C++ Redistributable with your installer
关于你的第二个问题:不,这是不可能的。
您不能执行递归 MSI 安装 - 冒着陈述显而易见的风险,当您收到该错误时 "another install is in progress" 其他安装就是您。
如果您使用合并模块来安装 VC 运行时,并且您有一个依赖于它们的 C++ 服务,并且您使用 StartServices (WiX ServiceControl) 启动,那么您可能会发现该服务无法启动。这是因为在 StartServices 操作之后的 InstallFinalize 之前,C++ 运行时的 SxS 版本不可用。可能的解决方案是:
使用到 C++ 的静态链接构建服务 运行 次,但是 VC++ 运行time Dll 的更新将不会应用于您构建的二进制文件,以防万一。
在安装自己的 MSI 文件之前,使用像 Burn 这样的引导程序来 运行 VC++ redist exe。
将 运行time Dll 作为私人副本复制到您的应用文件夹,仅供您的应用使用。这种东西,老了,但我相信仍然适用:
使用合并模块时您可能 运行 遇到的另一个问题是它们需要按机器安装。如果您将它们包含在每用户安装中,则安装将失败。
我可以通过 Wix 工具集将 Microsoft Visual C++ 2010 redistributable 的安装与我的安装包集成在一起吗?
我尝试使用自定义操作进行此操作,但如果正在进行另一个安装,它不会安装。有人会对如何执行此操作有任何建议吗?
此外,另一个问题:我可以在我正在创建的这个 MSI 安装程序中调用 MSI 安装程序吗?
您可以使用 C++ 运行时合并模块安装 C++ 运行时文件:
How To: Install the Visual C++ Redistributable with your installer
关于你的第二个问题:不,这是不可能的。
您不能执行递归 MSI 安装 - 冒着陈述显而易见的风险,当您收到该错误时 "another install is in progress" 其他安装就是您。
如果您使用合并模块来安装 VC 运行时,并且您有一个依赖于它们的 C++ 服务,并且您使用 StartServices (WiX ServiceControl) 启动,那么您可能会发现该服务无法启动。这是因为在 StartServices 操作之后的 InstallFinalize 之前,C++ 运行时的 SxS 版本不可用。可能的解决方案是:
使用到 C++ 的静态链接构建服务 运行 次,但是 VC++ 运行time Dll 的更新将不会应用于您构建的二进制文件,以防万一。
在安装自己的 MSI 文件之前,使用像 Burn 这样的引导程序来 运行 VC++ redist exe。
将 运行time Dll 作为私人副本复制到您的应用文件夹,仅供您的应用使用。这种东西,老了,但我相信仍然适用:
使用合并模块时您可能 运行 遇到的另一个问题是它们需要按机器安装。如果您将它们包含在每用户安装中,则安装将失败。