MySQL im Hintergrund installieren und konfigurieren in NSI

MySQL im Hintergrund installieren und konfigurieren in NSI

Ich möchte MySQL 5.0 im Hintergrund in NSI installieren. Ich habe den folgenden Code in NSI ausprobiert:

  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"

Dadurch wird MySQL installiert, aber nicht konfiguriert.

Ich möchte es konfigurieren mit

  • pass=root
  • Port = 3306
  • Dienstname=Mysql
  • und aktivieren Sie den Root-Zugriff vom Remote-Computer

BEARBEITEN1

Jetzt wird es konfiguriert...

Für Serverhosts wie localhost oder 127.0.0.1 funktioniert es, aber nicht für die IP-Adressen der anderen Systeme, die im Netzwerk sind.

Wenn ich versuche, von einem PC im Netzwerk auf die Datenbank einer im Hintergrund installierten Datenbank zuzugreifen, erhalte ich die folgende Fehlermeldung:

Bildbeschreibung hier eingeben

Ich denke, das liegt daran, dass ich einige Parameter übergeben und den Root-Zugriff vom Remote-Computer aktivieren muss.

Antwort1

Versuchen Sie, den mysqlinstanceconfig.exeDateinamen in Anführungszeichen zu setzen, etwa so:

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"

Der Grund hierfür ist, dass der Pfad zum Namen der ausführbaren Datei Leerzeichen enthält. Dieser Pfad muss in Anführungszeichen gesetzt werden, damit er einen einzelnen Pfad bilden kann.

Antwort2

Der gesamte übergebene Befehl ExecWaitsollte in „Eingeschlossen“ gesetzt werden, ''wenn er Leerzeichen enthält.

Die ParameterinnenIhre Parameter müssen eingeschlossen werden, ""wenn sie Leerzeichen enthalten. Sie können ein perfektes Beispiel dafür sehen, wie es gehtkorrektbei Ihrem ersten Anruf an ExecWait.

Beachten Sie: Wenn der Befehl Leerzeichen enthalten könnte, sollten Sie ihn in Anführungszeichen setzen, um ihn von den Parametern abzugrenzen. Beispiel: „ExecWait ‚"$INSTDIR\command.exe" Parameter‘.“

Quelle:Dokumentation

verwandte Informationen