2011-08-15 8 views
1

주 프로그램의 일부로 설치하거나 독립적으로 설치할 수있는 유틸리티 설치 프로그램을 만들고 있습니다. 현재 레지스트리 키에있는 주 프로그램의 위치입니다. 주 프로그램이 설치되어있는 경우 유틸리티는 "유틸리티"하위 디렉토리에 설치해야합니다. 예 : D : \ Program Files (x86) \ MainProgram \ Utilities. 주 프로그램이 설치되어 있지 않으면 루트 드라이브 폴더로 기본 설정되어야합니다. C : \ Program Files (x86) \ MainProgram \ Utilities.조건에 따라 설치 위치 변경

설치시 레지스트리 키 (예 : HKLM \ Software \ MainProgram \ Key : "Install_location")가 설치되어야합니다. 이렇게하면 d : \ Program File (x86) \ MainProgram까지 경로가 제공됩니다. 유틸리티는 해당 하위 디렉토리에 직접 설치해야합니다. 키가 없으면 표준 위치로 기본 설정되어야합니다.

답변

1

C# 또는 다른 언어를 사용하여 사용자 지정 동작에서 레지스트리 값을 읽고 키가 있는지 확인하거나 WIX를 사용하여 레지스트리 키가 있는지 확인하십시오. 설치 위치를 결정하고 원하는 경로에 유틸리티를 설치할 수 있습니다 WIX 세션 변수의 값을 바탕으로 WIX

<Property Id="INSTALLLOCATION"> 
     <RegistrySearch Id="INSTALLLOCATION" 
       Name="Install_location" 
       Root="HKLM" 
       Key="Software\MainProgram\Key" 
       Type="raw" /> 
</Property> 

를 사용

RegistryKey regKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"Software\MainProgram\Key"); 

if ((string)Registry.GetValue(regKey, "Install_location", "0") != "0") 
{ 
    session["Somevariable"] = (string)Registry.GetValue(regKey, "Install_location") 
} 

.

1

속성에 메인 프로 그램 위치를 읽기 :

<Property Id="MainProgramDir"> 
    <RegistrySearch Id="FindMainProgramDir" 
       Root="HKLM" 
       Key="Software\MainProgram" 
       Name="Install_location" 
       Type="directory" /> 
</Property> 

그리고 기본 동작에 대한 디렉토리 구조를 설정 :

<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="ProgramFilesFolder"> 
    <Directory Id="MainProgramDir" Name="MainProgram"> 
     <Directory Id="INSTALLDIR" Name="Utilities"/> 
    </Directory> 
    </Directory> 
</Directory> 

디렉토리 요소는 속성처럼, 그리고있을 경우 무시됩니다 이드와 같은 재산. 속성이 설정되지 않은 경우 (RegistrySearch가 실패하기 때문에) 설정 한 디렉토리 구조에 정의 된대로됩니다.

+0

감사합니다 .... –

+0

이 답변도 시도해 주시겠습니까? http://stackoverflow.com/questions/19355537/wix-setting-install-folder-correctly –

관련 문제