Web サイトをセットアップするインストーラーがあります。インストーラーは、WIX 3.5 を使用して実装されています。コンポーネントのインストール サイトは次のとおりです。
<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 に残ります。これは、Windows Server 2008 R2 (IIS 7.5) で UAC が有効になっている場合にのみ発生し、インストーラー ファイルを実行して最初のダイアログで [削除] オプションを選択してアンインストールする場合にのみ発生します。これをいくつかの環境 (Windows Server 2003、2003 R2、2008 x86、2008 x64、2008 R2) でテストしたところ、問題が存在する環境は 2008 R2 だけのようです。他の調査では、UAC を無効にすると問題が解決することが示されました。コントロール パネルから製品をアンインストールするか、アンインストール パラメータを指定してコマンド ラインから同じ msi を実行しても、この問題は発生しません。したがって、問題が存在する非常に狭いケースがありますが、それでも重要です。
問題は UAC の制限によるものであるとほぼ確信しています。UAC ダイアログが表示されて権限が付与される前に、インストーラーがサイトをアンインストールしようとする可能性があります。しかし、どうすれば修正できるのか理解できません。どんな助けでも大歓迎です。
さまざまな環境にサイトをインストールするためのより良いアプローチがあれば、それも喜んでお聞きします - 私の発明したホイールはおそらく最高ではありません =)。
アンインストール ログが必要な場合は、次の場所にあります。