2013-11-20 10 views
7

私はWix/Burnを初めて使用しており、いくつかの基本を理解しようとしています。Wix Bootstrapper(Burn)で再配布可能な.NETをインストールする

<Chain> 
    <PackageGroupRef Id="NetFx40ClientRedist"/> 
    <MsiPackage Id="MyApp" SourceFile="$(var.WixInstaller.TargetPath)" DisplayInternalUI="yes" /> 
</Chain> 

How To: Install the .NET Framework Using Burnによって推奨される:私は、次のチェーンを使用して、必要な.NET 4.0フレームワークをインストールする簡単なブートストラップを持っています。 Webアクセスのないサーバーでもアプリケーションを使用できるため、.netをローカルの再配布可能ファイルからインストールすることが重要です。ブートストラップは非常にうまく動作しているように見え、意図したとおりにフレームワークをインストールします。しかし、setup.exeファイルはアプリケーションとほぼ同じサイズ(< 5 MB)なので、インストール中にフレームワークがまだダウンロードされていると仮定する必要があります。

質問

  1. 、その後、WixNetfxExtensionパッケージの "NetFx40ClientWeb" と "NetFx40ClientRedist" の違いは何ですか?

  2. ローカルの再配布可能なファイルをダウンロードする必要がないように、どのように追加することができますか?

はEDIT:

WiXNetFxExtensionが、その後ダウンロード あなたのバンドルパッケージのためである、 "再頒布可能" と呼ばれるサブディレクトリをチェックします:

私は答えhereを発見したと信じてそれが存在しない場合は そのパス"redist \ dotNetFx40_Client_setup.exe"。これは標準の 書き込み動作です。

+1

redistフォルダをインストーラのローカルマシンにコピーするにはどのような問題がありましたか? –

+0

NetFx40Redistのソースコードの "ExePackage"定義に "SourceFile"属性を追加することで動作するようになりましたが、ソースをハッキングせずにこれを行う方法を知りたいと思います。 –

答えて

1

2つの違いは以下のとおりです。
1. clientWeb - あなたがウェブおよび.NET 4.0がダウンロードされ、その後マシンにインストールされますへの接続を持っている必要がありますを意味します。

2.clientRedist - 再配布可能を意味します - インターネットに接続する必要のない完全なパッケージを意味するので、どのコンピュータにもインストールできます。


再配布可能パッケージを使用する場合は、すばらしいはずです。ここでは.Net 4.5の例があります.Net 4.0では同じですが、diffは再配布可能なパッケージのみです。

<?xml version="1.0" encoding="utf-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension" xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension"> 
    <Bundle Name="Prog" Version="1.0.0.0" Manufacturer="my Corporation" UpgradeCode="*"> 
    <Chain> 
     <!-- TODO: Define the list of chained packages. --> 
     <PackageGroupRef Id="Netfx45FullPackage" /> 
    </Chain> 
    </Bundle> 
    <Fragment> 
    <PackageGroup Id="Netfx45FullPackage"> 
     <ExePackage Id="Netfx45Xxx" Cache="no" Compressed="no" PerMachine="yes" Permanent="yes" Vital="no" InstallCommand="/q" SourceFile="..\SetupProject\dotnetfx45_full_x86_x64.exe" DetectCondition="(Netfx4FullVersion=&quot;4.5.50709&quot;) AND (NOT VersionNT64 OR (Netfx4x64FullVersion=&quot;4.5.50709&quot;))" InstallCondition="(VersionNT &gt;= v6.0 OR VersionNT64 &gt;= v6.0) AND (NOT (Netfx4FullVersion=&quot;4.5.50709&quot; OR Netfx4x64FullVersion=&quot;4.5.50709&quot;))" /> 

     <MsiPackage Id="MyProg" Cache="no" Compressed="no" DisplayInternalUI="yes" Vital="yes" SourceFile="$(var.installerPath)\MyProgCore.msi" /> 
    </PackageGroup> 
    </Fragment> 
</Wix> 
+0

.Netの上位バージョンがインストールされている場合、どのように検出してインストールをスキップできますか? – jero2rome

+0

DetectCondition = "(Netfx4FullVersion = " 4.5.50709 ")AND(NOT VersionNT64 OR(Netfx4x64FullVersion = " 4.5.50709 "))は、" – Gilad

+0

うん、私は、この条件を使用しています。しかし、4.6がインストールされているシステムでは、burnはインストーラを起動しようとします。次に.NetインストーラのUIから手動で.Netインストーラを終了する必要があります。 – jero2rome

関連する問題