50

SC.exeInstallUtilは、どちらもWindowsサービスをインストール/アンインストールします。しかし、それらは同じようには機能しないようです。

違いはなんですか?


たとえば、 Sc createがサービスを正常にインストールしているときに、 InstallUtilが失敗します(一部のファイルまたは依存関係が見つかりませんエラー)。あまりにも奇妙さに追加します。コンソールでnetstart実行すると、サービスが表示されません。ただし、サービスGUIには表示されます。アンインストールしようとすると、この変種が発生します。

私は自分でサービスを作成しましたが、以前のバージョンは機能します。Dotnet3.5。

4

5 に答える 5

28

はい、サービスのインストールは特に複雑ではありません。ほんの一握りのレジストリキーを書くだけです。Regedit.exeで確認し、HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet\servicesに移動します。

Sc.exeは、提供されたコマンドライン引数を使用して、これらのキーを書き込むこともできます。それにもかかわらず、これはそれを行う正しい方法ではありません。InstallUtil.exeのポイントは、カスタムインストールコードをアクティブ化できることです。サービス作成者が作成したコード。これは珍しいことではありませんが、サービスは自分で使用するために登録キーに構成情報を詰め込む傾向があります。Regeditを見ると、その証拠がたくさんあります。

于 2011-01-14T17:52:39.333 に答える
16

installutil.exeよりもsc.exeの方が好きです。

InstallUtilは、恐ろしいProjectInstallerクラス(私は信じています)を追加し、そこにサービス名とサービスの説明をハードコードするように強制します。

InstallUtilを使用すると、同じマシンで同じサービスの2つのバージョンを同時に実行することが非常に困難になります。

そのため、InstallUtil.exeをまったく使用していません。また、以前の応答のために、デプロイパッケージに含める必要があります。sc.exeはすでにWindowsXP以降に搭載されています(私は信じています)。

于 2012-09-28T16:27:17.923 に答える
5

主な違いは、InstallUtilはサービスのインストールを目的としたユーティリティではなく、一般的なインストーラーツールであるということです。MSDNページから、次のことがわかります。

「インストーラーツールは、指定したアセンブリでインストーラーコンポーネントを実行することにより、サーバーリソースをインストールおよびアンインストールできるコマンドラインユーティリティです。このツールは、System.Configuration.Install名前空間のクラスと連携して機能します。」

したがって、サービスをインストールできますが、他にも多くの利点があります。インストーラークラスに基づいて実行可能ファイルを作成する と、インストール/アンインストール手順全体をプログラムで制御できます。たとえば、ServiceInstallerServiceProcessInstallerはサービスのインストールに使用されます。

「Sc」ユーティリティはサービス制御に使用され、「create」コマンドは選択された実行可能ファイルに基づいてサービスを作成するだけです。

あなたの例では1.InstallUtil
と 一緒にインストールすることを意図しておらず、エラー応答はそれについて非常に明確である必要があります。 2.インストールコードのバグが原因でInstallUtilが失敗し、sccreateを使用すると誤ったサービスが作成される可能性があります。詳細については、 {exe_name}.InstallLogを確認してください。

于 2014-04-24T11:08:26.930 に答える
2

アンインストールの使用経験から:Windows 7のsc.exeはリストからエントリをすぐに削除しますが、installutilでアンインストールした後は再起動する必要があります

于 2011-10-25T09:14:15.437 に答える
2

InstallUtilは.NETサービスを使用するための推奨される方法ですが、欠点の1つは、app.configからバインディングリダイレクトを取得しないことです。これにより、特定の状況でインストールが失敗する可能性があります。ここで、SCを使用すると、インストール時にコードを実行できなくなるという犠牲を払って、いくつかの利点が得られる可能性があります。

OPにとって残念なことに、TopShelfは彼の質問の時点では存在していませんでした。これは、SCとInstallUtilの両方の欠点を回避し、VisualStudioで起動するときに接続されたデバッガーでサービスを起動できるようにします。さらに、myservice installInstallUtilの特定のフォルダーにドリルダウンしたり、SCのパラメーターを大量に入力したりするよりも、入力する方がはるかに簡単です。

于 2018-02-08T22:51:39.610 に答える