5

BurnとWIX3.6を使用して、アプリのインストーラーを作成しようとしています。インストーラーは、MicrosoftのWebサイトから.NET3.5SP1をインストールできる必要があります。私はWIX3.5で作成された作業中のWIXプロジェクトで作業しています。.NET 3.5 SP1が以前にターゲットマシンにインストールされている場合は、機能します。最初のステップはバンドルを作成することであるように思われるので、Product.wxsファイルに要素を追加しました。これを行うと、スキーマでが無効であるというエラーが表示されます。代わりに、が必要です。それは、すべての製品定義をフラグメントに転送する必要があることを意味しますか?私がそれをどのように行うのかは不明です。WixNetfxExtensionは.NET4.0および4.5のPackageRefのみを提供するため、事態はさらに複雑になります。アプリをそのバージョンのフレームワークに切り替える準備ができていません。では、バンドル内のWebソースから.NET 3.5 SP1を取得するにはどうすればよいですか?

これをどこでも行う実例はありますか?

4

1 に答える 1

11

どこで何かをしようとしているのかがはっきりしないので、最初から始めます。

新しいWixバーンブートストラッパープロジェクトを作成します。これは、依存関係がインストールされ、既存のWix3.5インストーラーが生成される場所です。

.net 3.5 SP1フルパッケージをダウンロードし、ダウンロードに使用された直接URLをメモします。

(wix 3.6 bin dirで)heat.exeを使用して、次のコマンドを実行します。これにより、.netインストーラーの詳細を含むWXSファイルが生成されます。

heat.exe payload [path_to_net_installer] -o [path_to_wxs]

this.willはwxsであなたをフォローします:

<RemotePayload CertificatePublicKey="F321408E7C51F8544B98E517D76A8334052E26E8"
               CertificateThumbprint="D57FAC60F1A8D34877AEB350E83F46F6EFC9E5F1" 
               Description=".NET Framework 3.5 Setup"
               Hash="3DCE66BAE0DD71284AC7A971BAED07030A186918" 
               ProductName=".NET Framework 3.5" 
               Size="242743296" 
               Version="3.5.30729.1" />

これを要素の子としてブートストラッパープロジェクトに追加し、ExePackage前に保存したダウンロードURLで要素を更新します。これにより、.netインストーラーが自動的にダウンロードされるか、bootstrapperexeの横に配置して検出されます。

インストーラー用の.netExePackageとMsiPackageを含むチェーンバンドルに作成します。次に、次のような結果になります(必要な属性の多くは、入力する必要があります!):

 <Bundle Name="$(var.SkuName)"
         Copyright="$(var.Copyright)"
         Manufacturer="$(var.Manufacturer)"
         Version="$(var.ProductVersion)"
         UpgradeCode="$(var.UpgradeCode)">
     <Chain>
         <ExePackage Id="dotNetFX3.5">
             <RemotePayload />
         </ExePackage>
         <MsiPackage Id="MyMsi" />
     </Chain>
  </Bundle>

ビルドすると、msiが含まれている大きなexeが作成されます。圧縮しない場合は、msiを実行するexeが実行されます(同じフォルダーにある必要があります)。

于 2012-09-28T07:07:14.947 に答える