2017-01-25 6 views
0

지금 당분간이 문제를 해결하려고합니다. 내 부트 스트 래퍼 응용 프로그램에 대한 사용자 정의 UI를 작성했습니다. InstallFolder의 기본값을 설정하는 것은 문제가되지 않지만 사용자가이 경로를 변경하면 나중에 프로그램 추가/제거에서 변경 될 수 있도록이 경로를 어떻게 저장할 수 있습니까? Bundle을 수정하여 번들의 다른 패키지를 설치해야합니까? 레지스트리에 쓸 수는 있지만 부트 스트 래퍼 응용 프로그램은 항상 상승되지 않으므로 HKLM에 쓸 수 없습니다. 하지만 Visual Studio의 경우 비슷한 것을 보았습니다.Wix Burn : 나중에 수정할 수 있도록 사용자 정의 InstallFolder를 저장하는 방법은 무엇입니까?

답변

0

InstallFolder 값을 레지스트리에 저장해야합니다 (예 : 작성 방법에 따라 모두 해당). 부트 스트 래퍼 응용 프로그램과 함께 패키지됩니다. 시작시 util:RegistrySearch을 사용하여 부트 스트 래퍼에서 InstallFolder를 찾아 설정할 수 있습니다.

<Fragment>  
    <util:RegistrySearch 
     Id="ServerInstalledCheck" 
     Root="HKLM" 
     Key="SOFTWARE\$(var.OEMRegistryRootKeyName)\v7" 
     Value="ServerPath" 
     Result="value" 
     Variable="ServerInstalled"/> 
    <util:DirectorySearch 
     Path='[ServerInstalled]' 
     Variable='InstallFolder' 
     After='ServerInstalledCheck' 
     Condition='ServerInstalled' /> 
</Fragment> 

레지스트리 검색 자체에 변수 InstallFolder를 직접 설정하고 DirectorySearch를 생략 할 수 있다고 생각합니다. DirectorySearch 접근법은 InstallFolder를 실제로 시스템에있는 위치에만 설정하는 것을 보장하기 위해 사용되었습니다. 다른 장점도있을 수 있지만 지금은 생각할 수 없습니다.

이것은 새로 설치시 기본 InstallFolder 위치를 유지하고 제거/수정/업그레이드를 실행할 때 선택한 설치 위치를 '기억'합니다.

부트 스트 래퍼 응용 프로그램 내에 레지스트리 키를 쓰는 것에 의존 할 수는 없으므로 권한 상승이 보장되지는 않습니다.


는 기본적으로 here을 설명하는 '속성을 기억하는'패턴을 따르고있다. 수정/업그레이드/제거 중에 이전 설치에서 설정된 값을 기억하고 싶을 때 일반적으로 이동합니다.