私は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. 自動更新ラジオチェック
- 2. 自動更新データバインディング
- 3. SVN自動更新
- 4. 自動更新アプリケーション
- 5. 簡単な自動更新クライアント(Windowsサービス)の作成方法は?
- 6. フレックスアプリケーションの自動更新
- 7. backbone.jsの自動更新ビュー
- 8. Crystal Reportsの自動更新
- 9. MySQLのタイムスタンプ自動更新
- 10. SSRS - データセットフィールドの自動更新
- 11. iPhoneコンテンツの自動更新
- 12. MySQLの自動更新イベント
- 13. ページの自動更新
- 14. アクティビティでJmDNSサービスを自動的に更新します。
- 15. 自動更新APKバージョンは
- 16. GoogleマップInfowindow自動更新
- 17. 自動更新スクリプトjs/svg
- 18. ASP.NET自動更新システム
- 19. 自動更新SQL Server
- 20. C#Databound ComboBox自動更新
- 21. 自動更新IoTコアアプリケーション
- 22. Javascript自動更新ページ?
- 23. 自動更新C#リストボックス
- 24. Qtインストーラフレームワーク:自動更新
- 25. Ajax自動更新ビュー
- 26. JTable自動更新ヘルプ
- 27. WCF/RIA:自身からWCF/RIAサービスを自動的に更新する
- 28. Word文書のキーワードの自動更新
- 29. wxPythonのwx.TreeCtrlの自動更新
- 30. Sqliteの更新と自動インクリメントの値
誰でもWindowsビットapiを使用しようとしましたか?これは、Windowsの更新プログラムが使用するメカニズムです。 – MikeT