10

ここでSiによるこの質問の精神で:WiXのトリックとヒント。ディレクトリに基づいて wix フラグメントを作成する最良の方法を決定しようとしています。いわばファイルハーベスティング。たとえば、bin\release フォルダーの下に、さまざまなフォルダーと、フラグメントで非常に簡単にキャプチャしたいファイルを含めることができます。私はそれらを入力するか、wixeditを使用してこれを行ってきました。

ここでリサーチを行っただけで、何も試していないことに注意してください: A )熱について少し読みました。msbuildから実行することについてはわかりませんか? B)t4スクリプトの使用について説明しているNewagesolutionのこのブログ記事を見つけました:http://blog.newagesolution.net/2008/06/how-to-use-msbuild-and-wix-to-msi.html

これを解決するために他の人が何をしているのか知りたいです。

よろしく、ブライアン

4

3 に答える 3

13

わかりました、ダニエル 私は間違いなく熱を使用することに同意しますが、ロブは私が最終的に使用したものについて正しい方向に私を指摘したと思います.

私が最終的に使用したのはHeatDirectoryでした。非常に限られていたので、彼が本当に私の質問に答えたとは言えません。ちょうど私を正しい方向に向けました。ロブとダニエルの助けに感謝します。

したがって、私は戻ってきて、この質問に自分で答えました。

ハードル...

私が遭遇したハードル 1 は、ビジュアル スタジオ内からヒート タスク/ヒート ディレクトリ (msbuild にラップされたヒート) を実装する方法に関するドキュメントが Web 上にほとんどないことです。msbuild から実行するラッパーはかなり新しいようであり、自己責任などで使用することはお断りします。ドキュメントが不足しているため、wix ユーザー リストにメールを送信しました。ブライアン・ロジャースに助けてもらいました。ブライアンに感謝します。これですべてが解決しました。熱が自動化にどのように役立つかについては、彼の素晴らしいブログ エントリをご覧ください

ハードル 2 熱に取り組んだ後、推奨された方法でコンポーネントを使用していないことがわかりましたが、すべての理由をまとめる必要がありました。Windows インストーラーの予備知識がない場合、Wix を使い始めたばかりの多くの人がこれに遭遇すると思います。したがって、いくつか読むことをお勧めします。MS の Windows Installer.Component rules の場合と同じように初心者の場合は、コンポーネント ルールも必ず読んでください: http://msdn.microsoft.com/en-us/library/aa370561.aspx . コンポーネントの理解を深めるために、Rob Mensching の次の記事をお読みください 。 /10/18/Component-Rules-101 Windows インストーラーの追加情報については、Windows インストーラー チームの次のルールを確認してください (ルール 16: コンポーネント ルールに従う): http://blogs.msdn.com/windows_installer_team/archive/2006/05/12/595950.aspx

ハードル 3 ファイルにパッチを適用するか、新しいバージョンをインストールするたびにアップグレードするかを決定する必要があります。幸いなことに、パッチを適用する必要はありません。したがって、アップグレードのたびに、次のように以前のバージョンをアンインストールするだけです: WiX インストーラーのアップグレードを実装するには? . これにより、物事が大幅に簡素化されます。パッチを適用するときは、物事を完全に制御する必要があります。wix ビルド msi フィールド以外に wix について何も知らない多くの開発者による自動化/自動ビルドが必要な場合、より困難なこと。これは熱を使ってうまくいくようですが、私は確信が持てません。

ハードル 4 プリプロセッサ変数を含むインクルード ファイルが機能しない理由を理解するのに少し時間がかかりました。私はついにそれを理解しました。次のように .wxs ファイルにファイルを含める必要があります: 詳細については、こちらを参照してください: テキスト ファイルの内容を WiX スクリプトに含める

http://wix.sourceforge.net/manual-wix2/preprocessor.htm

ハードル 5 私は mix でメジャー アップグレードを使用しており、subversion を製品番号にフックしたかったためです。これは非常に簡単だと思いました。それは、あなたがそれを行う方法を知っていればです。ここでも問題が発生し、これについても助けを得る必要がありました。

ハードル 6 bin フォルダーに基づいてファイルを熱更新すると、すべてがうまく機能します。ほとんど自動的に実行されます。dll 参照などに競合がある場合、ファイルはインストーラーに含まれないため、正しく動作しない可能性があります。インストール後にプログラムをテストするために、テストプロセスを用意する必要があります。dll を見逃すと、これは重大な問題になる可能性があります。また、プログラムで使用されている dll を追跡し、msi ファイルと比較することもお勧めします。

ここで、HeatDirectory を使用したソリューションについて (Brian Rogers (wix チーム) の助けを借りて):

 <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == ''">Debug</Configuration>
   <OutputName>msbuild.heatfile</OutputName>
   <OutputType>Package</OutputType>
   <WixToolPath>..\..\YourHeatDir</WixToolPath>
   <WixToolPath>$(WixToolPath)</WixToolPath>
   <Cultures>en-us</Cultures>
   <LinkerBaseInputPaths>..\..\data\HeatDir</LinkerBaseInputPaths>
 </PropertyGroup>
 <ItemGroup>
   <Compile Include="product.wxs" />
   <Compile Include="TestDir.wxs" />
 </ItemGroup>
 <Import Project="$(WixToolPath)\Wix.targets" />
 <UsingTask TaskName="HeatDirectory"
   AssemblyFile="$(WixToolPath)WixUtilExtension.dll" />
 <Target Name="BeforeBuild">
   <HeatDirectory
      Directory="..\..\data\HeatDir"
      DirectoryRefId="DataDir"
      OutputFile="TestDir.wxs"
      AutogenerateGuids="true"
      ToolPath="$(WixToolPath)" />
 </Target>

これをプロジェクト ファイルに貼り付け、適切な設定/パスを変更する必要があります。これにより、指定したパス内のすべてのファイルが取得され、コンポーネント グループで参照できる TestDir.wxs ファイルが作成されます。詳細については、heat のソースコードを確認する必要があるいくつかの Heatdirectory オプションがあります。

参考までに: 質問を投稿した後、stackoverflow でこの投稿を見つけました: How to add a whole directory or project output to WiX packageおよび WiX(v3)。これもまた、代わりにヒート タスクを使用して実行できます。
どちらも、サードパーティ製ツールの使用について説明しています。1 つは Mallow と呼ばれ、もう 1 つは Paraffin と呼ばれます。パラフィンはサポートされているように見え、熱が行うこととほとんど同じことができると思います. いくつか追加: 詳細はこちらをご覧ください: http://www.wintellect.com/cs/blogs/jrobbins/archive/2007/10/18/wix-hints-for-new-users-part-1-of- 3.aspx

とにかく、これが他の人に役立つことを願っています。

于 2009-04-28T11:39:54.260 に答える
3

ここでは、新しい HeatTasks が非常にうまく機能する可能性があります。Visual Studio の他のプロジェクトからプロジェクト出力グループをプルできます。古いビルドよりも最新のビルドの方がはるかに優れているため、毎週のhttp://wixtoolset.org/releases/を必ず入手してください。

于 2009-04-02T20:29:05.153 に答える
0

実際、msbuild の heat.exe を使用しています。あなたが私と同じようにうるさいなら、heat の出力はおそらくあなたが望むものではありませんが、これは XSL 変換で簡単に修正できます (heat.exe には、この目的のために明示的にコマンドライン パラメーターがあると思います)。

于 2009-04-02T17:39:58.070 に答える