2009-07-30 4 views
8

私はWIXにはかなり新しくなっているので、ここでボートが完全に欠落していると私を許しますが、コンポーネント(mwm、cabなど) wxsファイル内から毎回光を再リンクする必要はありません。私が取り組んでいるインストーラには、インストールごとに変更される傾向のあるいくつかの実行可能ファイル、dllファイル、およびconfigファイルがあります。これらのファイルは約5メガバイト分のインストーラになります。私が再利用したい部分は〜350メガバイト分のイメージ/マップ/データベースファイルです。頻繁に変更されることはありませんが、インストーラがビルドされるたびにコンパイル/リンクする必要はありません。キャンドル/ライトをスピードアップするためにWIXコンポーネントを再利用する

マップ用のmwmファイルを作成しようとしましたが、wxs内でそれらを参照すると、光でメインの.msiファイルにリンクされます。 - 時間がかかり

<Media Id="1" Cabinet="media1.cab" EmbedCab="yes" /> 
<Media Id="2" Cabinet="NewRiver.cab" EmbedCab="no" CompressionLevel="none" /> 
... 
<Merge Id="NewRiverDigMap" SourceFile="..\Output\NewRiverDigitalMaps.msm" Language="1033" DiskId="2" /> 

しかしたびに光の実行は、スタンドアローンのCABファイルを再生します:私はマップを保持するために、非組み込みCABファイルをspecifing試してみました。

私は、msiと一緒に配信するZIPファイルを作成し、インストーラでzip抽出を開始することを考えましたが、それは私には邪魔に見えます。彼らはもはや必要がなくなったら、ファイルを削除しておきたい。

他にも私のような操作がありますか?私は断片について読んだことがありますが、それは私が探しているものではないようです。

おかげで、 デビッド

答えて

12

あなたの直感は、絶対的に正しい方向にあなたをリードしています。あなたが探している機能は「キャブキャッシュ」と呼ばれています。あなたはlight.exe、コマンドラインに以下を加えることによってそれを使用します。

-reusecab -cc path\to\directory\for\cabinets 

注:コンパイル(candle.exe)とリンク(light.exeの前半は)非常に迅速に起こるはず。通常、ファイルのすべてに触れ、キャビネットを構築するため、バインディング(light.exeの2番目のもの)は遅いです。キャビネットの構築は最も遅いので、うまくいけば、キャブのキャッシュはあなたのために十分にスピードアップします。

P .:コンパイルに時間がかかる場合は、lit.exeを使用して ".wixlib"を作成できます。私はここで.wixlibsについてもっと知っている:http://robmensching.com/blog/posts/2008/10/10/What-are-.wixlibs-and-why-would-you-use-them

+0

ユーレカ!ちょうど私が探していたもの。キャビネットが埋め込まれていないとうまくいかないようです - 何とか光が.cabファイルを削除してからそれを探します。理想的には、非組み込みキャビネットで動作させたいと思いますが、これは以前よりも少し速くなっています。 –

+0

うーん、その動作はバグのように聞こえる。詳細はバグ(http://wix.sourceforge.net)を開いてください。私たちはWiX v3.5で修正できるはずです。 –

+0

素晴らしいヒント([docs](http://wixtoolset.org/documentation/manual/v3/howtos/general/optimizing_builds.html))をありがとう!私の場合、msiパッケージをビルドする時間は約50秒から10秒に短縮されました(〜200ファイル/〜100MB)。 – CodeFox

関連する問題