多くのソフトウェアは、一緒にインストールされた Windows サービスによって更新されることを知っています。クライアント アプリケーションの更新ヘルパーおよびデータ サーバーとして機能するサービスを作成しました。しかし、このサービスからクライアント アプリケーションを制御する方法に行き詰まっています。
まず、私のサービスはリモート サーバー上の更新をチェックし、次にファイルをダウンロードします。
ニュースをクライアントにブロードキャストし、クライアントはユーザーに今すぐ更新するか、次の実行を行うかを尋ねます。
更新時に、クライアント アプリケーションは自身の実行可能ファイルを削除することはできません。そのため、実行していないときにサーバーに実行を要求し、ファイルの削除と名前の変更が完了すると、クライアント アプリケーションは再度実行します。クライアントを実行します。
サービスがセッション 0 にある場合、同じユーザー セッションに対してクライアントを再実行できませんでした。
もう 1 つの考えられる問題は、サービスそのものを更新する必要がある場合です。それ自体ではなく、クライアントによって更新されることで解決される可能性があります。
そのため、クライアントとサーバーを更新する場合、ジョブを実行するために 3 つ目のアプリケーションを作成する必要があります。この 3 つ目のアプリケーションがコンソール アプリであれば、サービスから実行しても問題ありませんよね。
この 3 番目のアプリを含まないソリューションがあれば、それが最適です。
ノート:
このサービスは単なる更新サービスではなく、ユーザーのアクセスと権限を通知するサーバーです。メインのクライアント アプリケーションはuser information database
直接アクセスしません。