18

インストールが必要な場合、.NET Framework 4.0 をインストールするためのバンドルを作成しようとしています。同様の質問があることは承知していますが、すべての回答は単なる断片であり、どのファイルに入れるか、どのように .wxs ファイルにインポートするかについては説明していません。

これは、Bundle.wxs ファイルにあるものです。複数のエントリ セクションに関するコンパイラの警告が表示されます。

エラー 2 複数のエントリ セクション「{CF06625F-7B6B-4B6E-A24E-FDDCA7CFFFF4}」および「{0D1EE60A-FC4F-4083-8B1E-311E75A67B4C}」が見つかりました。1 つのターゲットに存在できるエントリ セクションは 1 つだけです。

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Bundle UpgradeCode="{C6FF478E-C3DA-4D78-929D-24C3F3307356}" Version="4.0">
    <Chain>
      <PackageGroupRef Id="NetFx40Redist"/>
    </Chain>
  </Bundle>
</Wix>

WiX ページのほとんどのリンクは壊れており、Bundle タグで使用する属性については何も言及されておらず、パッケージ/製品を交換しているようです。バンドルの GUID の設定に関する Wix ページでの言及が見つかりませんでした。それは Wix 3.7 の新機能ですか?

http://wix.sourceforge.net/manual-wix3/install_dotnet.htm

  1. 定義済みの .NET 4.0 PackageGroupRef/PayloadGroupRef の使用方法
  2. Bundle.wxs にある必要がありますか? メインの Product.wxs のどこにインポートされますか?
4

2 に答える 2

23

このエラーは、プロジェクトが次の要素を複数含むファイルでビルドされていることを示しています: ProductModulePatch、。あなたの場合、すでに要素を持っているプロジェクトに要素を含むファイルを追加したようです。これは、現在の WiX ツールセットではサポートされていません。要素を別のプロジェクトに配置する必要があります。PatchCreationBundleBundleProductBundle

したがって、ブートストラップと MSI を作成すると、2 つの .wixproj ファイルが作成されます。最初の .wixproj にはProduct情報が含まれます。2 番目の .wixproj にはBundle情報が含まれ、ビルド順序が正しいように最初の .wixproj へのプロジェクト参照が含まれます。

于 2013-05-03T15:42:56.967 に答える
10

このWix/Bundle要素は Bootstrapper プロジェクトのルートです。Product.wxs と同じプロジェクトには入りません。Visual Studio には、新しい Wix Bootstrapper プロジェクト用のテンプレートがあります。あなたはおそらくそれを作成していません。

次に、バンドルのチェーンで、例のように .NET とアプリケーションの MSI が必要になります。NetFx40Web を使用するには、WixNetfxExtension を参照する必要があります。他の Wix プロジェクトを参照する Wix プロジェクトには定義済みの変数があるため、TargetPath などのプロパティを使用できます。この例では、この Bootstrapper プロジェクトが MyApplicationSetup というセットアップ プロジェクトを参照していると想定しています。

<Chain>
    <PackageGroupRef Id="NetFx40Web"/>
    <MsiPackage Id="MyApplication" SourceFile="$(var.MyApplicationSetup.TargetPath)"/>
</Chain>
于 2013-05-03T14:49:19.227 に答える