2

Enable32BitAppOnWin64IIS6 の WiX でメタベース プロパティを取得する方法はありますか?

Web アプリケーションをインストールしてaspnet_regiis.exeいて、IIS が 32 ビット モードに設定されている 64 ビット マシンで実行する必要があります。exeへのパスを取得するには、次を使用しています。

<!--<?if $(var.Platform) = x64 ?>-->
    <SetProperty Id="ASPNETREGIIS" Sequence="execute" Before="ConfigureIIs" Value="[NETFRAMEWORK20INSTALLROOTDIR64]aspnet_regiis.exe" />
<!--<?else ?>
    <SetProperty Id="ASPNETREGIIS" Sequence="execute" Before="ConfigureIIs" Value="[NETFRAMEWORK20INSTALLROOTDIR]aspnet_regiis.exe" />
<?endif ?>-->

ただし、32 ビット モードが有効になっている場合、プラットフォームに依存して exe の正しいパスを取得することはできません。

4

1 に答える 1

3

これを行うための WiX の標準的な方法はありません。カスタム アクションが必要になります。これは直接の CA である必要があり、条件で使用するプロパティを設定します。これは、必要なことを行うサンプルコードです。

 static bool IsIIS32bit()
 {
   var appPools = new DirectoryEntry("IIS://localhost/w3svc/AppPools");
   int enable32Bit;

   try
   {
     enable32Bit = (int)appPools.InvokeGet("Enable32bitAppOnWin64");
   }
   catch
   {
     enable32Bit = 0;
   }

   return enable32Bit == 1;
 }

サンプルでは、​​ビルド時の変数を使用して 2 つの SetProperty 要素から選択することにも注意してください。これは、プラットフォームごとに 1 つずつ、2 つの MSI パッケージがある場合に機能します。この場合、各 MSI パッケージには正しく設定されたプロパティがあります。ここで追加する要件 (IIS ビットモードのチェック) により、チェックをインストール時に移動する必要があります。したがって、何らかの方法で条件ロジックを作り直す必要があります。

于 2011-10-26T06:10:16.997 に答える