2013-06-20 8 views
2

Я пытаюсь создать приложение начальной загрузки, используя WixStandardBootstrapperApplication. Он делает все, что мне нужно, чтобы делать действительно хорошо, кроме обработки перезагрузки.Возобновить установку после перезагрузки в WiX

Мне нужно установить группу EXE-файлов. Только первый из них - .NET 4.5 и требует перезагрузки. Я бы отсрочил перезапуск, но я не могу, потому что одна из других программ зависит от него. Я попытался использовать код выхода для forcereboot, но когда компьютер начинает резервное копирование, bootstrapper каждый раз застревает в этом коде выхода, и я не могу ничего установить. Есть ли способ применить код выхода тогда и только тогда, когда программа еще не перезапустилась (или каким-либо другим логическим способом)?

Вот что я делаю ...

<ExePackage 
    Id    = "NetFx45Redist" 
    Cache   = "no" 
    Compressed  = "yes" 
    PerMachine  = "yes" 
    Permanent  = "yes" 
    Vital   = "yes" 
    InstallCommand = "/quiet /norestart" 

    SourceFile  = "C:\Users\visibleEP\Documents\Visual Studio 2012\Projects\Bootstrapper1\VEP Deploy\Setup Files\dotNetFx45_Full_setup.exe" 
    DetectCondition = "(Netfx4FullVersion=&quot;4.5.50709&quot;) AND (NOT VersionNT64 OR (Netfx4x64FullVersion=&quot;4.5.50709&quot;))" 
    InstallCondition = "(VersionNT >= v6.0 OR VersionNT64 >= v6.0) AND (NOT (Netfx4FullVersion=&quot;4.5.50709&quot; OR Netfx4x64FullVersion=&quot;4.5.50709&quot;))"> 

    <ExitCode Behavior = "forceReboot"/> 
</ExePackage> 

<ExePackage 
    SourceFile = "...\...\Setup Files\Encoder_en.exe" 
    InstallCommand = "/q"/> 

<ExePackage 
    SourceFile = "...\...\Setup Files\vcredist_x86.exe" 
    InstallCommand = "/q /ACTION=Install" 
    RepairCommand = "/q ACTION=Repair /hideconsole" /> 

<ExePackage 
    SourceFile = "...\...\Setup Files\vcredist_x64.exe" 
    InstallCommand = "/q /ACTION=Install" 
    RepairCommand = "/q ACTION=Repair /hideconsole" /> 
+0

Возможно, это связано с тем, что после перезагрузки программа установки не была продолжена. Использование ViX 3.9 вместо 3.7 устранило проблему. –

ответ

2

Заменить

<ExitCode Behavior="forceReboot"/> 

С

<ExitCode Behavior="forceReboot" Value="1641" /> 
<ExitCode Behavior="forceReboot" Value="3010" /> 

И 1641 и 3010 являются «перезагрузка требуется для завершения Это сообщение указывает на успех ».

Ваша версия рассматривает все коды выхода как то же самое, что вы наблюдали. См. the documentation об этом установщике. К счастью, коды выхода задокументированы.

UPDATE: Я добавил известные коды успеха и уловки, которые могут быть error, если вы уверены, что все коды успеха документированы.

<ExitCode Behavior="success" Value="0" /> 
<ExitCode Behavior="error"/> 
+0

Теперь проблема заключается в том, что эти коды всегда возвращаются, даже если произошел перезапуск, и .net уже должен быть установлен. Я просто хочу, чтобы bootstrapper пропустил установку .net, если он уже существует, что и должно делать условия обнаружения и установки, но они, похоже, не работают или что-то еще происходит. Установщик находится в бесконечном цикле необходимости перезапуска. –

+0

Также! Кажется, что он отлично работает, когда .net 4.5 уже установлен в системе (т.е. он пропускает установку .net и делает все остальное) ... мне кажется, это не имеет смысла, поскольку после перезапуска .net так что цикл не должен продолжаться во время его установки. –

+1

Думаю, я исправил это! Я добавил: и, похоже, работает так спасибо !! –