[解決済み] サーバーに同じWindowsサービスの複数のインスタンスをインストールする
質問
私たちは、クライアント アプリケーションにデータを供給するための Windows サービスを作成し、すべてがうまくいっています。 クライアントは、このサービスの 2 つのインスタンスを同じサーバー上で実行し、別々のデータベースを指すように構成することを要求するという、楽しい構成要求を出してきました。
これまでのところ、私はこれを実現することができず、私の仲間の stackoverflow のメンバーが、なぜかいくつかのヒントを与えることができるかもしれないと期待していました。
現在のセットアップ。
Windows サービス (今後 AppService と呼ぶことにします) を含むプロジェクトと、カスタム インストール手順を処理する ProjectInstaller.cs ファイルを設定して、App.config のキーに基づいてサービス名をこのように設定しました。
this.serviceInstaller1.ServiceName = Util.ServiceName;
this.serviceInstaller1.DisplayName = Util.ServiceName;
this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem;
この場合、Utilは設定ファイルからサービス名を読み込むだけの静的なクラスです。
ここから先、私は両方のサービスをインストールするために 2 つの異なる方法を試しましたが、両方とも同じ方法で失敗しました。
最初の方法は、サービスの最初のコピーを単にインストールし、インストールされたディレクトリをコピーして名前を変更し、目的のサービス名を変更するためにアプリの設定を変更した後に次のコマンドを実行することでした。
InstallUtil.exe /i AppService.exe
これがうまくいかなかったので、2つ目のインストーラプロジェクトを作成し、設定ファイルを編集して、2つ目のインストーラをビルドしようとしました。 インストーラーを実行すると、正常に動作しましたが、サービスが services.msc に表示されなかったので、2 番目にインストールされたコード ベースに対して前のコマンドを実行しました。
2 回とも InstallUtil から次のような出力を受け取りました (関連する部分のみ)。
トランザクテッド インストールを実行中です。
インストールのインストールフェーズを開始します。
サービスApp Service Twoのインストール中... サービス App Service Two は正常にインストールされました。 ログアプリケーションにEventLogソースのApp Service Twoを作成中...
インストール フェーズで例外が発生しました。 System.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません。
インストールのロールバックフェーズが始まっています。
ソース App Service Two のイベント ログを以前の状態に復元しています。 サービス App Service Two はシステムから削除されています...。 サービス App Service Two はシステムから正常に削除されました。
ロールバックフェーズが正常に完了しました。
トランザクテッド インストールが完了しました。 インストールが失敗し、ロールバックが実行されました。
長ったらしい投稿で申し訳ありませんが、十分な関連情報があることを確認したかったのです。 今のところ、私を困らせている部分は、サービスのインストールが正常に完了し、EventLog ソースを作成した後に NullReferenceException がスローされるようだと述べていることです。 もし、誰かが私が間違っていることを知っているか、より良いアプローチを持っているなら、それは非常に感謝されるでしょう。
どのように解決するのですか?
sc / service controller utilを試されましたか? タイプ
sc create
をコマンドラインで実行すると、ヘルプエントリが表示されます。 過去にSubversionでこれをやったことがあると思うのですが、その時は この記事 を参照にしたことがあると思います。
http://svn.apache.org/repos/asf/subversion/trunk/notes/windows-service.txt
関連
-
[解決済み] Visual Studioで作成したWindowsサービスをインストールする
-
Win10ショートカットキーBOOK(史上最強の完成度)
-
[解決済み] ファイルが存在しない場合、Windowsサービスをアンインストールするにはどうすればよいですか?
-
[解決済み] Visual Studioのコードターミナルで、管理者権限でコマンドを実行するには?
-
[解決済み] Git Bashが私のPATHを認識しない
-
[解決済み] Phonegap Cordovaのインストール Windows
-
[解決済み] Windowsのバッチファイルで "are you sure "プロンプトを表示させるには?
-
[解決済み] Windowsでinotifyのようなものはありますか?
-
[解決済み] ブラウザからアプリケーションを起動するには?
-
[解決済み] cmdコールでフォルダ内のすべてのファイルとフォルダを削除する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] bat ファイルで複数の maven コマンドを実行するには?
-
[解決済み] CMDがAdministratorとして実行されているか、または昇格した特権を持っているかどうかを検出する方法は?
-
[解決済み] AltGrキーが効かない、代わりにCtrl+AltGrを使わなければならない [閉店]。
-
[解決済み] 行末を保持する
-
[解決済み] Phonegap Cordovaのインストール Windows
-
[解決済み] WindowsのIF内のバッチSETが機能しない
-
[解決済み] Windowsのバッチファイルで "are you sure "プロンプトを表示させるには?
-
[解決済み] cmdコールでフォルダ内のすべてのファイルとフォルダを削除する方法
-
[解決済み] WSL (Bash on Windows) のルートファイルシステムを別のハードディスクに移動する?
-
[解決済み] Windowsのバッチファイルから%PATH%に実行ファイルが存在するかどうかをテストする方法は?