Inno Setupを使用して[Icons]
セクションのコマンドプロンプトを使用してWindowsサービスを再起動したい。問題を解決するのを手伝ってください。
sc start [service]
を使用してサービスを開始し、sc stop [service]
を使用して停止できます。一部のサービスでは、net start [service]
が同じことをしています。
ただし、同じバッチで使用する場合は、sc stop
がサービスの停止を待たないことに注意してください。この場合、net stop [service]
に続いてnet start [service]
を使用する必要があります。これは同期的に実行されます。
次の内容の.batファイルを作成できます。
net stop "my service name"
net start "my service name"
net.exe stop "servicename" && net.exe start "servicename"
実行中のサービスを再起動するには:
net stop "service name" && net start "service name"
ただし、サービスが最初に実行されているかどうかがわからず、再起動または開始する場合は、次を使用します。
net stop "service name" & net start "service name"
これは、サービスが既に実行されているかどうかにかかわらず機能します。
参考までに、条件処理シンボルの documentation を参照してください。
これは、SC
コマンドを使用してWindowsサービスを開始/停止するための私のコードです。サービスの開始/停止に失敗すると、ログ情報が出力されます。 Inno Setupで試すことができます。
{ start a service }
Exec(ExpandConstant('{cmd}'), '/C sc start ServiceName', '',
SW_HIDE, ewWaitUntilTerminated, ResultCode);
Log('sc start ServiceName:'+SysErrorMessage(ResultCode));
{ stop a service }
Exec(ExpandConstant('{cmd}'), '/C sc stop ServiceName', '',
SW_HIDE, ewWaitUntilTerminated, ResultCode);
Log('sc stop ServiceName:'+SysErrorMessage(ResultCode));
[〜#〜] sc [〜#〜] コマンドを使用して、サービスの開始と停止、およびクエリを実行できます。 innosetupに関しては、よくわかりません。
PowerShellの機能は Restart-Service
コマンドレット。必要に応じてサービスを開始または再起動します。
Restart-Service
コマンドレットは、指定されたサービスのWindowsサービスコントローラーに停止メッセージを送信してから、開始メッセージを送信します。サービスがすでに停止している場合は、エラーを通知せずに開始されます。サービスをサービス名または表示名で指定するか、
InputObject
パラメーターを使用して、再起動する各サービスを表すオブジェクトを渡すことができます。
これは、2つの個別のコマンドを実行するよりも簡単です。
これを使用する最も簡単な方法は、サービス名または表示名を直接渡すだけです。
Restart-Service 'Service Name'
次のようなコマンドを使用して、標準のcmdプロンプトから直接使用できます。
powershell -command "Restart-Service 'Service Name'"