2013-07-04 4 views
0

WiX으로 작성된 MSI 파일이 내 실행 파일을 실행하고 MSI 파일 근처에있는 구성 파일을 복사합니다. 설치하기 전에 설정 파일을 변경할 수 있으며, 변경된 버전은 설치 폴더에 복사됩니다. 내가 원하는 내가이 MSI 파일과 함께 다른 패키지를 설치해야하기 때문에 내가 행복하지만 만족 아니에요 무엇WiX 번들 사용자 지정 구성 파일

<Component Id="ProductComponent" 
      Guid="714DCBE1-F792-401E-9DDC-67BC1853BE14"> 
    .... 
    <File Source="Chiffa.exe.config" 
      Compressed='no'/> 
</Component> 

. 그래서 나는 윅스와 함께 번들 프로젝트를 생성하고 체인 내 모든 사랑 MSI 패키지를 배치 :

<Chain> 
    ..... 
    <MsiPackage Compressed="yes" 
       SourceFile="$(var.ChiffaSetup.TargetPath)" 
       Vital="yes" 
       Visible="no"> 
     <Payload SourceFile="Chiffa.exe.config" 
       Compressed="no"/> 
    </MsiPackage> 
</Chain> 

모든 것은 하나의 작은 일을 제외하고 잘 작동합니다. 번들은 MSI 패키지의 일관성을 검사하고 "해시 코드"로 실패하기 때문에 구성 파일을 변경할 수 없습니다.

답변

0

해결책은 MSI 패키지에서 구성 파일을 제외하고 사용자 지정 작업을 사용하여 파일을 복사하거나 파일이없는 경우 기본값을 만드는 것입니다. 물론, 액션이 파일이라면 체크 할 수 있습니다.

하지만 제거 프로세스 중에 구성 파일을 관리하는 코드를 추가해야합니다. 그것은 또 다른 맞춤 행동입니다. 그런

뭔가 :

[CustomAction] 
public static ActionResult CopyBootstraperConfig(Session session) 
{ 
    try 
    { 
     const string configFile = "Chiffa.exe.config"; 

     var customConfig = Path.Combine(Path.GetDirectoryName(session["OriginalDatabase"]), configFile); 
     var targetConfig = Path.Combine(session.GetTargetPath("INSTALLLOCATION"), configFile); 
     if (File.Exists(customConfig)) 
      File.Copy(customConfig, targetConfig); 
     try 
     { 
      //do file checks 
     } 
     catch (Exception e) 
     { 
      File.Delete(targetConfig); 
      throw; 
     } 
    } 
    catch (Exception e) 
    { 
     return ActionResult.Failure; 
    } 
    return ActionResult.Success; 
} 
0

"해시 코드"는 불완전하거나 손상된 다운로드를 감지하므로 매우 중요한 기능입니다. 구성 파일을 임의로 변경해야하는 경우 각 변경 사항마다 번들을 다시 작성하면됩니다.

그러나 변경을위한 알고리즘을 정의 할 수 있으면 설치 프로젝트에 XmlConfig 요소가 설치된대로 구성 파일을 변경하거나 사용자 지정 동작을 사용하여 구성 파일을 변경할 수 있습니다. 변경 사항에 대한 데이터는 알고리즘 내에서 완전히 정의되거나 다양한 메커니즘을 통해 전달 될 수 있습니다. UI 또는 명령 줄 인수를 통해 설정된 Windows Installer 속성. 명령 줄 인수를 통해 설정되면 번들에서 전달할 수 있습니다.이 번들은 사용자 지정 BootstrapperApplication UI 나 명령 줄에서 가져올 수 있습니다.

+0

그것은 유감이다. 감사! – smash