2013-06-20 3 views
2

WixStandardBootstrapperApplication을 사용하여 부트 스트랩 응용 프로그램을 만들려고합니다. 그것은 재시작을 다루는 것을 제외하고는 정말로 필요한 모든 것을 해냅니다.WiX에서 다시 시작한 후 설치 재개

EXE 파일 그룹을 설치해야합니다. 첫 번째 것은 .NET 4.5이며 다시 시작해야합니다. 나는 재시작을 연기 할 것이지만 다른 프로그램들 중 하나가 그것에 의존하기 때문에 나는 할 수 없다. 종료 코드를 사용하여 강제 종료하려고 시도했지만 컴퓨터가 다시 시작될 때마다 부트 스트 래퍼가 매번 종료 코드에서 멈추고 다른 것을 설치할 수 없습니다. 프로그램이 아직 (또는 다른 논리적 인 방법으로) 다시 시작되지 않은 경우에만 종료 코드를 적용 할 수 있습니까? 여기

내가 ...하고있어

<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

가능성이 있습니다. 설치 프로그램을 다시 시작한 후에도 문제가 발생했습니다. 3.7 대신 ViX 3.9를 사용하여 문제가 해결되었습니다. –

답변

2

<ExitCode Behavior="forceReboot"/> 

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

및 3010과 함께 "다시 시작이를 완료하는 데 필요한되는 대체 무엇 이 메시지는 성공을 나타냅니다. "

귀하의 버전은 귀하가 준수한 모든 종료 코드를 동일하게 취급합니다. 해당 설치 프로그램의 the documentation을 참조하십시오. 다행히 종료 코드가 문서화되어 있습니다.

업데이트 : 모든 성공 코드가 문서화되어 있다고 확신하는 경우 알려진 성공 코드와 캐치 올을 모두 error으로 추가했습니다.

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

문제는 이제 재시작이 발생하고 .net이 이미 설치되어 있어도 해당 코드가 항상 반환되는 것처럼 보입니다. 나는 부트 스트 래퍼가 .net을 설치하는 것을 건너 뛰기를 원한다. 이미 감지되고 설치되는 조건이 무엇인지는 이미 알고 있지만 작동하지 않거나 다른 일이 진행되고있는 것처럼 보인다. 설치 프로그램은 다시 시작해야하는 무한 루프에 있습니다. –

+0

또한! .net 4.5가 시스템에 이미 설치되어 있으면 잘 작동하는 것 같습니다. (즉, .net 설치를 건너 뛰고 나머지는 수행합니다 ...) 재시동 후 볼 때 나에게 의미가없는 것처럼 보입니다. 루프가 설치되는 동안 루프가 계속 발생하지 않아야합니다. –

+1

나는 그것을 고쳤다 고 생각한다! 나는 추가했다 : 그리고 그것은 그렇게 일하는 것처럼 보인다! –