2013-01-31 2 views
4

필자는 설치에 필요한 모든 설치 패키지 (msis, cabs 및 exes)를 포함하고있는 WiX 사용자 정의 MBA를 작성했습니다. 그러나 나는 지금 설치할 필요가있는 패키지를 다운로드 할 경량의 웹 부트 스트 래퍼를 만들고 싶다. 기본 WiX 부트 스트 래퍼 엔진을 사용하면 무료로 사용할 수있을 것이라고 생각했지만 잘못된 것 같습니다.WiX 사용자 지정 관리 부트 스트 래퍼 응용 프로그램에서 설치 패키지를 다운로드하는 적절한 방법은 무엇입니까?

ResolveSource 이벤트를 구독하여 패키지의 다운로드 URL을 가져 와서 로컬 소스 위치로 다운로드하려고했지만 설치가 실패하여 "설치 실패"오류가 발생하여 프로세스에서 너무 늦은 것 같습니다 파일의 원본 : "(다운로드가 성공하더라도). 내가 뭘하려의

샘플 : 메일 링리스트 윅스 사용자에 대답 롭 Mensching에

private void OnResolveSource(object sender, ResolveSourceEventArgs e) 
{ 
    string localSource = e.LocalSource; 
    string downloadSource = e.DownloadSource; 

    if (!File.Exists(localSource) && !string.IsNullOrEmpty(downloadSource)) 
    { 
     try 
     { 
      using (WebClient webClient = new WebClient()) 
      { 
       webClient.DownloadFile(e.DownloadSource, e.LocalSource); 
      } 
     } 

     catch (ArgumentNullException ex) 
     { 
      e.Result = Result.Error; 
     } 

     catch (WebException ex) 
     { 
      e.Result = Result.Error; 
     } 
    } 
} 

답변

7

감사 :

(작성해야합니다 제공하는 URL의 패키지를 만들기 가장 쉬운하지만 당신입니다 을 프로그래밍 방식으로 모두 설정할 수 있습니다.) ResolveSource 호출에서 IDDOWNLOAD를 반환합니다.

private void OnResolveSource(object sender, ResolveSourceEventArgs e) 
{ 
    if (!File.Exists(e.LocalSource) && !string.IsNullOrEmpty(e.DownloadSource)) 
     e.Result = Result.Download; 
} 

패키지를 다운로드 할 부트 스트 래퍼 엔진을 지시 Result.Download에 결과를 설정 다음과 같이

나는 내 코드를 편집했다. 파일을 직접 다운로드하지 않아도됩니다.

+0

좋은 답변입니다. 공유해 주셔서 감사합니다. –

+0

감사합니다! 나는 this.Bootstrapper.ResolveSource + = this.OnResolveSource;를 추가하는 것을 잊었다. –