私は数か月前に開発した Windows サービス アプリを持っていますが、遠く離れた Windows Server 2012 でも問題なく動作していました。しかし、マイナー アップデートの後、サーバーに再インストールする必要がありました。このサーバー、エラーが発生します。完全なコマンド ライン ダイアログは次のとおりです。
アセンブリ 'c:\Program Files\My Company\MyServiceApp\MyServiceApp.exe' をインストールしています。影響を受けるパラメータは次のとおりです。
logtoconsole =
assemblypath = c:\Program Files\My Company\MyServiceApp\MyServiceApp.exe
ログファイル = c:\Program Files\My Company\MyServiceApp\MyServiceApp.InstallLogサービス SendHistoryService をインストールしています...
サービス SendHistoryService が正常にインストールされました。
EventLog ソース SendHistoryService をログ アプリケーションに作成しています...
System.ServiceProcess.ServiceInstaller の OnAfterInstall イベント ハンドラで例外が発生しました。
System.InvalidOperationException: コンピューター '.' でサービス SendHistoryService を開始できません。
内部例外 System.ComponentModel.Win32Exception がスローされ、次のエラー メッセージが表示されました: サービスは開始要求または制御要求にタイムリーに応答しませんでした。
アセンブリ 'c:\Program Files\My Company\MyServiceApp\MyServiceApp.exe' をロールバックしています。
影響を受けるパラメータは次のとおりです。logtoconsole =
assemblypath = c:\Program Files\My Company\MyServiceApp\MyServiceApp.exe
ログファイル = c:\Program Files\My Company\MyServiceApp\MyServiceApp.InstallLogソース SendHistoryService のイベント ログを以前の状態に復元しています。
サービス SendHistoryService はシステムから削除されています...
サービス SendHistoryService はシステムから正常に削除されました。
サービス インストーラーは、私のローカル マシン (W8.1) でも完全に動作することに注意してください。インストーラーには、実際には "SendHistoryService" と "GeneratorService" という 2 つの個別のサービスが含まれていますが、ご覧のとおり、インストーラーは最初のインストールを試行中に失敗します。関連性がある場合、プロセスは次の行で約 30 秒間スタックします。
Creating EventLog source SendHistoryService in log Application...
もちろん、私が最初にチェックしたのは OnAfterInstall イベント ハンドラですが、そこでは何も問題が発生していないようです。
[RunInstaller(true)]
public partial class ProjectInstaller : Installer
{
public ProjectInstaller() { InitializeComponent(); }
private void ServiceProcessInstaller_AfterInstall(object sender, InstallEventArgs e) { }
private void GeneratorServiceInstaller_AfterInstall(object sender, InstallEventArgs e)
{
using (var sc = new ServiceController(GeneratorServiceInstaller.ServiceName))
sc.Start();
}
private void SendHistoryServiceInstaller_AfterInstall(object sender, InstallEventArgs e)
{
using (var sc = new ServiceController(SendHistoryServiceInstaller.ServiceName))
sc.Start();
}
}
ここで何が起こっているのか本当に理解できません。どんな手掛かり ?
編集: ProjectInstaller クラスでサービスを開始する行にコメントを付けてみました。これでインストールは正常に実行されますが、サービスを開始しようとすると失敗し、次のエラー メッセージが表示されます。
Windows は、ローカル コンピューターで SendHistoryService サービスを開始できませんでした。
エラー 1053: サービスは開始要求または制御要求にタイムリーに応答しませんでした。