1

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 ダイアログが表示されて権限が付与される前に、インストーラーがサイトをアンインストールしようとする可能性があります。しかし、どうすれば修正できるのか理解できません。どんな助けでも大歓迎です。

さまざまな環境にサイトをインストールするためのより良いアプローチがあれば、それも喜んでお聞きします - 私の発明したホイールはおそらく最高ではありません =)。

アンインストール ログが必要な場合は、次の場所にあります

4

1 に答える 1

2

同じ問題があり、Web サイトとアプリケーション名を含むプロパティを Secure="yes" に変更することで解決しました。あなたの場合、次のことを確認してください。

<Property Id="SITE_NAME" Secure="yes">
<Property Id="SITE_APP_NAME" Secure="yes">
于 2013-05-24T10:32:17.377 に答える