2012-09-04 6 views
4

IIS 7에 두 개의 웹 응용 프로그램을 설치하는 MSI 설치 프로그램을 작성하기 위해 Wix 3.5를 사용하고 있습니다. 사용자는 "기본 웹 사이트"또는 다른 기존 응용 프로그램 IIS의 웹 사이트. 설치 프로그램은 IIS에서 두 개의 웹 응용 프로그램을 만들어 설치하는 동안 올바르게 작동합니다. 문제는 제품을 제거한 후에 하나의 응용 프로그램이 제거되었지만 다른 하나는 IIS 관리자에 남아 있기 때문에 직접 삭제해야한다는 것입니다. 웹 응용 프로그램과 관련된 모든 파일이 제거되고 구성 요소도 제거되지만 IIS 웹 응용 프로그램은 남아 있습니다. 설치 프로그램이 x86 및 x64 대상 아키텍처 모두에 대해 컴파일됩니다. Windows Server 2008 R2에서 설치 프로그램을 테스트하고 있습니다.Wix가 IIS 웹 응용 프로그램을 제거하지 않습니다.

참고 :

  • 문제는 64 Windows Server 2008 R2의 발생합니다. x86에서 응용 프로그램은 IIS에서 정확하게 제거되었습니다.
  • 두 웹 사이트가 동일한 웹 사이트 아래에 설치되어있는 경우에만 문제가 발생합니다 (하나는 제거되고 다른 하나는 남음).
  • 3 개의 웹 응용 프로그램을 설치하려고 시도했지만 두 개가 제거되고 세 번째 웹 페이지가 남아 있음을 발견했습니다. 리 마케팅 웹 응용 프로그램은 Product.wxs에 정의 된 순서에 따라 다릅니다.
  • 제거하는 동안 빈 속성을 확인했지만 그게 아닙니다.
  • WebService 응용 프로그램에서 "iis : WebApplication"태그 요소를 제거하면 가상 디렉터리가 IIS에서 제거됩니다.

내가 뭘 잘못하고 있는지 알 수 없습니다. Stackoverflow에 대한 많은 기사를 읽었지만이 문제를 발견하지 못했습니다. 문제에 대한 귀하의 도움이나 안내에 정말로 감사드립니다.

이것은 사이트의 첫 번째 게시물이므로 실수 한 경우 귀하의 사면을 부탁드립니다. 나는이 문제에 대한 해결책을 오랫동안 찾고 있었고이 문제가있는 사람을 찾지 못했습니다. 어쩌면 내 Wix XML 코드에 문제가있을 수 있습니다.

Product.wxs의 관련 부분 :

<Directory Id="TARGETDIR" Name="SourceDir"> 
     <!-- Program Files (x86) --> 
     <Directory Id="ProgramFilesFolder">    
      <Directory Id="INSTALLDIR_x86" Name="MyApplications">         
       <!-- Web Service IIS WebAPP --> 
       <Directory Id="WebServicesDIR" Name="MyWebApp1 5.2"> 
        <!-- Windows Server 2008 and Vista Application pool --> 
        <Component Id="WebReportingAppPool" Guid="{SOME_GUID}" DiskId="1" KeyPath="yes" Win64="no"> 
         <!-- Define Application Pool --> 
         <iis:WebAppPool Id="WebServicesAppPool" Name="Web Reporting 5.2" Identity="networkService" ManagedPipelineMode="integrated" ManagedRuntimeVersion="v2.0" /> 
         <!-- remove WebServicesDIR folder on uninstall --> 
         <RemoveFolder Id="WebServicesDIR" On="uninstall" /> 
        </Component> 
        <!-- Web App 1 Virtual Directory --> 
        <Component Id="App1_VirtualDirectory" Guid="{SOME_GUID2}" DiskId="1" KeyPath="yes" Win64="no"> 
         <!-- Virtual directory --> 
         <iis:WebVirtualDir Id="App1_WebVirtualDirectory" Alias="WebReportingServices_1" Directory="WebServicesDIR" WebSite="IWSTargetWebSite"> 
          <!-- Web Application --> 
          <iis:WebApplication Id="WebServicesWebApp" Name="WebReportingServices-5.2" WebAppPool="WebServicesAppPool">         
           <iis:WebApplicationExtension Extension="dll" CheckPath="yes" Script="yes" Executable="[#FIsapi_dll]" Verbs="GET,HEAD,POST" /> 
           <iis:WebApplicationExtension Extension="srf" CheckPath="yes" Script="yes" Executable="[#FIsapi_dll]" Verbs="GET,HEAD" /> 
          </iis:WebApplication> 
          <!-- Properties --> 
          <iis:WebDirProperties Id="WebServicesWebDirProp" Read="yes" LogVisits="yes" Index="yes" Script="yes" Execute="no" DefaultDocuments="default.htm" BasicAuthentication="no" PassportAuthentication="no" DigestAuthentication="no" IIsControlledPassword="no" WindowsAuthentication="yes" /> 
         </iis:WebVirtualDir> 
         <!-- indicate the application is installed --> 
         <RegistryValue Root="HKLM" Key="Software\MyCompany\WebServices-5.2" Name="installed" Type="integer" Value="1" /> 
        </Component> 
       </Directory>               
      </Directory> 
     </Directory>      
    </Directory> 

    <Directory Id="WebTaskFolder" Name="Web Tasks 4.3"> 
      <!-- Application pool user --> 
      <Component Id="IWAApplicationPoolUser" Guid="{SOME_GUID3}" DiskId="1" Permanent="yes" Transitive="yes"> 
       <!-- do not anything on uninstall/upgrade/reinstall --> 
       <Condition>NOT Installed AND NOT UPGRADE AND NOT (REINSTALL ~= "ALL")</Condition> 
       <CreateFolder /> 
       <!-- Application Pool and anonymous User --> 
       <util:User Id="IWAApplicationPoolAccount" Domain="[IWA_APP_POOL_DOMAIN]" Name="[IWA_APP_POOL_USERNAME]" Password="[IWA_APP_POOL_PASSWORD]" CreateUser="no" UpdateIfExists="no" RemoveOnUninstall="no">      
        <util:GroupRef Id="IISGroup" /> 
       </util:User> 
      </Component> 
      <!-- Windows Server 2008 and Vista Application pool --> 
      <Component Id="IWAApplicationPool" Guid="{Guid Here}" DiskId="1" KeyPath="yes"> 
       <!-- Define Application Pool --> 
       <iis:WebAppPool Id="IWAWebAppPool" Name="Web Tasks 4.3" Identity="other" User="IWAApplicationPoolAccount" ManagedPipelineMode="integrated" ManagedRuntimeVersion="v2.0" /> 
       <!-- remove folder on uninstall --> 
       <RemoveFolder Id="WebTaskFolder" On="uninstall" />     
      </Component> 
      <!-- Virtual Directory --> 
      <Component Id="WebTaskVirtualDir" Guid="{Guid here}" DiskId="1" KeyPath="yes">     
       <iis:WebVirtualDir Id="IWAWebVirtualDir" Alias="WebTasks4.3" Directory="WebTaskFolder" WebSite="IWATargetWebSite"> 
        <!-- Web Application --> 
        <iis:WebApplication Id="WebTasksVirtualDirectoryWebApplication" Name="WebTasks6.3" WebAppPool="IWAWebAppPool" /> 
        <!-- Properties --> 
        <iis:WebDirProperties Id="IWAVirtualDirectoryWebDirProperties" AnonymousAccess="yes" AnonymousUser="IWAApplicationPoolAccount" Read="yes" LogVisits="yes" Index="yes" Script="yes" Execute="no" DefaultDocuments="default.aspx" BasicAuthentication="no" PassportAuthentication="no" DigestAuthentication="no" IIsControlledPassword="no" WindowsAuthentication="yes" /> 
       </iis:WebVirtualDir> 
       <!-- indicate the application is installed --> 
       <RegistryValue Root="HKLM" Key="Software\MyCompany\WebTasks-4.2" Name="installed" Type="integer" Value="1" />     
      </Component>         
    </Directory>         
    <!-- Add Virtual Directory to IWSTargetWebSite --> 
    <iis:WebSite Id='IWSTargetWebSite' Description="WebTasks WebApp" Directory="WebServicesDIR" SiteId="[IWS_TARGET_WEBSITE]"> 
     <iis:WebAddress Id="IWerbServiceWebAddress" IP="*" Port="80" /> 
    </iis:WebSite> 
    <!-- Add Virtual Directory to IWATargetWebSite --> 
    <iis:WebSite Id='IWATargetWebSite' Description="WebServices WebApp" Directory="WebTaskFolder" SiteId="[IWA_TARGET_WEBSITE]"> 
     <iis:WebAddress Id="IWebTaskWebAddress" IP="*" Port="80" /> 
    </iis:WebSite> 
+0

나는 비슷한 문제가 있습니다. 설치 프로그램은 자식 가상 디렉터리가있는 하나의 별도 웹 사이트를 만듭니다. UAC가 사용되는 경우 Windows Server 2008 R2에서 원래 설치 프로그램을 사용하여 제거되지 않습니다. 흥미로운 세부 사항 : 제어판에서 제거를 실행하면 사이트가 성공적으로 제거됩니다. 원래 설치 관리자를 직접 실행하는 경우에만 문제가 발생합니다. 이 세부 정보가 도움이 되었기를 바랍니다. –

답변

0

나는 당신의 기능 또는 제품 요소를 볼 수 없습니다. 이 구성 요소를 1 개의 MSI 또는 2 개의 MSI로 구성하고 있습니까?

일반적으로 설치 프로그램 로그를 읽으면 제거시 남아있는 구성 요소가 있는지 확인하십시오. 나는 이것을 공유 구성 요소/다중 인스턴스 설치에서 많이 봅니다. 해결 방법은 구성 요소에 가짜 텍스트 파일을 제공하고 키 파일로 표시하고 구성 요소를 공유로 표시하는 것입니다.

기타 추측 이외에는 자세한 답변이 필요합니다.

+0

안녕하세요. 답변 해 주셔서 감사합니다. 나는 잠시 동안 로그를 검사 해왔고 구성 요소가 제거 요청을 받고 제거되었음을 발견했습니다. (Request : absent, Action : absent) 파일이 제거되고 모든 것이 제거되지만 WebApp는 IIS 관리자 콘솔에 남아 있습니다.두 가지 기능이 있으며 각각은 모든 구성 요소가있는 웹 애플리케이션을 설치합니다. – Herno

+0

또한 동일한 소스 코드에서 2 MSI로 모든 것을 구축하고 있습니다. MyProduct-x86.msi를 생성하기 위해 한 번 컴파일하고 MyProduct-x64.msi를 얻기 위해 초를 컴파일합니다. – Herno

+0

둘 다 설치 하시겠습니까? 아마도 구성 요소 참조 카운트를 망칠 수있는 구성 요소 규칙 위반이 발생하여 구성 요소/리소스 (IIS 메타)를 완전하게 제거하지 못하게됩니다. –

관련 문제