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ファイルを開くと実行できませんが、入力するとサービスは正常に作成されます。どうすれば修正できますか?
SCを直接呼び出すよりも、エラーやサービスの依存関係を処理する方が簡単です) APIを使用 。この例では、次のことを前提としていることに注意してください。 ANSI Innoを使用しますが、Unicode用にこれを変更するのはかなり簡単です。
ただし、個人的には、インストール/開始/停止/アンインストールコマンドをサービス実行可能ファイル自体に組み込み、自己登録することを好みます。明らかに、これはサードパーティのサービスのために自分で行うことはできませんが、それがすでにこのようなものをサポートしているかどうかを確認することができます。
最後のポイントは、C:フォルダーへのパスをハードコーディングしてはならないということです。代わりに{app}
を使用する必要があります。
このコマンドを[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