Installutil.exeを使用してVS2010を使用してWindowsサービスをインストールしたところ、cmdプロンプトウィンドウにコミットフェーズが正常に完了したと表示されましたが、ローカルサービスフォルダーにWindowsサービスが表示されません。
ここで何が恋しかったですか?
私はWindows7とVS2010を使用しています
更新:
サービス(service1という名前)をアンインストールしましたが、名前を意味のある名前に変更し、サービスをインストールしました(上記と同じプロセス)が、サービスブラウザで見つかりません。
FWIW ...プロパティウィンドウ(ファイル名の値)でservice1.csの名前を変更しましたが、サービスブラウザにservice1が表示されていました。コードビハインド(自動生成コード)の値も変更することになりましたthis.serviceInstaller1.ServiceName = "service1";
更新(2)ダミーのWindowsサービスを作成し、それを正常にインストールできました(ドメインログインIDとパスワードの入力を求められました)。サービスブラウザで表示できます。
ただし、サービスブラウザで実際のWindowsサービス(プロジェクトに関連する)を表示できません。ダミーサービスをインストールできたので、明らかに権限があります。
このサイトによると インストール後にWindowsサービスが表示されない
レジストリの「HKLM\System\CurrentControlSet\Services」パスにサービスが表示されません。
更新(3)
ログファイルには
RunInstallerAttribute.Yes属性を持つパブリックインストーラーがC:..に見つかりませんでした。
ただし、プロジェクトソリューションにはProjectInstaller.csファイルがあります。
追加した
[RunInstaller(true)]
projectInstaller.csファイルに、まだ運がない
何か提案はありますか?
また、リストでサービスを探す前に、サービスに付けた名前を確認することを忘れないでください。ネットからいくつかのコードをコピーして貼り付け、コード内のサービスの名前を変更するのを忘れたので、もちろんそれを見つけることができませんでした...
serviceInstaller.DisplayName = "Example service"
ドー!
[RunInstaller(true)]属性を持つInstaller派生クラスのコンストラクターに次のようなものがあるかどうかを確認します。
public ServiceSetup()
{
Installers.Clear();
ServiceInstaller serviceInstaller = new ServiceInstaller();
// serviceInstaller.Description = // FIXME:
// serviceInstaller.ServiceName = // FIXME:
// serviceInstaller.DisplayName = // FIXME:
serviceInstaller.StartType = ServiceStartMode.Automatic;
Installers.Add(serviceInstaller);
ServiceProcessInstaller serviceProcessInstaller = new ServiceProcessInstaller();
serviceProcessInstaller.Account = ServiceAccount.LocalSystem;
serviceProcessInstaller.Username = null;
serviceProcessInstaller.Password = null;
Installers.Add(serviceProcessInstaller);
}
[RunInstaller(true)]を追加したクラスを公開します。
私はあなたがそれを説明するのとまったく同じようにこの問題に出くわしました。
生成されたmyservice.vshost.exeファイルに対してinstallutilを愚かに実行していました。
これはおそらく問題ではありませんでしたが、コマンドプロンプトで、.exeが存在するディレクトリを参照し、installutilと入力してスペースを入力し、タブを使用してサービスexe名をオートコンプリートしました。
私が見つけたファイルは「myservice」で始まり「.exe」で終わり、実行させました。
愚かな、しかしそれが起こったのです。
後世のためにこのメッセージを残し、それが他の誰かを助けるかもしれないことを願って:-)
セットアッププロジェクトにカスタムアクションを追加するには
1.ソリューションエクスプローラーで、セットアッププロジェクトを右クリックし、[表示]をポイントして、[カスタムアクション]を選択します。カスタムアクションエディタが表示されます。
2.カスタムアクションエディタで、[カスタムアクション]ノードを右クリックし、[カスタムアクションの追加]を選択します。 [プロジェクトでアイテムを選択]ダイアログボックスが表示されます。
3.リストボックスでアプリケーションフォルダをダブルクリックして開き、MyNewService(アクティブ)からプライマリ出力を選択して、[OK]をクリックします。プライマリ出力は、カスタムアクションの4つのノードすべてに追加されます。インストール、コミット、ロールバック、およびアンインストール。
4.セットアッププロジェクトをビルドします。
拡張子が.exeではないと思ったファイルに対してinstallutil.exeを実行していました。 fileexplorerでファイルを表示すると、拡張子が表示されません。サービスファイル名に.exe拡張子を追加すると、スムーズに実行されました:-)。なんて残念だ。
これはせいぜいセミソリューションです。
私は同じ問題を抱えており、上記のすべての救済策と他のプログラマーの避難所で試しました。
AcountタイプをLocalServiceに変更しましたが、正常に動作するようになりました。これは暫定的な解決策になる可能性があります。
奇妙に聞こえますが、インストールしようとしているservice.exeファイルが最新のビルドであることを確認してください。デバッグフォルダーにファイルをデプロイしようとしているのではないかと思いますが、変更を加えて再構築しましたリリースモードのサービスプロジェクト。