Фон
У меня есть сложное приложение C ++, которое устанавливается с помощью установщика msi (определяется с помощью wix). Моему приложению нужны библиотеки времени выполнения MSV C, поэтому 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 ++, которая также использует MSV C во время выполнения, так что c связывание не является приемлемым решением.
Проблема
Когда я загружаю dll своего приложения из временной папки, ему нужны эти библиотеки времени выполнения MSV C. Для этого мне нужны именно те dll для этой временной папки.
Проблема наблюдается только в Windows 2012, другие поддерживаемые версии Windows имеют это предустановленное время выполнения.
Вопрос
Каков наилучший способ извлечь эти библиотеки времени выполнения MSV C во временную папку?
Заметки
Я унаследовал этот установщик, и текущая реализация вручную внедряет эти dll (как дубликаты). ) в установщике извлечь их на основе предопределенного идентификатора. Это плохое решение, и мне нужно sh исправить это правильно.