2013-03-04 56 views
9

インストール後にInno Setupで実行するバッチスクリプトを作成しました。アクセントとInno SetupでWindowsサービスをインストールするには?

sc create MySQL start= auto DisplayName= MySQL binPath= "C:\A Nova Solução Informática\MySQL 5.5\bin\mysqld" --defaults-file="C:\A Nova Solução Informática\MySQL 5.5\my.ini" 

文字が、私はCMDでbatファイルを開いた場合、私はそれを実行することはできません、このコードの問題ですが、とき:問題は、私は私のサービスを作成するための次のコマンドラインを持っているということです私はサービスが正常に作成された入力します。どうすれば修正できますか?

+1

'AfterInstall'と' Exec'関数または '[Run]' 'Filename:" {cmd} "を使うことができます。パラメータ: "sc create MySQL start = auto DisplayName = MySQL binPath =" "C:\ A NovaSoluçãoInformática\ MySQL 5.5 \ bin \ mysqld" --defaults-file = "" C:\ A NovaSoluçãoInformática\ MySQL 5.5 \ my.ini "" "; Flags:runhidden' – RobeN

+1

バッチファイルの先頭に 'CHCP 65001'を追加し、BOMなしでUTF-8として保存してください。 @Roben、または単に '[Run]'セクションにあります。 – TLama

+0

@RobeN、あなたのソリューションは部分的に私を助けました。問題は、サービスのインストール後、cmdプロセスが開かれたままになり、インストールが完了しないということです。 – juniorgarcia

答えて

3

[RUN]セクションにこのコマンドを追加するか、の機能を[CODE]セクションに作成してみてください。

[Run] 
Filename: "{cmd}"; Parameters: "sc create MySQL start= auto DisplayName= MySQL 
binPath= ""C:\A Nova Solução Informática\MySQL 5.5\bin\mysqld"" 
--defaults-file=""C:\A Nova Solução Informática\MySQL 5.5\my.ini"""; 
Flags: runhidden 
+1

このコードを誰かがテストしましたか?このコードを使用しようとしていますが、動作しません。 cmdウィンドウはポップアップして何もしません。 – Newbee

+0

@Govs 'Parameters'(' cmd/c sc ... ')の始めに'/c'を試しましたか、単に 'Filename:" sc ";パラメータ: "create ..." ' – Matthieu

+0

'ファイル名: "sc";パラメータ: "create service_name start = auto DisplayName = display_name binPath =" "{sys} \ service_name.exe" ""; Flags:runascurrentuser runhidden'は私のために働きます –

11

直接ではなく、SCを呼び出し、それがuse the APIに(エラーやサービスの依存関係に対処するため、より簡単)クリーナーです。この例ではANSI Innoを使用していることを前提としていますが、これをUnicode用に変更するのはかなり簡単です。

個人的には、サービス実行ファイル自体にinstall/start/stop/uninstallコマンドを作成して自己登録することを好みます。明らかに、これは第三者サービスのために自分自身を行うことはできませんが、すでにこのようなものがサポートされているかどうかを確認することができます。

最後に、C:フォルダへのパスをハードコードしないでください。代わりに{app}を使用する必要があります。

+0

あなたはすでにUnicode版のAPIをお持ちですか?私はそれを大いに必要とします。ありがとうございました! –

+2

@MaikenRoskilde Unicode Inno Setupを使用している場合は、代わりに 'external'エントリの' @ '記号の直前の' A'接尾辞を 'W'に変更してください。その他の変更は必要ありません。 – Miral

+0

Silvio Iaccarinoのリンクされたスクリプトは私のために働かなかった。私はUnicode Inno Setupを使用していましたが、サフィックスを変更してみましたが、うまく動作しませんでした。私は、「サービスマンは利用できません」またはこれに類似したエラーを受けていました。 **私のために**働いた代替スクリプト/ライブラリについては、[この回答](https://stackoverflow.com/a/5416744/207981)を参照してください。 – bszom

関連する問題