2011-02-03 5 views
4

.NET Windowsサービスをインストールして、それらのPCからデータを(Webサービス経由で)アップロードおよびアップロードするようにクライアントPCにインストールしています。私はの方法を、すべてのクライアントPCのWindowsサービスを集中的にに更新する方法を探しています - 各店舗にリモートにする必要はありません。ここでセントラルロケーションから.net Windowsサービスをアップデートする方法

(私はこれは本当に重要とは思わない 、が)いくつかの詳細は:

  • Windowsサービス:(によるクライアントPCの制約).NETバージョン2 - VB.NET
  • Webサービス:.NETバージョン4 - VB.NET
  • クライアントPCのOS:Win7の、POSReadyへのWin2000、WEPOS

いくつかの余分な情報

  • 我々は非常にうまく機能し、セットアップファイルを持っているが、我々はそれを実行するために、各店舗にリモートにする必要があります。そして100店舗あります!
  • セットアップファイルをFTPサイトに置くことを検討しましたが、Windows Embedded OSがFTPをサポートしていないと言われたため、Webサービス経由でファイルを送信する可能性があります。
  • 各WindowsサービスがWebサービスメソッドは、Webサービスを更新するための指示を送信するために使用できるXMLを返します。

これは、開発者がすでに何度も解決する必要があった標準的な問題のようです。誰かがアドバイスをしている、または彼らが使用しているプロセスを提案できる人は、本当に助けになるでしょう。

UPDATE

  • 私は、この新しいアップデート機能
  • を追加するには、WindowsサービスとWebサービスの両方を変更することができ、私は、Webサービスからのダウンロード(セットアップファイルを取得する方法を持っているように見えますメソッド)を実行するのはどうですか?インストーラを実行して、Windowsサービスがシャットダウンされていることを確認するにはどうすればよいですか?インストーラはそれを実行するのでしょうか?

答えて

3

Webサービスをお持ちの場合は、更新の方法を追加できます。

アップデートインストーラまたはアプリケーション(ローカルで実行する)を少し作成します。
次に、WebサービスでStreamまたはbyte []配列を返すメソッドを追加します。
Webサービスのメソッドでは、バイナリインストーラファイルをbyte []配列またはストリームに読み込んで、クライアントに送信します。

次に、クライアントにそのストリームをファイルに保存させ、クライアントマシンにインストーラをインストールさせます。
残っているのは、そのプロセスを実行してサービスを更新するだけです。

+0

彼がすでに自分のアプリにそのようなものを組み込んでいればいい答えです。私は賭けていませんが、パッチインストーラの手動プッシュやパッチを取得するアップデータプログラムの頭痛の後、 – KeithS

+0

今すぐアプリでビルドしてください。次に手動でアップデートしてください(すべてのインストールやものを送ってください)。次回は心配する必要はありません。 –

+0

あなたの答えをありがとう、ありがとうございます:クライアントがWebサービスからファイルを保存できるように、私は自分のアプリを変更することができます。しかし、AFTERのダウンロードはどうですか?アップグレードするためにクローズする必要があるプログラムからインストーラを実行するにはどうすればよいですか? –

1

パッチがMSIパッケージの場合、Active Directoryを使用して、ADサーバーの制御下にある同じネットワーク内のコンピュータにアップデートをプッシュアウトできます。更新はすぐに実行されるか、次回の起動時に実行されます。

あなたはパッケージを自分でプッシュできますが、自動的に更新を実行するのに十分な賢さと特権を持つプログラムによって制御された、もう一方の端を聞いているトランスポート機構が必要です。

ADを除いて、これはおそらくあなたのベストショットです:通常のネットワークファイル共有を使用して、アップデートをクライアントにプッシュダウンします。クライアントコンピュータは実行しているに違いありませんが、歓迎画面にある必要があります。次に、Documents & Users/All Users/Start Menu/Startupフォルダにバッチファイルを置いてMSIの "canned install"を実行します(基本的にデフォルトのインストールパラメータでサイレントインストールを実行するようにMSIに指示します)。次のユーザーログイン時に、バッチファイルが実行され、インストールが実行されます。 MSIは、後でバッチファイルをクリーンアップする必要があります。クライアントコンピュータのレジストリにリモートからアクセスできる場合は、バッチファイルをどこかの一時ディレクトリに置いて、そのファイルへの参照をRunOnceレジストリフォルダに置くことができます。

このrigamaroleを一度実行すると、既知のWebサービスを介して自分のアップデートをチェックしてダウンロードするか、ClickOnceデプロイメントを使用するように設定することができます(インストールディレクトリが厄介ですが、もっと簡単になります)。

+0

お返事ありがとうございます。 Re "...おそらく、このようなアプリを構造化して、既知のWebサービスで自分のアップデートをダウンロードしてダウンロードするように教えてくれるだろう。私はアプリを変更できるので、既知のWebサービスを使ってアプリをアップデートする方法を教えてください。 –

+0

基本的には、あなたのアプリケーションが開いたら、そのソフトウェアの最新リリースバージョンを知らせるシンプルなWebサービスを呼び出す必要があります。それらが異なる場合は、更新パッケージをダウンロードして実行する2番目のWebサービスを呼び出します。 – KeithS

関連する問題