0

我需要從NSIS安裝程序備份MySQL數據庫。我在我嘗試的腳本中丟失了一些微不足道的東西:如何從NSIS備份MySQL數據庫

nsExec::Exec '"$mySqlDirectory\bin\mysqldump.exe" --user=$username --password=$password --routines $dbName --execute="source D:\$dbName.sql"' $0 

nsExec::Exec '"$mySqlDirectory\bin\mysqldump.exe" --user=$username --password=$password --routines $dbName --execute="D:\$dbName.sql"' $0 

nsExec::Exec '"$mySqlDirectory\bin\mysqldump.exe" --user=$username --password=$password --execute="--user=$username --password=$password --routines $dbName D:\$dbName.sql"' $0 

nsExec::Exec '"$mySqlDirectory\bin\mysqldump.exe" --user=$username --password=$password --routines $dbName "D:\$dbName.sql"' $0 

nsExec::Exec '"$mySqlDirectory\bin\mysqldump.exe" --user=$username --password=$password /c echo --routines $dbName > "D:\$dbName.sql"' $0 

ExecWait '"$1" /C "$mySqlDirectory\bin\mysqldump.exe" --user=$username --password=$password --routines $dbName > "D:\$dbName.sql"' $0 

ExecWait '/C "$mySqlDirectory\bin\mysqldump.exe" --user=$username --password=$password --routines $dbName > "D:\$dbName.sql"' $0 

StrCpy $BACKUPFILE "D:\ctvi.sql" 
StrCpy $1 $BACKUPFILE 
ExpandEnvStrings $2 %COMSPEC% 
ExecWait '"$2" /C "$mySqlDirectory\bin\mysqldump.exe" --user=$username --password=$password $dbName > $1' $0 

ExecWait '/C "$mySqlDirectory\bin\mysqldump.exe" -u$username --password=$password -R $dbName >"D:\$dbName.sql"' $0 

他們都沒有工作。傳遞的參數是不是我的最強套裝:(

+0

NSIS語法對我來說看起來很不錯。是否有任何帶空格的參數?在這種情況下,爲它們使用引號--user =「$ username」。使用FileWrite(http://nsis.sourceforge.net/Docs/Chapter4.html#4.9.5.8)並將所有內容寫入.bat文件。然後嘗試執行.bat文件並查看結果。 – Slappy 2012-07-26 04:50:10

+0

@Slappy不,任何地方都沒有空間。我不確定哪些NSIS語法對於我提到的很多。無論如何,我有一個工作解決方案。 – nawfal 2012-07-26 06:22:35

回答

0

這爲我工作。

StrCpy $1 "D:\ctvi.sql" 
ExpandEnvStrings $2 %COMSPEC% 
ExecDos::exec /NOUNLOAD '"$2" /C "$mySqlDirectory\bin\mysqldump.exe" --user=$username --password=$password $dbName > $1' $0 

其重要不包括路徑"D:\ctvi.sql"這樣在執行命令,也不要引用路徑變量,爲什麼我用$1,也沒有引用。