У меня есть простой загрузочный загрузочный носитель, в котором первое, что мне нужно сделать, это запустить перезагрузку (до того, как все будет установлено), а затем продолжить установку после перезагрузки. Я настроил цепь, например:WiX ExitCode forceReboot вызывает бесконечную перезагрузку
<Chain>
<ExePackage SourceFile="DummyExe.exe">
<ExitCode Behavior="forceReboot" />
</ExePackage>
<PackageGroupRef Id="NetFx40Web" />
<PackageGroupRef Id="others..." />
</Chain>
Это прекрасно работает, когда я запускаю инсталлятор изначально: он заставляет перезагрузку и продолжает программу установки при входе в систему, а затем цепь начинается снова с самого начала, таким образом, вызывая другая перезагрузка. Это просто заставляет перезагружаться непрерывно и никогда не продолжает установку.
Я нашел other answers, которые объясняют, как это сделать с помощью специального загрузочного приложения, но в настоящее время я использую bal:WixStandardBootstrapperApplication
.
Возможно ли это без написания CBA? (Я использую WiX 3.7)
К счастью, я в контроле 'ExePackage'. Это просто заполнитель, который я добавил для принудительного перезапуска перед установкой. Если я добавлю несколько элементов 'ExitCode', я думаю, мне нужно изменить мой фиктивный exe, чтобы вернуть один код выхода перед перезагрузкой, а другой после перезапуска (чтобы сигнал нам не нужно устанавливать)? Я полагаю, что писать временный рег-ключ - лучший способ сделать это. – kcnygaard
Вероятно, вы должны разрешить запуск exe без каких-либо эффектов. 0 может быть хорошим кодом выхода, так как для завершенной установки. Если вы хотите вообще не запускать его, когда он не будет иметь никакого эффекта, вы можете указать DetectCondition. –