2

WiX 3.6を使用して、カスタム.NET BootstrapperApplicationがあり、チェーンに.Net4.0Webインストーラーが含まれています。

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
  <Bundle Name="$(var.BundleProductName)"
      Version="$(var.BundleVersion)"
...
      Compressed="yes" DisableRepair="yes" >

    <BootstrapperApplicationRef Id="ManagedBootstrapperApplicationHost" >
      <PayloadGroupRef Id="MyInstallerUILibs" />
    </BootstrapperApplicationRef>

    <Chain>
      <!-- Install .Net 4 Full -->
      <PackageGroupRef Id="NetFx40Web" />

      <!-- Install my packages -->
      <PackageGroupRef Id="MyPackages" />

    </Chain>
  </Bundle>
</Wix>

.net 4がインストールされていないマシンでインストーラーを実行すると、ユーザーに期待どおりにダウンロードするように求められ、カスタムUIを表示する前に.net4.0を正しくインストールします。ここまでは順調ですね。

私のUIでは、追加のパッケージをインストールする前に、インストールをキャンセル/終了するオプションをユーザーに提供したいと思います。たとえば、ユーザーがEULAに同意しない場合です。

私が見ているのはこれです: .net 4.0のインストールが実行されて完了した場合、BootstrapperApplication内で、計画/適用アクションを実行する前に終了しますが、バンドルは引き続きWindowsの[プログラムの追加と削除]メニューに表示されます。とを呼び出してみましEngine.Quit((int) ActionResult.NotExecuted)Engine.Quit((int) ActionResult.UserExit)が、どちらもARPリストから外れているようです。

注:予想どおり、.net4のインストールもAPRリストに表示されます。

そして私の質問はこれです: バンドルのインストールが停止され、バンドル自体が[プログラムの追加と削除]リストに表示されるべきではないことをWiXエンジンに通知する正しい方法は何ですか?

4

1 に答える 1

1

Burnは、チェーンが開始されるとすぐにARPに登録されるため、ユーザーは、たとえば、チェーン全体に障害が発生することなく、途中で障害が発生したチェーンを再インストールできます。CLRは、前提条件BAからバンドルのチェーンの一部としてインストールされます(CLRがインストールされるまでBAをロードできないため)。

于 2012-09-19T01:23:32.610 に答える