2012-10-09 116 views
1

我有安裝程序的哪個設置網站。安裝程序使用WIX 3.5實施。該組件安裝網站在下面的清單:WIX卸載不會刪除Windows服務器2008 R2上的網站

<DirectoryRef Id="TARGETDIR"> 
    <Directory Id="WWWROOT"> 
    </Directory> 
    </DirectoryRef> 

    <Property Id="WWWROOT" Value="C:\inetpub\wwwroot"> 
    <RegistrySearch Id="FindInetPubFolder" Root="HKLM" Key="SOFTWARE\Microsoft\InetStp" Name="PathWWWRoot" Type="directory" /> 
    </Property> 

    <Component Id="CC_AppPoolConfigure" Guid="YOURGUID-9558-4CAE-A928-EACD27D69A0D" KeyPath="yes" Permanent="no"> 
    <iis:WebAppPool Id="CC_AppPool" Name="[SITE_APP_POOL]" ManagedRuntimeVersion="v4.0" ManagedPipelineMode="integrated" /> 
    </Component> 

    <Component Id="CC_Iis6SiteConfigure" Guid="YOURGUID-13E2-4980-A55A-E37E3E06FB67" KeyPath="yes" Permanent="no"> 
    <Condition><![CDATA[Installed OR (IISMAJORVERSION AND (IISMAJORVERSION = "#6"))]]></Condition> 
    <iis:WebSite Id="CC_WebSite_IIS6" Description="[SITE_NAME]" 
       AutoStart="yes" StartOnInstall="yes" ConfigureIfExists="yes" 
       Directory="WWWROOT" ConnectionTimeout="360" SiteId="[SITE_ID]"> 
     <iis:WebVirtualDir Id="CC_Site_IIS6_VDir" Directory="SITE_INSTALLDIR" Alias="[SITE_VIRT_DIR]"> 
     <iis:WebApplication Id="CC_IIS6_WebApp" Name="[SITE_APP_NAME]" WebAppPool="CC_AppPool" > 
      <iis:WebApplicationExtension Verbs="GET,HEAD,POST" CheckPath="no" Script="yes" Executable="[FRAMEWORKROOT]v4.0.30319\aspnet_isapi.dll" /> 
     </iis:WebApplication> 

     <iis:WebDirProperties Id="CC_Site_IIS6_Properties" WindowsAuthentication="yes" AnonymousAccess="yes"/> 
     </iis:WebVirtualDir> 

     <iis:WebAddress Id="CC_Site_IIS6_Header_Bindings" Port="[SITE_PORT]" Header="[SITE_HEADER]" /> 
    </iis:WebSite> 
    </Component> 

    <Component Id="CC_IIS6_Config_Extentions" Guid="YOURGUID-009A-4545-8D4D-EC5437D7332F" KeyPath="yes" Permanent="yes"> 
    <Condition><![CDATA[IISMAJORVERSION AND (IISMAJORVERSION = "#6")]]></Condition> 
    <iis:WebServiceExtension Id="CC_ExtensionASP4" Group="ASP.NET v4.0.30319" Allow="yes" File="[FRAMEWORKROOT]v4.0.30319\aspnet_isapi.dll" Description="ASP.NET v4.0.30319"/> 
    </Component> 

    <Component Id="CC_Iis7Site" Guid="YOURGUID-1738-476A-945F-A97721F5ECFC" KeyPath="yes" Permanent="no"> 
    <Condition><![CDATA[IISMAJORVERSION AND (IISMAJORVERSION >= "#7")]]></Condition> 
    <iis:WebSite Id="CC_WebSite_IIS7" Description="[SITE_NAME]" 
       AutoStart="yes" StartOnInstall="yes" ConfigureIfExists="yes" 
       Directory="WWWROOT" ConnectionTimeout="360" SiteId="[SITE_ID]"> 

     <iis:WebVirtualDir Id="CC_Site_IIS7_VDir" Directory="SITE_INSTALLDIR" Alias="[SITE_VIRT_DIR]"> 
     <iis:WebApplication Id="CC_IIS7_WebApp" Name="[SITE_APP_NAME]" WebAppPool="CC_AppPool"></iis:WebApplication> 

     <iis:WebDirProperties Id="CC_Site_IIS7_Properties" WindowsAuthentication="yes" AnonymousAccess="yes"/> 

     </iis:WebVirtualDir> 

     <iis:WebAddress Id="CC_Site_IIS7_Header_Binding" Port="[SITE_PORT]" Header="[SITE_HEADER]" /> 

    </iis:WebSite> 
    </Component> 

正如你所看到的,網站需要在IIS 6安裝IIS 7和IIS 7.5。在所有列出的環境中安裝都不錯。安裝程序執行每臺計算機的安裝。我使用已啓用的自定義操作來啓用所需的IIS組件等,因此安裝程序首先運行時沒有管理權限,並在點擊「安裝」按鈕時詢問它們。

但是有卸載產品使用與安裝它相同的安裝程序文件出現問題 - 站點和虛擬目錄留在IIS上。只有在啓用UAC的情況下並且僅當通過運行安裝程序文件進行卸載並在第一個對話框中選擇選項「刪除」時,它纔會出現在Windows Server 2008 R2(IIS 7.5)上。我在少數環境(Windows Server 2003,2003 R2,2008 x86,2008 x64,2008 R2)上測試過它,它看起來像2008 R2是存在問題的唯一環境。其他調查顯示禁用UAC解決了這個問題。通過控制面板卸載產品或使用卸載參數從命令行運行相同的msi也不存在此問題。因此,存在問題的情況非常狹窄,但仍然很重要。

我幾乎可以肯定,這個問題是由於UAC的限制:可能安裝程序試圖卸載網站之前UAC對話框顯示授予權限。但我不明白我該如何解決它。任何幫助將不勝感激。

如果你有更好的方法來在各種環境下安裝網站,我也很樂意聽到它 - 我發明的輪子可能不是最好的=)。

如果需要卸載日誌,它是here

回答

2

我們有同樣的問題,並通過改變包含Web站點和應用程序的名稱,以安全=「是」性能解決了這個問題。在你的情況下,確保:

<Property Id="SITE_NAME" Secure="yes"> 
<Property Id="SITE_APP_NAME" Secure="yes"> 
+0

偉大和簡單的答案爲8個月存在的錯誤!謝謝! –

相關問題