2013-11-22 5 views
0

iis에 웹 사이트를 설치하기위한 웹 설치 msi를 만들었습니다. product.wxs에서 나는 디렉토리는 사용자가 가상 ​​디렉터리에 대해 원하는 이름을 제공 할 수 있습니다 설치하는 동안 동적 설정 INSTALLDIR 동적으로

<Directory Id='TARGETDIR' Name='SourceDir'> 
    <Directory Id="IISROOT" Name='WebDir'> 
    <Directory Id='INSTALLDIR' Name='MyWebSetup'></Directory> 
    </Directory> 
</Directory> 

를 wwwroot에 설정했다. 사용자가 'MyWebSetup'이외의 다른 이름을 입력하면 'MyWebSetup1'이라고 말한 다음 IIS에서 'MyWebSetup1'이라는 가상 디렉터리와 'MyWebSetup'이라는 디렉터리가 나열됩니다. 이제 내가 원하는 것은 Name = 'MyWebSetup'이라는 사용자 입력 이름으로 'MyWebSetup'을 가져와야한다는 것입니다. 이 작업을 수행하기 위해 사용자 지정 작업과 다른 많은 작업을 시도했지만 아무 쓸모가 없었습니다. 내가 Wix를 처음 접했을 때 누군가가 나에게 아주 명확한 해결책을 제공해 줄 수 있기를 바랍니다. 어떤 도움을 주셔서 감사합니다. 감사합니다.

답변

0

installdir의 이름을 '.'과 함께 사용하여이 문제를 해결할 수 있습니다. 그런 다음 setdirectory를 사용하여 installdir의 이름을 동적으로 설정합니다. 컴파일하는 동안 이름이 '.'로 전달되면 컴파일러는 단지 그것을 무시하고, 나중에 installdir 이름을 전달하면 그 이름이 설정됩니다.

<Directory Id='INSTALLDIR' 
      Name='.'> 

다음과 같이 setdirectory이 전달됩니다를 다음과 같이

INSTALLDIR 이름

통과해야한다. [VIRTUALDIR]은 설치 중에 사용자가 수락 한 가상 디렉터리의 이름입니다.

<SetDirectory Id="INSTALLDIR" Sequence="execute" Value="[IISROOT][VIRTUALDIR]\">NOT Installed</SetDirectory> 

누군가에게 도움이되기를 바랍니다.

3

비슷한 문제가 있지만 [INSTALLDIR], BIN 및 Service 폴더 아래에 다른 폴더가 있습니다.

그런 다음 실행 순서

<SetDirectory Id="INSTALLDIR" Sequence="execute" Value="[IISROOTPATH][VIRTUALDIR]">NOT Installed</SetDirectory> 
<SetDirectory Id="SERVICEFOLDER" Sequence="execute" Value="[INSTALLDIR]\Services">NOT Installed</SetDirectory> 
<SetDirectory Id="INSTALLDIRBIN" Sequence="execute" Value="[INSTALLDIR]\bin">NOT Installed</SetDirectory> 

디렉토리 구조에 CostFinalize 전에 실행 SetDirectory과 디렉토리 값을 설정 레지스트리

<Property Id="IISROOTPATH"> 
    <RegistrySearch Id="FindIISRootPath" Root="HKLM" Key="SOFTWARE\Microsoft\InetStp" Name="PathWWWRoot" Type="directory" /> 
</Property> 

에서 IIS 루트 경로를 찾기

<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="IISROOTPATH"> 
    <Directory Id="INSTALLDIR" Name="MyWebSetup"> 
     <Directory Id="INSTALLDIRBIN" Name="Bin"> 
      <!-- BIN Dicrectory --> 
     </Directory> 
     <Directory Id="SERVICEFOLDER" Name="Services"> 
      <!-- SERVICE FILES --> 
     </Directory> 
    </Directory> 
    </Directory> 
</Directory> 

또 다른 similar question입니다.