5

Wix 3.5 を使用して、IIS 7 に 2 つの Web アプリケーションをインストールする MSI インストーラーを作成しています。ユーザーは、アプリケーションごとに、「既定の Web サイト」にインストールするか、IIS の他の既存の Web サイトにインストールするかを選択できます。インストーラーは、IIS で 2 つの Web アプリケーションを作成することにより、INSTALL 中に正しく動作します。問題は、製品をアンインストールした後、1 つのアプリケーションが削除され、もう 1 つのアプリケーションが IIS マネージャーに残っているため、手動で削除する必要があることです。WebApp に関連するすべてのファイルとコンポーネントも削除されますが、IIS WebApp は残されます。インストーラーは、x86 と x64 の両方のターゲット アーキテクチャ用にコンパイルされています。Windows Server 2008 R2 でインストーラーをテストしています。

ノート:

  • この問題は、x64 Windows Server 2008 R2 でのみ発生します。x86 では、両方のアプリケーションが IIS から正しく削除されます。
  • この問題は、両方のアプリケーションが同じ Web サイトにインストールされている (一方が削除され、もう一方が取り残されている) 場合にのみ発生します。
  • 3 つの Web アプリケーションをインストールしようとしましたが、2 つが削除され、3 つ目が取り残されていることがわかりました。リマイニング Web アプリは、Product.wxs で定義された順序に依存します。
  • アンインストール中に空のプロパティを確認しましたが、そうではありません。
  • 「iis:WebApplication」タグ要素を WebService App から削除すると、仮想ディレクトリが 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>
4

1 に答える 1

0

機能要素または製品要素が表示されません。これらのコンポーネントを 1 つの MSI または 2 つの MSI に構築していますか?

一般的に言えば、インストーラ ログを読んで、アンインストール時にコンポーネントが残っていないかどうかを確認します。これは、共有コンポーネントや複数インスタンスのインストールでよく見られます。解決策としては、コンポーネントに偽のテキスト ファイルを与え、それをキー ファイルとしてマークし、コンポーネントを共有としてマークすることです。

推測以外では、詳細な回答にはより多くの情報が必要です。

于 2012-09-04T11:47:02.067 に答える