2008-09-15 12 views
4

企業環境にインストールされている3層アプリケーションがあります。すべてのサーバーバージョンの更新では、すべてのクライアントも更新する必要があります。現在、私は自動的にActive Directory経由で展開されているMSIパッケージ、少しアクティブ(主に20から300人のユーザーごとに)それは企業環境での自動更新(C#)

  • は、それが実行して取得するには複雑であるため、MSIソリューションを憎むように見えるが私の顧客を(提供しますディレクトリ知識);
  • 新しいバージョンが検出されたときに、サーバーによって更新プロセスを開始することはできません。
  • お客様は複数のバージョンのクライアント(たとえば2.3および2.4)を同時にインストールして別のサーバーと通信することはできません。
  • 期待通りに更新プロセス自体は常に動作しません

が、私は今のClickOnceで、いくつかの実験を行った(時には非常に奇妙な動作は、数時間後に自分自身を癒し)が、その方法は私のためにunflexibleします私の自動化されたビルドプロセスで統合するのが難しいです。また、それは私の顧客を確かに混乱させるかもしれない潜在的なエラーメッセージを生成します。

自分自身で更新ロジックを書くのに問題はありませんが、自己更新アプリケーションを実行しているユーザーが更新を実行するには制限された権限を持つという問題があります。私は自分のローカルアプリケーションデータディレクトリに書き込むことができますが、これはアプリケーションファイルをインストールする典型的な場所ではないと思います。

"うまくいく"というアップデートを知っていますか?

+0

ClickOnceで発生するエラーとその手順(問題解決のための良い解決法であり、おそらくは修正可能です)を明確にしてください。 –

+0

ClickOnceは私たちのために働いています。 '謎の'エラーメッセージまで。私は自分のアプリケーションがmageを使用して誤って構成されているものを見ただけです。 – Bloodhound

答えて

4

ClickOnceの機能を幾分複製できますが、必要に応じて調整してください。

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

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

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

2

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

ローカルアプリケーションデータは、アプリケーションをデプロイするフォルダではないと思われますが、Googleはそのようにしています。そのChromeブラウザはWindows上にインストールされ、自動更新プロセスも気付かれない(恐ろしいかもしれない)。そのため、制限されたユーザーのためにこのフォルダにアプリケーションを展開しないでください。あなたは、あなたのユーザーあまりにも多くの権限を付与したくない場合は、アカウントの下で、各コンピュータ上で実行するWindowsサービスを、書くことが可能である、ここで

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

0

をChromeインストーラについての詳細を見つけることができます新しいバージョンが利用可能になると、アプリケーションを更新することができます。

2

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

したがって、インテグレーションは非常に簡単で、ライブラリは同期操作を含め、ほとんどすべてを処理します。 非常にフレキシブルなであり、実行するタスクや条件を決定することができます。ルールを作成する(またはすでにあるものを使用する)ことができます。最後に、のアップデートソース(ウェブ、BitTorrentなど)とフィード形式のサポートが実装されています。

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

サイズが70kb未満の1つのDLLまで、このBoildを実行します。 http://www.code972.com/blog/2010/08/nappupdate-application-auto-update-framework-for-dotnet/

コードで

詳細はhttp://github.com/synhershko/NAppUpdateである(Apache 2.0のライセンスの下でライセンス)

私はいくつかのより多くの時間を買ってあげるとき、私はもっとそれを拡張することを計画し、正直なところ、あなたのことができるようになり現在サポートしていないものであれば、すぐに自分自身を強化してください。

関連する問題