
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:
Ich denke, das liegt daran, dass ich einige Parameter übergeben und den Root-Zugriff vom Remote-Computer aktivieren muss.
Antwort1
Versuchen Sie, den mysqlinstanceconfig.exe
Dateinamen 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 ExecWait
sollte 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