Я пытаюсь запустить приложение начальной загрузки, используя приложение WixStandardBootstrapperApplication. Пока что он отлично работает для всего, что мне нужно, даже для перезапуска в середине установки. Процесс проходит так - проверяю установлен ли на компе .net 4.5, если нет, то устанавливаю .net 4.5. После установки программа записывает, а затем перезагружает, потому что я обрабатываю коды выхода. После возобновления установщик обрабатывает еще три файла .exe, один из которых зависит от установки .net. Все это работает очень хорошо до тех пор, пока не произойдет перезагрузка, после чего загрузчик попытается восстановить каждую из постустановок исполняемого файла, удваивая время выполнения. Это было бы не так уж плохо, за исключением того, что установка .net 4.5 занимает так много времени, что дублирование очень нежелательно. Я попытался пропустить команду восстановления и заметил, что нет никакой формы RepairCondition, такой как условия установки и обнаружения. Есть ли способ предотвратить процессы восстановления?
Вот код загрузчика:
<Chain>
<ExePackage Id="NetFx45Redist" Cache="no" Compressed="yes" PerMachine="yes" Permanent="yes" Vital="yes" InstallCommand="/q /norestart" RepairCommand="/q"
SourceFile="...\...\Setup Files\dotNetFx45_Full_setup.exe"
DetectCondition="(Netfx4FullVersion="4.5.50709") AND (NOT VersionNT64 OR (Netfx4x64FullVersion="4.5.50709"))"
InstallCondition="(VersionNT >= v6.0 OR VersionNT64 >= v6.0) AND (NOT (Netfx4FullVersion="4.5.50709" OR Netfx4x64FullVersion="4.5.50709"))"
RepairCondition="" >
<ExitCode Value="1641" Behavior="forceReboot"/>
<ExitCode Value="3010" Behavior="forceReboot"/>
<ExitCode Value="0" Behavior="success"/>
<ExitCode Behavior="error"/>
</ExePackage>
<ExePackage
SourceFile="...\...\Setup Files\Encoder_en.exe"
InstallCommand="/q"
RepairCommand="/q">
<ExitCode Behavior="success"/>
</ExePackage>
<ExePackage
SourceFile="...\...\Setup Files\vcredist_x86.exe"
InstallCommand="/q"
RepairCommand="/q">
<ExitCode Behavior="success"/>
</ExePackage>
<ExePackage
SourceFile="...\...\Setup Files\vcredist_x64.exe"
InstallCommand="/q"
RepairCommand="/q">
<ExitCode Behavior="success"/>
</ExePackage>
<!-- installer for actual software at some point -->
</Chain>
Я знаю, что это в основном хак, чтобы поведение было успешным для этих других .exe, но до тех пор, пока проблема восстановления не будет решена, им нужно, чтобы в противном случае установщик сказал, что это не удается. Я также пытался удалить команды восстановления из них, и это, похоже, совсем не помогает, поэтому я сделал их тихими, чтобы, по крайней мере, они не всплывали и не сбивали с толку пользователя.