4

この同じ情報に関して多くの質問があることは承知しています。全部読んだけど、頭の中がぐるぐる回って、どっちに行けばいいのかわからない。さらに、ドキュメントの欠如は本当に痛いです。

これが私のシーンです。WIX を使用してアプリケーションのインストーラーを作成し、ディーラーに製品情報を提供しようとしています。このアプリには、当社製品の約 2000 の画像とドキュメント、および Microsoft Sync Framework によって更新される SQL CE データベースが含まれています。データは頻繁に変更されるため、これらの 2000 をアプリのプロジェクトのコンテンツ ファイルとして保持することは非常に望ましくありません。このアプリは、.NET Framework 3.5 SP1、SQL Server CE 3.5、Microsoft Sync Framework 1.0、および ADO.NET Sync Services 2.0 に依存しています。

アプリの要件は次のとおりです。

  • ディーラーには、更新 (アプリまたはデータの更新) のために毎年 CD でアプリが提供されます。
  • 新しい画像、ドキュメント、またはデータを取得するには、アプリをインターネットから更新する必要があります。
  • 前提条件がクライアント マシンに存在しない場合は、インストールする必要があります。
  • 完全なインストーラーは、MSBuild スクリプトから生成する必要があり、人間の介入はできるだけ少なくしてください (2000 以上のファイル リストを手動で更新する必要はありません)。

これまでに達成したことは、ソリューションに Votive プロジェクトがあることです。.wxs ファイルでバイナリを手動で指定しました。Web は .wixproj ファイルを変更して、HeatDirectory タスクを使用して、指定された場所からデータ (画像、ドキュメント、およびデータベース) を収集しました (これは壊れており、ICE38 エラーが発生します)。これで問題ないように見えますが、それでも多くの作業が必要です。プログラムをリリース モードで実行し、指定したディレクトリにコピーして、手動でデータを更新する必要があります。

私は、この状況で他の人がどうするかを見ています。

  1. 2000 以上のデータ ファイルに関して、ソリューションをどのように配置しますか? サーバーから現在のデータを取得するカスタム ビルド スクリプトを作成しますか、それともメイン プロジェクトにコンテンツ ファイルとして含めますか?
  2. すべてのプロジェクト出力 (参照されたアセンブリを含む) とすべてのデータ ファイルを WIX に含めるにはどうすればよいでしょうか? 完全なサンプルがあれば、それは素晴らしいことです。私が見つけたのはあちこちにある小さなクリップだけで、最初から最後までの例全体ではありません。
  3. バージョン番号をどのように扱いますか?それらをビルド スクリプトの定数として配置し、$(var.VersionNumberName) を介して参照しますか? 展開されているプロジェクトからバージョン番号を自動的に取得しますか? もしそうなら、どのように?

私が見つけたものよりも良い情報があれば、含めてください。私は数多くの記事、ブログ、Stackoverflow の質問、チュートリアル、wiki などを読みました。チュートリアルは素晴らしいですが、MSBuild と Votive については何も説明していません。MSBuild と Votive およびすべての WIX MSBuild ターゲットの使用に関する最初から最後までのチュートリアルを見たいと思います。このようなチュートリアルを誰も知らない場合は、まとめます。私はすでに情報収集と読書に 1 週​​間を費やしてきました。私も MSBuild を初めて使用するので、MSBuild に関する優れた記事があれば、それらを含めてください。

4

4 に答える 4

2

重要なのは、さまざまな種類の複雑さを個別のマージ モジュールに分離し、それらをビルドの一部として MSI にまとめることです。そうすれば、ほとんど変わらないものに影響を与えることなく、頻繁に変わるものを変えることができます。

1) データファイルの場合:

Paraffinを使用して WiX を生成し、何千ものファイルで構成される html + Flash ベースのヘルプ システムのマージ モジュールを生成します (顧客に CHM に行くよう説得することはできません)。

これらを単独でマージ モジュールにコンパイルします。

2) アセンブリ: これがあまり頻繁に変更されないセットであると仮定すると、手動で、または正しいファイルと依存関係を持つ WixEdit を使用してマージ モジュールを作成します。

3) バージョン番号については、ビルド システムに応じて、これを管理する多くの方法があります。AssemblyInfoTask は、すべてのアセンブリが適切にバージョン管理されていることを確認するための非常に簡単な方法です。TFS を使用している場合、MSBuild Extension Pack にはいくつかのバージョン管理機能があります。

于 2009-08-18T01:41:37.133 に答える
0

私はCD配信を捨てて(90年代)、ClickOnceを利用しました。すでに.NETFrameworkを使用しているため、このソリューションは適切に機能しているようです。ClickOnceを使用すると、ソリューションのコンテンツを更新し続け、心ゆくまで更新を利用できるようになります。必要に応じて、ClickOnceデプロイメントコードのサンプルをお知らせください。

ClickOnceの詳細については、こちらをご覧ください

于 2009-08-16T20:43:58.397 に答える
0

dkackman の回答と同様に、ビルドを複数のコンポーネントに分割し、ビルド コンポーネントを分離して個別にビルドする必要があります。

私は主に Java のバックグラウンドを持っていますが、MSI と NET 実行可能ファイルのビルドには maven を使用しています。インストーラーのビルドには「maven-wix-plugin」プラグインを使用し、NET コードのコンパイルには NMaven プラグインを使用します。ただし、私たちは NET で非常に基本的な開発のみを行っており、ほとんどの開発は Java で行っているため、NMaven プラグインの複雑さはあまり必要ありません (バージョン 0.17 のみであるため、これはおそらく「良いこと」(TM) です)。 )。

純粋な NET ハウスである場合は、Blydan ( http://www.codeplex.com/byldan ) を調べることもできます。これは、現時点で開発の焦点になっているようです (NMaven と Byldan は同じチームです)。 )。

NMaven または Byldan についてさらに詳しい情報が必要な場合は、別の質問をしてください。できる限り多くの情報を提供します (非常に限られた NET 開発しかしていないと述べているように、これは膨大な量ではありません)。

于 2009-08-25T09:03:11.383 に答える