4

企業環境にインストールされている 3 層アプリケーションがあります。サーバーのバージョンが更新されるたびに、すべてのクライアントも更新する必要があります。現在、Active Directory 経由で自動的に展開される MSI パッケージを提供していますが、私の顧客 (ほとんどの場合、それぞれ 20 ~ 300 人のユーザー) は MSI ソリューションを嫌っているようです。

  • 実行するのが複雑 (Active Directory の知識がほとんどない)。
  • 新しいバージョンが検出された場合、サーバーは更新プロセスをトリガーできません。
  • 顧客は、複数のバージョンのクライアント (2.3 と 2.4 など) を同時にインストールして、異なるサーバーと通信することはできません。
  • 更新プロセス自体が常に期待どおりに機能するとは限りません (非常に奇妙な動作が数時間後に回復する場合があります)。

私は ClickOnce でいくつかの実験を行いましたが、その方法は柔軟性がなく、自動化されたビルド プロセスに統合するのが難しすぎます。また、不可解なエラー メッセージが表示されるため、顧客が混乱することは間違いありません。

更新ロジックを自分で作成するのに問題はありませんが、問題は、自己更新アプリケーションを実行しているユーザーの権限が制限されすぎて更新を実行できないことです。彼らは Local Application Data ディレクトリに書き込むことができることがわかりましたが、これがアプリケーション ファイルをインストールする一般的な場所ではないと思います。

「正常に動作する」更新方法を知っていますか?

4

4 に答える 4

4

ClickOnceの機能をいくらか複製できますが、必要に応じて調整するだけです。

  1. ネットワーク/Webの場所の更新をチェックする軽量の実行可能ファイルを作成します。
  2. 更新がある場合は、それらをローカルにコピーして、「実際の」アプリケーションファイルを置き換えます。
  3. 「実際の」アプリケーションを実行します。

アプリケーションファイルの場所は、権限とオペレーティングシステムによって決定する必要があります。ユーザーが限られたフォルダーセットへの書き込み権限しか持っていない場合は、これらのフォルダーの1つを使用する以外に選択肢はありません。もう1つのオプションは、Lightweight実行可能ファイルをインストールし、「C:\ ProgramFiles\MyApp」などの特定のフォルダーに対するr/wアクセス許可を付与する初期インストールパッケージを提供することです。このアプローチでは通常、ITからの賛同が必要です。

これがお役に立てば幸いです。

于 2008-09-15T20:04:50.757 に答える
2

これは、WinFormsおよびWPFアプリに対する特定のニーズに対応するために作成したオープンソースソリューションです。一般的な考え方は、可能な限り最小のオーバーヘッドで、最大の柔軟性を持つことです。それはあなたがあなたが説明したすべてに必要なすべての柔軟性をあなたに与えるはずです。

そのため、統合は非常に簡単で、ライブラリは同期操作を含め、ほとんどすべてを実行します。また、柔軟性が高く、実行するタスクと条件を決定できます。ルールを作成します(またはすでに存在するタスクを使用します)。最後に重要なのは、更新ソース(Web、BitTorrentなど)とフィード形式のサポートです。実装されていないものはすべて、自分で作成できます。

コールドアップデート(アプリケーションの再起動が必要)もサポートされており、タスクに「ホットスワップ」が指定されていない限り、自動的に実行されます。

これは、サイズが70kb未満の1つのDLLに要約されます。

詳細については、http://www.code972.com/blog/2010/08/nappupdate-application-auto-update-framework-for-dotnet/をご覧ください。

コードはhttp://github.com/synhershko/NAppUpdateにあります(Apache 2.0ライセンスの下でライセンスされています)

もう少し時間があればもっと拡張する予定ですが、正直なところ、現在サポートされていないものについては、自分ですぐに拡張できるはずです。

于 2010-08-24T22:40:30.593 に答える
2

クライアント側のインストーラーに関する重要な情報が明示されていないため、正確な回答を提供することは非常に困難です。クライアント側のファイルを Program Files にインストールしますか? 次に、ユーザーが制限されているときに問題が発生する可能性があります。

あなたは Local Application Data がアプリケーションをデプロイするためのフォルダだとは思いませんが、Google はそうしています。その Chrome ブラウザーは Windows にそのようにインストールされ、その自動更新プロセスは目立たないほどです (恐ろしいことに聞こえるかもしれません)。では、制限付きユーザー用のこのフォルダーにアプリケーションをデプロイしてみませんか? Chrome インストーラーの詳細については、こちらをご覧ください。

http://robmensching.com/blog/archive/2008/09/04/Dissecting-the-Google-Chrome-setup.aspx

于 2008-09-16T06:47:43.380 に答える
0

ユーザーに多くの権利を与えたくない場合は、適切な権限を持つアカウントの下で各コンピューターで実行され、新しいバージョンが利用可能になったときにアプリケーションを更新できる Windows サービスを作成することができます。 .

于 2009-11-25T19:57:46.237 に答える