web-dev-qa-db-ja.com

Inno SetupでWindowsサービスをインストールするにはどうすればよいですか?

InnoSetupで作成したインストール後に実行するバッチスクリプトを作成しました。問題は、サービスを作成するための次のコマンドラインがあることです。

sc create MySQL start= auto DisplayName= MySQL binPath= "C:\MyApp\MySQL 5.5\bin\mysqld" --defaults-file="C:\MyApp\MySQL 5.5\my.ini"

アクセント付きの文字がこのコードの問題です。cmdでbatファイルを開くと実行できませんが、入力するとサービスは正常に作成されます。どうすれば修正できますか?

11
juniorgarcia

SCを直接呼び出すよりも、エラーやサービスの依存関係を処理する方が簡単です) APIを使用 。この例では、次のことを前提としていることに注意してください。 ANSI Innoを使用しますが、Unicode用にこれを変更するのはかなり簡単です。

ただし、個人的には、インストール/開始/停止/アンインストールコマンドをサービス実行可能ファイル自体に組み込み、自己登録することを好みます。明らかに、これはサードパーティのサービスのために自分で行うことはできませんが、それがすでにこのようなものをサポートしているかどうかを確認することができます。

最後のポイントは、C:フォルダーへのパスをハードコーディングしてはならないということです。代わりに{app}を使用する必要があります。

14
Miral

このコマンドを[RUN]セクションに追加するか(TLamaが提案したように)、[CODE]セクションにAfterInstall関数を作成することができます。

[Run] 
Filename: "{cmd}"; Parameters: "sc create MySQL start= auto DisplayName= MySQL 
binPath= ""C:\MyApp\MySQL 5.5\bin\mysqld"" 
--defaults-file=""C:\MyApp\MySQL 5.5\my.ini"""; 
Flags: runhidden
4
RobeN