7

作成した IIS アプリケーション プールのログ フォルダーにアクセス許可を設定する必要があります。アクセス許可を設定するコード:

<CreateFolder Directory="SiteLogsFolder">
    <util:PermissionEx User="Everyone" Read="yes" GenericRead="yes"/>
    <util:PermissionEx User="[IisSiteUser]" GenericRead="yes" GenericWrite="yes" GenericExecute="yes" Delete="yes" DeleteChild="yes"/>
</CreateFolder>

<CustomAction Id="SetIis6SiteUser" Property="IisSiteUser" Value="NT AUTHORITY\NetworkService"/>
<CustomAction Id="SetIis7SiteUser" Property="IisSiteUser" Value="IIS AppPool\[SITE_APP_POOL]"/>

<InstallExecuteSequence>
  <Custom Action="SetIis7SiteUser" Before="InstallInitialize">IISMAJORVERSION>="#7"</Custom>
  <Custom Action="SetIis6SiteUser" Before="InstallInitialize">IISMAJORVERSION="#6"</Custom>
</InstallExecuteSequence>

これは、Windows Server 2003 上の IIS 6 では正常に機能しますが、Windows Server 2008 上の IIS 7.5 では失敗します。次のエラーが表示されます。

ExecSecureObjects:  Error 0x80070534: failed to get sid for account: IIS AppPool\MyAppPool

調査の詳細:

  • 「IIS APPPOOL」ドメインも試しましたが、結果は同じでした。
  • また、User 属性にマージする代わりに、PermissionEx 要素の Domain プロパティと User プロパティの両方を設定しようとしました。再び同じエラー。
  • PermissionEx での Active Directory アカウントの使用は正常に機能します。また、Active Directory アカウントが設定されている場合、IIS サイト プールで正常に動作します。
  • 別の AppPool のアクセス許可を設定しようとすると (IIS AppPool\DefaultAppPool など、インストーラーによる作成ではなく)、すべて正常に動作します。この問題は、インストーラーによって作成された AppPool のアクセス許可を設定した場合にのみ発生します。
  • ConfigureIIs、SchedSecureObjects、および ExecSecureObjects のシーケンスを確認し、ConfigureIIs を他の 2 つよりも先に強制的に実行しようとしました (このスレッドで推奨されていました)。残念ながら、それも役に立ちませんでした。
4

2 に答える 2

4

WIX プロジェクトを x86 としてビルドしていたときに、この問題が発生しました。ConfigureIIs の前に SchedSecureObjects と ExecSecureObjects をスケジュールすることで解決しました。

<Custom Action="SchedSecureObjects" After="ConfigureIIs" />
<Custom Action="ExecSecureObjects" After="ConfigureIIs" />

プロジェクトをx64としてビルドし始めたときに、問題が再び発生しました。今回は、ConfigureIIs の前にも 64 ビット アクションをスケジュールする必要がありました。

<Custom Action="SchedSecureObjects_x64" After="ConfigureIIs" />
<Custom Action="ExecSecureObjects_64" After="ConfigureIIs" />
<Custom Action="SchedSecureObjects" After="ConfigureIIs" />
<Custom Action="ExecSecureObjects" After="ConfigureIIs" />
于 2016-04-25T15:06:31.920 に答える