NSI での MySQL サイレント インストールと構成

NSI での MySQL サイレント インストールと構成

NSI に MySQL 5.0 をサイレント インストールしたいです。NSI で次のコードを試しました:

  ExecWait 'msiexec /i "$INSTDIR\mysql-essential-5.0.27-win32.msi" /qn'
  ExecWait "C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqlinstanceconfig.exe -i -q ServiceName=MySQL RootPassword=root ServerType=DEVELOPMENT    DatabaseType=MYISAM Port=3306 RootCurrentPassword=root"

これにより、MySQL がインストールされますが、設定は行われません。

設定したい

  • パス=ルート
  • ポート=3306
  • サービス名=Mysql
  • リモートマシンからのルートアクセスを有効にする

編集1

現在設定中です...

serverhost が localhost または 127.0.0.1 の場合は機能しますが、ネットワーク上にある他のシステムの IP アドレスの場合は機能しません。

ネットワーク上の PC からサイレント インストールされたデータベースにアクセスしようとすると、次のエラーが発生します。

ここに画像の説明を入力してください

これは、リモート マシンからのルート アクセスを有効にするためにいくつかのパラメーターを渡す必要があるためだと思います。

答え1

次のようにファイル名を引用符で囲んでみてくださいmysqlinstanceconfig.exe:

ExecWait 'msiexec /i "$INSTDIR\mysql-essential-5.0.27-win32.msi" /qn'
ExecWait "$\"C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqlinstanceconfig.exe$\" -i -q ServiceName=MySQL RootPassword=root ServerType=DEVELOPMENT    DatabaseType=MYISAM Port=3306 RootCurrentPassword=root"

その理由は、実行可能ファイル名へのパスにスペースが含まれているためです。そのパスは、単一のパスを形成するために引用符で囲む必要があります。

答え2

渡されるコマンド全体にスペースが含まれている場合は、ExecWaitで囲む必要があります''

パラメータ内部パラメータにスペースが含まれている場合は、囲む必要があります""。その方法の完璧な例を見ることができます。正しくへの最初の呼び出しでExecWait

注意: コマンドにスペースが含まれる可能性がある場合は、コマンドを引用符で囲んでパラメータと区切る必要があります。例: ExecWait '"$INSTDIR\command.exe" parameters'。

ソース:ドキュメンテーション

関連情報