2012-08-13 71 views
0

我有一個安裝程序,查找舊版本,並作爲卸載過程的一部分,備份在一個文件夾中。NSIS難以移動的文件夾

對於備份,我已經試過Rename(它有時會失敗),然後CreateDirectory然後CopyFiles刪除它們(耗時,大量的文件和目錄),並最好使用Move Folder,其中每個功能替換其非版本(如.MoveFolder_Locate_moveFile - >un.MoveFolder_Locate_moveFile)。

StrCpy $switch_overwrite 1 
!insertmacro un.MoveFolder "$INSTDIR" "$BACKUP_FOLDER" "*.*" 

這是工作的罰款...

然而,我正在啓動與卸載程序:只要我把它chnaged到

ExecWait '$R0 _?=$INSTDIR' 

的MoveFile給

ExecWait '$R0' 

一個錯誤。

回答

1

運行不帶_?=的卸載程序會導致卸載程序將自己復​​制到$ temp,然後從那裏運行新的實例(不需要等待)。你應該嘗試一下這種混合;將卸載程序自己複製到$ temp並使用_?= $ instdir運行,這應該允許您在不鎖定$ instdir的情況下等待進程...

相關問題