web-dev-qa-db-ja.com

Inno Setup:「sccreate」を使用したWindowsサービスのインストール

2つのバイナリがあり、それらのサービスを作成する必要があります。 Inno SetupでWindowsサービスをインストールするにはどうすればいいですか? から「sccreate」を使用して解決策を試しました。

しかし、それは私にとってはうまくいきませんでした。インストールの最後にスタックします。私は何が間違っているのですか?

これが私のコードです:

Filename: {cmd}; Parameters: "sc create srvname start= auto DisplayName= mysrv binPath= {app}\mybinary.exe" ; Flags: runhidden

{cmd}の代わりにcmdを使用してみました-変更はありません。

参照したソリューションでPascalコードを試しませんでした。私はそれを最後の手段として維持しています。

12
rakesh

私はこのコードを使用し、両方のサービスがインストールとアンインストールを行っています。

[run]
Filename: {sys}\sc.exe; Parameters: "create mysrv start= auto binPath= ""{app}\mysrv.exe""" ; Flags: runhidden

[UninstallRun]
Filename: {sys}\sc.exe; Parameters: "stop mysrv" ; Flags: runhidden
Filename: {sys}\sc.exe; Parameters: "delete mysrv" ; Flags: runhidden

これで問題が解決したのに、なぜこの場合にPascalを使用する必要があるのでしょうか。

23
rakesh

{cmd}を実行しようとしている理由はありますか?

/Cパラメーターを追加し、必要に応じて残りを引用するか、必要なパラメーターを指定してsc.exeを実行します。

[Run]
Filename: "sc.exe"; Parameters: "create srvname start= auto DisplayName= mysrv binPath= {app}\mybinary.exe" ; Flags: runhidden 

サービスをインストールする正しい方法は、 この回答 で説明されているAPIであり、エラーを検出して処理できることに注意してください。

10
Deanna