如何在安装验证期间从合并的“Microsoft_VC141_CRT_x64.msm”中提取MSVC rutime库 背景 我有复杂的C++应用程序,它使用MSI安装程序(用Wix定义)安装。 我的应用程序需要MSVC运行时库,因此Microsoft_VC141_CRT_x64.msm将合并到我的安装程序中 .... ....
现在,在安装过程中,必须验证远程服务器上的一些数据。对于该任务,我将应用程序dll提取到临时文件夹,加载库并使用所需参数执行一些函数。根据结果,安装程序是否允许继续如何在安装验证期间从合并的“Microsoft_VC141_CRT_x64.msm”中提取MSVC rutime库 背景 我有复杂的C++应用程序,它使用MSI安装程序(用Wix定义)安装。 我的应用程序需要MSVC运行时库,因此Microsoft_VC141_CRT_x64.msm将合并到我的安装程序中 .... ....,wix,windows-installer,Wix,Windows Installer,现在,在安装过程中,必须验证远程服务器上的一些数据。对于该任务,我将应用程序dll提取到临时文件夹,加载库并使用所需参数执行一些函数。根据结果,安装程序是否允许继续 这个dll依赖于第三方(OK不完全是第三方来自其他团队)C++库,它也使用MSVC运行时,所以静态链接是不可接受的解决方案。 问题 当我从临时文件夹加载应用程序dll时,它需要这些MSVC运行时库。要做到这一点,我需要准确的DLL到这个临时文件夹 仅在Windows 2012上观察到此问题,其他受支持的Windows版本已预安装此运
项目设置
C/C++
代码生成
将运行库
设置更改为多线程
而不是多线程dll
<> >自定义动作提示< /St>:这里是关于常见C++自定义动作问题的答案:
次要答案:要从合并模块提取文件,更简单的方法是将其添加到项目中,构建MSI,然后在MSI上运行管理安装-这是从MSI提取的美化文件:
基本命令:
msiexec.exe /A MySetup.msi
这是C++。无法使用静态链接,因为涉及的dll-s来自也使用MSVC运行时的第三方。您有没有可能推迟到安装后?通过应用程序启动运行?遗憾的是,不是。应用程序是一个与其他服务器/服务通信的服务,此步骤配置此连接。我想您可以向其他团队请求静态链接的组件?我曾经向一个每月更新软件的团队推荐静态链接。然后,您通常可以以比运行时更新批准用于公司部署更快的速度获得安全修复,并且您可以避免许多运行时错误(包括WinSxS清单错误)。一切都取决于环境。静态链接几乎总是错误的,但对于那些必须在任何机器上、任何状态下、任何语言下、任何地区的各种OSs上运行的部署组件来说,这是不正确的。依我拙见