ClickOnceを使用してデプロイされたプロジェクトに取り組んでおり、いくつかの問題が発生しています。
私のソフトウェアソリューションには2つのコンポーネントがあります。実行するために.NETFramework3.5を必要とするデスクトップクライアントと、利用可能なドキュメントを一覧表示し、ClickOnceを使用してデスクトップクライアントをインストールする方法を提供するサーバー(ASP.NETアプリケーション)です。
私の最初の問題は前提条件の問題です。クライアントをインストールする前に3.5フレームワークをインストールする方法が必要です。Visual Studioはsetup.exe
それを処理するを作成しますが、それを機能させるには、(.application
ファイルにリンクするのではなく)直接実行する必要があり、ClickOnceマニフェストを作成するときに展開URLを知っている必要があります。
したがって、さらに2つの問題があります。インストール後にクエリ文字列引数を使用してクライアントアプリケーションを実行する方法がないsetup.exe
ため、サーバーに「... / client.application?」のようなURLにリンクするドキュメントリストを表示させる代わりに、 document=doc1"へのリンクしか持てませんsetup.exe
。
もう1つの問題は最悪です。サーバーは、単一のWebサーバーではなく、比較的小規模なプライベートネットワークで使用することを目的としています。問題は次のとおりです。ビルド時にClickOnceクライアントの展開URLがわからないため、setup.exe
[Webサイトからインストール]オプションをオンにすると、が正しく実行できません。setup.exe
今のところ、回避策は、大きなZIPファイルに前提条件とClickOnce配置ファイルを含むオフラインインストーラーを用意することです。
適切なフレームワークバージョンを使用しているユーザーは、.application
クエリ文字列を含むドキュメントへのリンクを使用して、クライアントをインストール/更新し、ドキュメントを開くことができます。フレームワークを持たないユーザーはエラーメッセージ(「システムアップデートが必要ですblablabla 3.5.0.0 blabla GAC」)を受け取り、ZIPファイルをダウンロードしてローカルマシンに抽出し、setup.exe
ファイルを実行してフレームワークをインストールしてから、クライアントをインストールする必要があります。 。その後、彼はドキュメントリストに戻り、リンクを使用して適切な引数でクライアントを起動する必要があります。
言うまでもなく、私はこの戦略をあまり誇りに思っていません。この戦略は、ClickOnceの展開のすべての利点を台無しにします。
よりエレガントな方法で前提条件の問題を取り除くことは可能ですか?サーバーをネットワークに展開するときにClickOnceアプリケーションのインストールURLを変更する簡単な方法はありますか(構成ファイルなどにURLを書き込むなど)?