2

Windows サービスをインストールする C#、.NET3.5、Web アプリケーションを作成しました (NetworkService ユーザーとして実行)。このサービスは、ネットワーク上の任意のマシンの専用 Web サーバーとして機能し、ユーザーはブラウザーを使用してサービスに接続します。

すべては、Visual Studio 2008 を使用して構築された msi ファイルを使用してインストールされます。msi ファイルは、展開アプリをインストールして実行します。展開アプリは、ユーザーと権限の設定、およびサービスとしての exe のインストールを処理します。

アプリを強化する (またはバグを見つけて修正する) 場合は、新しい msi ファイルを作成し、アプリを実行しているすべてのマシンでユーザーにそれを実行してもらうことができます。しかし、私はこれが自動的に行われることを望んでいます (私の Web サイトから更新をダウンロードし、それらを展開することを含みます)。

サービスとして実行されるため、ユーザー固有ではないため、Click Once 展開はオプションではないことを理解しています。

これを達成する方法はありますか?

4

3 に答える 3

4

プロセスでユーザーとのやり取りをまったく必要としない場合は、更新ウォッチドッグであり、メインサービスの新しいバージョンがいつ利用可能になるかを識別し、ダウンロード/停止/インストール/開始を処理する2番目のサービスを使用できますか?メインサービス?

于 2012-12-11T18:45:49.150 に答える
1

これが私が最終的に得た解決策です:

サービスのインストール時に、サービスのユーザーにサービスの開始と停止の許可を与えました。詳細については、サービス権限に関する私の質問を参照してください。

サービス プログラムは、バージョン ファイルのリモート URL をチェックし、それを現在のプログラム バージョンと照合します。バージョン ファイルが異なる場合は、アップデート zip をダウンロードし、そこからアップデート プログラムを抽出し、ファイルをロックして、アップデート プログラムを実行し、すぐに終了します。

更新プログラムは同じファイルをロックし、(サービスが停止したことを確認するためだけに) 数秒間待機し、zip を解凍し (更新プログラム自体を除く)、最後にサービスを再起動します。

于 2013-04-03T19:28:11.160 に答える