更新:おそらくIISまたはMSIのバージョン依存関係
この構成で問題が発生します。
Windows Server 2008 R2 Standardバージョン6.1(ビルド7600)、IIS 7.5.7600.16385、MSI v5.0.7600.16385
この2番目の構成では、同じMSIが非常に正常に機能します。
Vista Enterprise SP2、IIS 7.0.6000.16386、MSI v4.5.6002.18005
元の質問:
作業中の新しいプロジェクト用にWiXインストーラーパッケージを作成しましたが、WebアプリケーションをIIS7に適切に登録することに関連する未解決の問題が少しあります。
問題は、Webアプリケーションが誤った物理パス資格情報プロパティ値で登録されていることです(このプロパティには、Webアプリノードにフォーカスしてから[詳細設定]ダイアログボックスを開くことにより、IIS7からアクセスできます)。アプリケーションのインストール後、値はユーザー名「name」の「特定のユーザー」に設定されます。もちろん、そのようなユーザーは私の環境には存在しません。そのため、ブラウザーでWebアプリを開こうとすると、500.19で失敗します。
そのため、アプリをインストールした後、IISを開き、Physical Path Credentialsプロパティを「applicationuser(pass-through authentication)」にリセットして、アプリケーションプールのIDを使用してWebアプリに仮想ディレクトリへのアクセスを強制する必要があります。このプロパティを手動で変更すると、問題が解決します。
WiXの動作を変更して、値を手動で修復しなくても、物理パスの資格情報がすぐに「アプリケーションユーザー」に設定されるようにする方法を知っている人はいますか?
これは、ソリューションのIIS部分を構成するために使用するフラグメントです。
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:iis="http://schemas.microsoft.com/wix/IIsExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Fragment>
<!-- Install to default web site -->
<iis:WebSite Id="DefaultWebSite" Description='Default Web Site'>
<iis:WebAddress Id="AllUnassigned" Port="80" />
</iis:WebSite>
<DirectoryRef Id="WebSiteContentDir">
<!-- Configuring app pool -->
<Component Id="ApplicationPoolComponent" Guid="{MY-GUID}" KeyPath="yes">
<util:User Id="ApplicationPoolUser" CreateUser="no"
Domain="MYDOMAIN" Name="MYUSER"
Password="MYPWD" />
<iis:WebAppPool Id="ApplicationPool" Name="MyApp" Identity="other" User="ApplicationPoolUser"
ManagedPipelineMode="classic" ManagedRuntimeVersion="v4.0" />
</Component>
<!-- Configuring virtual dir -->
<Component Id="VirtualDirComponent" Guid="{MY-GUID}" KeyPath="yes" >
<iis:WebVirtualDir Id="VirtualDir" Alias="MyApp" Directory="WebSiteContentDir" WebSite="DefaultWebSite">
<iis:WebDirProperties Id="VirtualDirProperties" WindowsAuthentication="yes" />
<iis:WebApplication Id="WebApplication" Name="MyApp" WebAppPool="ApplicationPool" />
</iis:WebVirtualDir>
</Component>
</DirectoryRef>
</Fragment>
</Wix>
Wwはすでに他のプロジェクトでこの問題に遭遇しており、インストール中に自動的に実行されたプロパティ値を修正するPowerShellスクリプトを使用して常に解決しました。WiXに要求された方法でインストールさせる方法があるはずだと私は信じており、答えを見つけたいと思っています。前もって感謝します。