私はDelphiでいくつかのサービスを書いていますが、LAN uncパスまたはhttpサーバーからサービスを自動更新する機能を追加したいと考えています。私はこれを熟考しており、人々のアイデアを聞くことに興味があります。定期的に更新を確認するスレッドを作成できますが、サービスを自動的にアンインストールしてインストールする方法についてはどうしたらいいですか?私の最初の考えは、これを行うためのコンソールアプリケーションを作成し、プロセスを作成して起動し、サービスを停止してコンソールアプリケーションを終了させ、新しいバージョンのサービスを終了します。これはいいストレイテージかシュールなんですか?事前のおかげでサービスの自動更新
答えて
お勧めの通りです。スレッドは時々更新をチェックします。存在する場合は、それをダウンロードして適切な場所に配置します。そして、それが健康であることを確認します(壊れたくない!)。最後に、スレッドは、何をすべきかを示すパラメータ、特にサービスの名前、置き換えるファイルの場所、およびそれを置き換えるファイルを指定して、別のアプリケーションを起動します。その後、サービスはただ待っています。
アップデーターアプリケーションが起動すると、サービスがすべて安定していることを確認してから、サービス制御APIを使用してサービスを停止します。それはそれがなくなるまでそれを監視します。最後に、Windowsが実際にファイルを終了したことを少しでも一時停止します。次に、古いファイルの名前を変更して、それを途中で移動させます(まだ使用している場合は、数回再試行してから、新しいファイルを所定の場所にコピーします)。最後に、サービスが再び開始されます。その後、アップデータは終了します。
これは私のサービスやスタンドアロンのアプリケーション(アップデーターアプリケーションがどのモードを知るためのパラメータが異なるか)にも非常に信頼性があります。注意が必要な場合は、まったく同じシステムを使用してアップデータを更新できます。
httpサーバとMS BITSを使用して転送を行うと、httpサーバは利用可能なアップデート、バージョン、MD5ハッシュ、タイムスタンプを詳述したXMLファイルを提供しました。 Delphiを使用してアップデート用の独自のhttpサーバを作成する場合は、最新バージョンのIndyを使用していることを確認してください。チャンク転送のサポートは実装されたばかりで、2.1GBを超えるファイルサイズのバグが報告され、修正されました。 – MikeT
は、あなたの考えは私には非常に良いと思われる、しかしaswellこれを考慮する: を - アンロードされますと、更新モジュール(。* dllファイル)をロードするサービスへのモジュール(メインコア)を追加アップデートが利用可能な場合 - この時間にサービスがキューか何かで「タスク」を置く必要があります... 加えて、あなたはPascal scriptまたはDWScript
のようなプラグインおよび/またはスクリプトを使用することができます私は、サービスのことだろう実際のコードがある別の実行可能ファイルまたはDLLファイルのみを更新するシェル。
シャットダウンを強制してシェルがアップグレードを実行して子を再起動するようにするには、シェルと子プロセスの間に通信方法があります。
これは、Windowsサービスをデバッグするために必要な余分な労力を心配することなく、子プロセスを直接実行することができるだけでなく、サービスのデバッグを簡単にします。
- 1. Google Playサービスの更新を自動的に更新する
- 2. モデル更新時の自動更新ページ
- 3. 簡単な自動更新クライアント(Windowsサービス)の作成方法は?
- 4. 自動更新サブモジュール
- 5. 自動更新クエリ
- 6. 自動更新ラジオチェック
- 7. 自動更新データバインディング
- 8. 自動更新JSON
- 9. 自動更新アプリケーション
- 10. SVN自動更新
- 11. 自動更新update_post_meta
- 12. アクティビティでJmDNSサービスを自動的に更新します。
- 13. MySQLのタイムスタンプ自動更新
- 14. ラベルの自動更新
- 15. フレックスアプリケーションの自動更新
- 16. Tomcatアプリケーションの自動更新
- 17. は、コンテンツの自動更新
- 18. iPhoneコンテンツの自動更新
- 19. 自動更新の引数
- 20. backbone.jsの自動更新ビュー
- 21. Crystal Reportsの自動更新
- 22. SSRS - データセットフィールドの自動更新
- 23. Jenkinsの自動更新ドロップダウンメニュー
- 24. 窓の自動更新
- 25. MySQLの自動更新イベント
- 26. ページの自動更新
- 27. WCF/RIA:自身からWCF/RIAサービスを自動的に更新する
- 28. 自動更新データ変更時のピボットテーブル
- 29. Turtoise HG自動更新ローカルリポジ
- 30. GoogleマップInfowindow自動更新
誰でもWindowsビットapiを使用しようとしましたか?これは、Windowsの更新プログラムが使用するメカニズムです。 – MikeT