如何在安装验证过程中从合并的Microsoft_VC141_CRT_x64.msm中提取MSVC rutime库

问题描述 投票:1回答:1

背景

我有一个复杂的C ++应用程序,它使用msi安装程序(用wix定义)安装。我的应用程序需要MSVC运行时库,因此Microsoft_VC141_CRT_x64.msm被合并到我的安装程序中。

        <DirectoryRef Id="APPDIR">
            <Merge Id="M.visualStudioRuntime" Language="0" SourceFile="$(var.DependenciesPath)/Microsoft_VC141_CRT_x64.msm"
             DiskId="1" />
        </DirectoryRef>
....
        <FeatureRef Id="F.SomeComponent">
            ....
            <MergeRef Id="M.visualStudioRuntime" />
        </FeatureRef>

现在在安装过程中,必须验证远程服务器上的某些数据。对于该任务,我将应用程序dll提取到临时文件夹中,加载库并使用必需的参数执行某些功能。根据结果​​,安装设置是否允许继续。

此dll依赖于第三方(不能完全来自其他团队的第三方)C ++库,该库也使用MSVC运行时,因此静态链接是不可接受的解决方案。

问题

当我从临时文件夹加载应用程序dll时,它需要那些MSVC运行时库。为此,我需要将这些dll精确地存储到此临时文件夹中。

问题

将这些MSVC运行时库提取到临时文件夹的最佳方法是什么?

注意

我已经继承了此安装程序,当前的实现是将这些dll(作为重复项)手动嵌入到安装程序中,并根据预定义的ID提取它们。这是不好的解决方案,我希望需要对其进行正确修复。

wix windows-installer msiexec
1个回答
1
投票

[C ++

© www.soinside.com 2019 - 2024. All rights reserved.