2013-05-13 28 views
5

バイナリが2つあり、それらのサービスを作成する必要があります。私は "sc create"を使用して解決策を試しましたHow to install a Windows service with Inno Setup?Innoセットアップ: "sc create"を使用してWindowsサービスをインストールする

しかし、それは私のためには機能しませんでした。それはインストールの最後に立ち往生しています。私は間違って何をしていますか? - 変更なし

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

私はcmd代わりの{cmd}を使用してみました:

は、ここに私のコードです。

私が言及した解決策ではパスカルコードを試しませんでした。私はそれを最後の手段として守っています。

+1

[Inno SetupでWindowsサービスをインストールするには?](http://stackoverflow.com/questions/15204587/how-to-install-a-windows-service-with-inno -setup) – TLama

+1

だから、あなたが言及した解決策にあるパスカルコードを使用しなければならないということを意味する。 – rakesh

+2

あなたはそうする必要はありません。 – TLama

答えて

15

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

[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 

これは私の問題を解決し、なぜ私はこのケースではパスカルを使用する必要がありますか。?

+6

*この場合、Pascalを使用するのはなぜですか?*このスクリプトで何か問題が生じた場合は、対処できないか、反応しませんか?私はあなたが今気にしないことを知っていますが、間もなくあなたはそうします。インストールが成功したことを伝えると、サービスが実際に停止するためにアプリケーションが実行されていることを期待してアプリケーションを実行しても、ユーザーは驚くかもしれませんが、インストーラでサービスを開始しようとして失敗した。 – TLama

+1

それは良い点です。ちゃんと覚えておきますよ。ありがとう – rakesh

8

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

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

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

あなたがエラーを検出し、対処することができますthis answerで述べたように、サービスをインストールする正しい方法は、APIであることに注意してください。

1

理由だけでなく

[実行] ファイル名:{}のsys \ SC.EXE。パラメータ:/インストール

+3

'/ install'パラメータがないためです。少なくとも、サービスファイル名を知らなければ、ツールは何をするか分からなくなるでしょう。 – TLama

+1

これはまた、7ヶ月前に回答を複製します。 – Deanna

関連する問題