2

アプリケーションのベータ版をリリースしようとしていますが、更新が存在することをアプリケーションでユーザーに通知して、リモートで更新できるようにしたいと考えています。理想的には、可能であれば更新を強制したいと思います。現在、VS2010 に同梱されている InstallShield LE を使用して、インストール exe ファイルをビルドしています。

私の計画は、すべての製品バージョンの XML マニフェクトを配信する wcf Web サービスを作成することです。よくわからないのは、アップデートを配信する方法です。私が考えることができるオプションは

  1. 新しい installshield インストーラーを配布する - インストーラーはプログラムよりもかなり大きいため、プログラムがインストールされると、完全なインストーラーを送信するのはやり過ぎのように思えます。
  2. msi ファイルだけを送信します。VS2010 内で MSI インストーラーを作成する方法がわかりません。
  3. 新しいアプリケーション ファイル (約 7 10 DLL の exe ファイル) をダウンロードし、現在のファイルを新しいファイルに置き換えます。

どのオプションが最適で、どのように実装するかについて考えている人はいますか? なんらかのコード署名が必要で、セキュリティのためにクライアント側でチェックする必要がありますか?

助けてくれてありがとう。

編集-ClickOnceはオプションではないことに言及する必要がありました。主な理由は、私たちのルック アンド フィールに合うように十分にカスタマイズできないためです。また、ここでは説明しませんが、ClickOnce に関するその他の問題もいくつかあります。

4

3 に答える 3

2

数年前、私は同様の状況に直面しました。私たちは、いくつかのオプションの疎結合コンポーネントを備えた製品を開発していました。最終的にアプリケーションが起動すると、「UpdateService」がチェックされ、メタ データが照合されます。

アプリケーションが更新されていない場合、別のプロセスを起動して XML を更新し、更新サービスからバイト配列で DLL を取得します。これにより、XML と更新された DLL がそれぞれのフォルダーにコピーされます。

それは当時の私たちにとってうまくいきます。その理由の一部は、クライアントが機能をアップグレードする可能性があり、追加の DLL をダウンロードするためにそれが必要になる可能性があるためです。

ただし、アプリケーションの最初のインストールはインストーラー (exe) によるものでした。

課題は、パッチ/アセンブリの適切な管理またはバージョンとともに、カスタムのものを作成する必要があることでした。しかし、製品マネージャーを考慮して満足させるには十分でした

于 2012-05-10T15:57:57.197 に答える
0

シャドウ コピー ( http://msdn.microsoft.com/en-us/library/ms404279.aspx )を行わない限り、ファイルをその場で "置き換える" ことはできません。更新がある場合、アプリケーションで「チェック」する方法が必要です。これにはWCFはやり過ぎだと思います。アプリのバージョン番号と比較できる「バージョン番号」を取得するための既知の URL と、「最新」バージョンを取得するための既知の URL を単純に持つことができます...ほとんどのアプリは、MSI をダウンロードしてユーザーに尋ねるだけです。それを実行します。

于 2012-05-10T15:57:11.813 に答える