2014-10-10 1 views
2

WiX Burn으로 관리되는 부트 스트 래퍼 응용 프로그램을 만들고 있습니다. 강제로 다시 시작해야 할 수도있는 ExePackage elements을 처리해야합니다. This question에는 재시작을 처리하는 방법에 대한 약간의 단서가 있지만 작동에 문제가 있습니다.WiX Burn 관리 부트 스트 래퍼가 강제로 재부팅을 처리 할 수 ​​있습니까?

나는 ExePackage 개의 요소에 <ExitCode Value="3010" Behavior="forceReboot" />을 가지고 있는데, 로그에서 트리거링을 볼 수 있습니다. 나는 BootstrapperApplication에 의해 발생되고 e.Result = Result.Restart으로 설정하는 이벤트 인 Shutdown을 듣고 있는데, 적용 단계에서 강제 재부팅이 감지 될 때 발생해야 할 때의 상태를 캡처하는 방법을 알지 못했습니다. 내RunBootstrapperApplication의 방법은 내 사용자 정의 UI의 진행률 표시 줄 부분에 바로가는 방법을 테스트하고 있지만 적용 단계를 다시 시작하는 방법을 모르겠습니다. 이 경우 Engine.Detect() 또는 Engine.Apply으로 전화해야합니까? 재부팅을 견디기 위해 상태를 유지하고 복원하기 위해해야 ​​할 특별한 조치가 있습니까? 아니면 번 엔진이 모든 것을 내부적으로 처리합니까?

누군가 재부팅을 처리하는 WiX Burn 관리 부트 스트 래퍼 응용 프로그램의 작동 예제를 알려 주시면 감사하겠습니다.

답변

3

WixStandardBA의 구현을 관리하지 않아도 확인할 수 있습니다. 기본적으로는 다음을 수행 시작시

  1. WixBundleForcedRestartPackage 변수를 확인하고 m_sczAfterForcedRestartPackage에 저장합니다.

  2. 보통과 같이 Detect으로 전화하십시오.

  3. 보통과 같이 Plan으로 전화하십시오.

  4. OnPlanPackageBegin에서 재시작을 유발 한 패키지까지 패키지를 건너 뜁니다.

  5. 보통과 같이 Apply으로 전화하십시오.

굽기가 다시 시작될 때 변수를 유지 관리합니다.

+0

고마워, 션. 나는 당신의 대답이 나를 아주 가까이 가져 왔다고 생각하지만 Burn이 다시 시작되는 동안 변수를 지속하지 않는 것처럼 보입니다. 나는 다음과 같이 선언 된 몇 가지 변수를 가지고있다 :''. 사용자가 관리되는 부트 스트 래퍼 UI에 해당 제품을 설치하도록 선택했지만 재부팅 후 빈 문자열로 다시 초기화되는 경우이 옵션이 "예"로 설정되어 있음을 알 수 있습니다. 변수 상태의 저장 또는 복원을 시작하려면 관리되는 부트 스트 래퍼 코드에서 무언가를해야합니까? –

+0

아, 나는 제품이 감지되면 'yes'로 변수를 설정하고, 그렇지 않으면 'no'로 설정하는 코드를 가지고 있습니다. 이것은 복원 된 상태를 무시하고있었습니다. Burn 로그는 다시 시작한 후에 빈 문자열로 초기화되는 변수를 표시하지만 나중에 값을 로그에 출력하지 않는 한 복원 된 지속 된 값을 표시하지 않습니다. 그러나 어쨌든 지금은 효과가 있습니다. 감사! –

관련 문제