Я создал установочный пакет WiX для большой программы. Пакет установки включает в себя модули слияния для файлов Visual C++ 9.0. Мне нужно включить модули слияния для COM DLL. Установка выполняется просто отлично. При первом запуске программы происходит нечто странное. При первом вызове COM DLL запускается механизм установки Windows. Диалог установки появляется неожиданно. Он делает то, что ему нужно сделать в течение некоторого времени, затем он уходит, и программа возобновляет свою обычную функцию. Это происходит только в первый раз, когда COM DLL нуждается в модулях слияния Visual C++, и после завершения установки программа продолжает работать без инцидентов. Почему это происходит, и что я могу сделать, чтобы предотвратить это? Вот код WiX для модулей слияния:Диалоговое окно Bizarre Installing после запуска установки WiX
<DirectoryRef Id="TARGETDIR">
<Merge Id="VCRedistCRT" SourceFile="C:\Program Files\Common Files\Merge Modules\Microsoft_VC90_CRT_x86.msm" DiskId="1" Language="0"/>
<Merge Id="VCRedistATL" SourceFile="C:\Program Files\Common Files\Merge Modules\Microsoft_VC90_ATL_x86.msm" DiskId="1" Language="0"/>
<Merge Id="VCRedistMFC" SourceFile="C:\Program Files\Common Files\Merge Modules\Microsoft_VC90_MFC_x86.msm" DiskId="1" Language="0"/>
<Merge Id="VCRedistMFCLOC" SourceFile="C:\Program Files\Common Files\Merge Modules\Microsoft_VC90_MFCLOC_x86.msm" DiskId="1" Language="0"/>
<Merge Id="VCRedistOpenMP" SourceFile="C:\Program Files\Common Files\Merge Modules\Microsoft_VC90_OpenMP_x86.msm" DiskId="1" Language="0"/>
</DirectoryRef>
<Feature Id="VCRedistCRT" Title="Visual C++ 9.0 CRT Runtime" AllowAdvertise="no" Display="hidden" Level="1">
<MergeRef Id="VCRedistCRT"/>
</Feature>
<Feature Id="VCRedistATL" Title="Visual C++ 9.0 ATL Runtime" AllowAdvertise="no" Display="hidden" Level="1">
<MergeRef Id="VCRedistATL"/>
</Feature>
<Feature Id="VCRedistMFC" Title="Visual C++ 9.0 MFC Runtime" AllowAdvertise="no" Display="hidden" Level="1">
<MergeRef Id="VCRedistMFC"/>
</Feature>
<Feature Id="VCRedistMFCLOC" Title="Visual C++ 9.0 MFC LOC Runtime" AllowAdvertise="no" Display="hidden" Level="1">
<MergeRef Id="VCRedistMFCLOC"/>
</Feature>
<Feature Id="VCRedistOpenMP" Title="Visual C++ 9.0 Open MP Runtime" AllowAdvertise="no" Display="hidden" Level="1">
<MergeRef Id="VCRedistOpenMP"/>
</Feature>
Если бы я должен был догадаться, это выглядит как Visual C++ библиотеки были установлены «при первом использовании;» то есть эта функция не установлена полностью, пока кто-то ее не использует. Я думаю, что это было бы невозможно, так как для параметра AllowAdvertise установлено значение «нет», но я не эксперт по WiX.
Благодарим за отзыв. К сожалению, это не решило мою проблему при появлении диалогового окна установки. –