4

アプリケーションとサービスをインストールするための Wix インストーラーとブートストラップ アプリケーションがあります。前提条件として、.NET 2.0 SP2 Framework がインストールされている必要があり、次のコードニペットを使用してそれを検出しようとしました。

    <Chain>
      <PackageGroupRef Id='Netfx2Package' />
      <MsiPackage SourceFile="..\Wix.CHL7.Dispatcher.Service.AZHF\bin\Debug\Wix.CHL7.Dispatcher.Service.AZHF.msi" Id="Wix.CHL7.Dispatcher.Service.AZHF_PackageId" Cache="yes" Visible="no">
        <MsiProperty Name="INSTALLDIR" Value="[INSTALLPATH]" />
        <MsiProperty Name="WixAppFolder" Value="[INSTALLSCOPE]"/>

      </MsiPackage>
    </Chain>
  </Bundle>

  <Fragment>
    <WixVariable Id="WixMbaPrereqPackageId" Value="Netfx2Package" />
    <WixVariable Id="WixMbaPrereqLicenseUrl" Value="NetfxLicense.rtf" />      

    <PackageGroup Id="Netfx2Package">
      <ExePackage Id="Netfx2Exe"
                  Cache="no"
                  Compressed="no"
                  PerMachine="yes"
                  Permanent="yes"
                  Vital="yes"
                  SourceFile="C:\Installation\Wix.CHL7.Dispatcher.Service.Bootstrapper\lib\NetFx20SP2_x86.exe"
                  DownloadUrl="http://download.microsoft.com/download/c/6/e/c6e88215-0178-4c6c-b5f3-158ff77b1f38/NetFx20SP2_x86.exe"
                  DetectCondition="NETFRAMEWORK20"
                  InstallCondition="FALSE"/>
    </PackageGroup>
  </Fragment>

.NET 2.0 SP2 がインストールされている (レジストリで確認した) マシンでインストーラーを実行すると、インストーラーはフレームワークをダウンロードしてインストールしようとします。

DetectCondition が正しくないと思いますが、問題の正しい解決策が見つからないようです。では、ブートストラップに .NET 2.0 SP2 がインストールされているかどうかを検出するにはどうすればよいでしょうか?

前もって感謝します!

W

4

1 に答える 1

5

NetFxExtension を適切に参照していることを確認してください。

ソース: WixNetfxExtension

WixNetfxExtension プロパティの使用 MSI で WixNetfxExtension プロパティを使用するには、次の手順を使用します。

MSI で使用する上記の項目の PropertyRef 要素を追加します。MSI リンク プロセスに WixNetfxExtension を含めるには、light.exe を呼び出すときに -ext コマンド ライン パラメータを追加します。

例えば:

<PropertyRef Id="NETFRAMEWORK20" />

NETFRAMEWORK20_SP_LEVELまた、 SP2 が必要な場合は、プロパティを使用して適切なサービス パック レベルを取得することもできます。トラブルシューティングを行うときは、インストール ログをチェックして、プロパティの値がどのように設定されているかを確認します。

于 2012-12-05T19:05:33.913 に答える