1

私は次のものを持っています:

  1. 私が作成した Windows サービスは、次の 2 つのアプリでのみ使用されます。
  2. クライアント アプリ。
  3. エージェント アプリ。

クライアントもエージェントも、サービスなしでは機能しません。現在のインストールは使用してClickOnceいます (サービスはまだ展開されていません)。

私が欲しいもの:

  1. 2 つの個別のインストール - クライアント + サービス、エージェント + サービス。これは、クライアントが送信したタスクのみを実行する多くのマシンがあり、クライアントを必要としないためです。また、クライアントを必要としているすべての人が自分のマシンもエージェントにしたいわけではありません。
  2. 論理パッケージを展開する - たとえば、クライアントのみを展開するのは意味がありません。それ自体では実行できないためです。また、サービスを単独でデプロイすることも意味がありません。
  3. バージョンの互換性を維持する - 次のシナリオを処理する方法: 誰かがエージェントとサービスのバージョン 1 をインストールし、次にクライアントとサービスのバージョン 2 をインストールしました。
  4. 昇格された特権: 昇格された特権を持つアカウントを使用してマシンに Windows サービスをインストールすることは可能ですが、現在の特権は必ずしも昇格されているわけではありませんか? サイレント インストールを実行できますか?

ClickOnceとてもいいですが、必須ではありません。私の要件を満たすより良い解決策がある場合は、更新がまだ可能であれば、それらに切り替えます (強制更新と更新を遅らせるオプション)。

4

1 に答える 1

2

ClickOnce アプローチについて説明します。msi インストールの方が適切かもしれませんが、何らかの自動更新が必要なようです。msi インストールを自己更新するよりも、Windows サービスのインストールを強制的に ClickOnce アプローチにする方が簡単な場合があります。

ClickOnce の本質はシンプルです。ユーザーのプロファイル フォルダー内のファイルをサーバー上のファイルと同期させます。これは、クライアント アプリとエージェント アプリでうまく機能するはずです。Windows サービスについてはそれほどではありません。

サービスについては、ClickOnce でサービス ビットをデプロイします。次に、クライアント/エージェントで実行してサービスをインストール/更新するコードを記述します。

サービスを扱うとき、 Topshelfは純粋に素晴らしいと思いました。これにより、開発を容易にする標準のコンソール アプリを作成できます。それをインストールするには、コンソール exe を呼び出して--installスイッチを渡します。クライアント/エージェントがファイルを開始してコピーしたり、サービスをインストール/更新/開始/停止したり、サービスを機能させるために必要なものがあれば、いつでもそのコードを実行できると思います。

次に、番号付きリストについて...

  1. 取り扱い可能です。2 つの ClickOnce をインストールすると、両方ともサービスが含まれます。
  2. 独自のコードを使用してサービスをインストールできる限り、これは機能するはずです。
  3. これはもっとトリッキーです。何をしたいのかを定義する必要があります。サービスをインストールするコードを完全に制御できるため、何をすべきかを決定し、適切に処理できます。
  4. Windows サービスをインストールするには、昇格した特権が必要になると思います。これは、ClickOnce からのプロンプトを意味します。これを回避する唯一の方法は、デプロイメントに署名してから、クライアントのマシンに証明書をインポートすることです。1つのプロンプトを避けるのは本当に価値がありません.IMHO.
于 2013-04-09T19:30:45.803 に答える