2012-09-21 2 views
1

다음 Wix 코드를 사용하여 IIS에서 WebApplication을 만들고이를 특정 응용 프로그램 풀에 할당합니다.WebAppPool이없는 경우 설치를 실패하는 방법은 무엇입니까?

<iis:WebAppPool Id="AppPool_Wcf" Name="$(var.WCF_APP_POOL)" /> 

<iis:WebSite Id="Web_site" Description="$(var.WEB_SITE_DESCRIPTION)" SiteId="[SITEID]"> 
    <iis:WebAddress Id="Web_Address" Port="*"/> 
</iis:WebSite> 

<DirectoryRef Id="TARGETDIR"> 
    <Directory Id="SITEPATH"> 
     <Directory Id="WCF_VIRT_DIR" Name="$(var.WCF_VIRT_DIR)"> 
      <Component Id="IIS_Wcf" Guid="$(var.deploy.wcf.guid)" KeyPath="yes"> 
       <iis:WebVirtualDir Id="Wcf_VirtualDir" Alias="$(var.WCF_VIRT_DIR)" WebSite="Web_site" Directory="WCF_VIRT_DIR"> 
        <iis:WebApplication Id="Wcf_Application" Name="$(var.WCF_VIRT_DIR)" WebAppPool="AppPool_Wcf" /> 
       </iis:WebVirtualDir> 
      </Component> 
     </Directory> 
    </Directory> 
</DirectoryRef> 

응용 프로그램 풀은 이미 다른 응용 프로그램과 공유되어 있어야합니다.

존재하지 않는 경우 웹 응용 프로그램을 신비한 <Invalid Application Pool> (웹 응용 프로그램 속성에서 볼 수 있음)에 할당하여 설치가 완료됩니다. 응용 프로그램도 작동합니다!

응용 프로그램 풀을 찾을 수없는 경우 어떻게 설치를 실패합니까?

답변

0

이렇게하려면 사용자 지정 작업을 즉시 만들어야합니다. 예를 들어 C#/DTF에서는 다음과 같이 구현할 수 있습니다.

[CustomAction] 
public static ActionResult FailIfAppPoolNotExist(Session session) 
{ 
    DirectoryEntry appPool = new DirectoryEntry(string.Format("IIS://localhost/w3svc/AppPools/{0}", session["APP_POOL_NAME"])); 

    if (appPool == null) 
    { 
    return ActionResult.Failure; 
    } 
    return ActionResult.Success; 
}