我有一个使用Visual Studio 2015开发的C++应用程序,以及一个Wix安装程序和一个Burn引导程序。以前版本的应用程序能够使用Visual Studio合并模块来安装必要的先决条件,但在使用Visual Studio 2015时(看Redistributables for deploying C++ exe developed with Visual Studio 2015 on Windows 7),似乎这不是一个选项。Wix Burn vcredist
按照该链接中的建议,我们已经开始使用带有重要=“是”的ExePackage安装vcredist和Burn。这大部分效果很好 - 我们有几个客户由于vcredist的各种问题而导致安装失败。直到最近,这些错误都会导致安装失败。
在过去的几天里,由于安装了新版本的可再发行版本,我们收到了一些安装程序失败的报告:vcredist失败,错误代码为0x80070666,导致引导程序失败。
我的问题是:
- 正在部署vcredist “正确” 的方法来取? (假设我们需要一个exe安装程序)
- 我们怎样才能知道安装了哪些版本的可再发行组件(不一定在引导程序中,此信息是否以某种用户可读的形式存储)?
- 是否有我们应该分发的可再发行的更新版本? (目前使用14.0.23026)这是基于正在使用的Visual Studio版本进行编译还是应该始终分发最新版本? (当前VS版本14.0.23107.0)
- 作为最后的手段,是否有可能检测从vcredist返回的错误代码并允许该值确定安装是否继续或失败?
太棒了!为了澄清 - 迄今为止我们的非正式测试没有遇到任何问题,即针对针对旧版本编译的可执行文件(即,我们尚未升级到Visual Studio 2015更新1或2)使用新版本的可再发行组件。这是保证是这种情况,还是我们需要升级Visual Studio之前,我们开始运送新的可再分发? – Runt8
在我的测试中,我没有发现运行vcredist早期版本的计算机上已安装vcredist的新版本生成的产品的任何问题。但是,不能保证vcredist的未来版本不会破坏某些东西。我倾向于使用vcredist的最新版本,假设最新版本具有最新的错误和安全修补程序等。 – bradfordrg
是否存在可以读取的注册表项,以确定当前安装的版本并将其用作installcondition为exepackage? “InstallCondition” http://wixtoolset.org/documentation/manual/v3/xsd/wix/exepackage.html – tollgen