2010-03-04 3 views
2

응용 프로그램이 설치된 레지스트리 키가있는 경우에만 설치해야하는 구성 요소가 있습니다.Wix 조건부로 레지스트리 키가있는 경우 구성 요소를 설치하십시오.

속성에 레지스트리 키 값 (디렉터리 임)을 할당 한 다음이 속성을 사용하여 파일을 복사해야합니다.

나는 지금까지 다음 스크립트를 가지고 있지만 "시스템이 '[MYTESTDIR] fileToCopy.dat'파일을 찾을 수 없습니다."라는 오류 메시지가 나타납니다. "

도움이 될만한 의견이 있습니다.

<Property Id="MYTESTDIR"> 
    <RegistrySearch Id="NetFramework20" 
      Root="HKLM" 
      Key="SOFTWARE\TEST\VALUE\1.00" 
      Name="MyName" 
      Type="directory" /> 
</Property> 

<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="ProgramFilesFolder"> 
     <Directory Id="TEST" Name="Test">  
      <Component Id="MyComponent" Guid="E5FF53DE-1739-42c4-BE37-60F810C9CD69"> 
       <Condition>MYTESTDIR</Condition> 
       <File Id="fileToCopy.dat" Name="fileToCopy.dat" Source="[MYTESTDIR]fileToCopy.dat"> 
        <CopyFile Id="fileToCopy.datCopy" DestinationProperty="WEBSERVICEBINFOLDER" /> 
       </File> 

     </Directory>    
    </Directory> 
</Directory> 

<Feature Id="MyFeature" Title="MyFeature" Level="1"> 
    <ComponentRef Id="MyComponent" /> 
</Feature> 

답변

5

는 윅스 스키마 문서의 내 독서를 바탕으로, 당신의 문제는 파일 요소 아래에 중첩 된 CopyFile 요소를 가지고있다. 파일 요소를 도랑 그냥 CopyFile 수는 구성 요소 아래에 앉아있다 : ​​

<Component Id="MyComponent" Guid="E5FF53DE-1739-42c4-BE37-60F810C9CD69"> 
    <Condition>MYTESTDIR</Condition> 
    <CopyFile Id="fileToCopy.datCopy" SourceName="[MYTESTDIR]fileToCopy.dat" DestinationProperty="WEBSERVICEBINFOLDER" /> 
</Component> 

당신이 그것을 가지고하는 방법은, 파일 아래에 중첩, 윅스 빌드하는 동안 시스템에서 파일을 찾고 있었다

-보다는 최대 설정 설치시 복사 명령이 실행됩니다.

1

MYTESTDIR은 패키지를 설치할 때 대상 시스템의 값을 얻는 Windows 설치 프로그램 속성입니다..

Source 속성에서이 속성을 사용하려고합니다.이 속성은 시스템의 파일 을 가리키는 데 사용되며 설치 패키지는 빌드입니다.

분명히 작동하지 않을 것입니다. Source 속성을 평가하는 동안에는 Windows 설치 관리자 속성이 존재하지 않으므로 Source은 이러한 사용을 확실히 지원할 수 없습니다.

브라이언의 대답은 여기에서하려는 일에 대한 올바른 해결책입니다. File 요소 아래에 CopyFile을 사용하는 것은 불법이 아니지만 사용자가 설치 한 파일을 복사하기위한 것입니다. 이 경우 이미 대상 시스템에있는 파일을 복사하려고하므로 File 요소가 적합하지 않습니다.

관련 문제