
我想在 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
- 並啟用遠端電腦的 root 存取權限
編輯1
現在正在配置中...
對於 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”參數'。
來源:文件