2

これは「本当の質問ではない」というフラグが立てられるかもしれませんが、NuGet が WiX 展開のどこに適合するかについて、私は本当に混乱しています (最後の質問から推測できます...)。

現在の状況

TeamCity ビルドは、サーバーに FTP 接続される WinForms 製品用の WiX Burn (3.6) インストーラーを作成します。アプリは Web サービスを呼び出して、資格のある新しいバージョンがあるかどうかを判断し、ある場合はバックグラウンドでダウンロードして、次回のアプリ起動時にインストールできるようにします。

新しい要件

NuGet パッケージを介して C# ソリューションに含まれる新しい機能がいくつかあります。パッケージには特定の機能があるため、90% のクライアント インストールではパッケージは必要ありません。そのため、おそらく独自の msi が必要になります。問題の NuGet パッケージは当社のものではなく、当社のサプライヤー サーバーの 1 つに常駐しており、入手するには認証が必要です。

私はNuGetの世界にどういうわけか慣れていないので、WiXに適合する場所に頭を悩ませることができません...

  • NuGet パッケージを CI ビルドの一部として含め、WiX インストーラー内に含めて、サプライヤーのサイトからダウンロードされないようにする必要がありますか (これにより、認証の問題が解決されます)。

  • Nuget パッケージ内のコンポーネントを含む新しい MSI を作成しますが、実際には最終的なクライアント展開に NuGet をまったく使用しませんか? (これにより多くの問題が解決されますが、NuGet パッケージが更新されるたびに作業が必要になる可能性があり、適切ではありません!)

  • 書き込みインストールの一部として個別にダウンロードされるヘッドレス MSI パッケージを作成する必要がありますか? クライアントは、必要な認証を持っていないため、必要な認証を入力できません。

  • NuGet パッケージがインストール中にインストールされ、利用可能な最新のものを常に取得する場合、NuGet パッケージがサプライヤによって更新され、何らかの理由でインストールが中断された場合、インストールが後日失敗する可能性があります。NuGet パッケージがクライアントにダウンロードされている場合、これを回避する方法はありますか?

どうもありがとう、混乱!

4

1 に答える 1

4

サードパーティのパッケージを処理する最も簡単な方法は、エンド ユーザー向けに再配布可能なインストーラを使用することです (たとえば、Burn を使用)。おそらく、彼らはターゲット プラットフォームに必要なすべての問題に対処しており、今後も引き続き対処し、更新メカニズムを提供することさえあります。これは、.NET フレームワークや VC ランタイムなど、Microsoft の多くのコンポーネントに当てはまります。

Nuget は開発者向けです。依存関係をダウンロードし、それらと、場合によってはソース コード、構成要素などをプロジェクトに追加します。そのため、通常、ライブラリをエンドユーザーに配布するために使用されることはありません。ライブラリにエンドユーザー向けの独自のインストーラーがない場合は、(ライセンスで許可されている場合) 製品のセットアップまたは別のセットアップに含めることができます。

これの根底にあるのは、いつものように、アプリケーションがさまざまなバージョンのライブラリを処理する方法と、実行時にそれらを見つける方法です。これは非常に単純なことですが、それ自体がまったく別のトピックです。これは、インストールの設計とビルド プロセスで考慮する必要があります。

于 2013-07-10T15:13:02.417 に答える