2011-01-18 177 views
2

我開始說我是使用Inno setup的新手,如果這是一個愚蠢的問題,我很抱歉。 我正試圖在卸載應用程序的過程中刪除一個包含所有子文件夾和文件的文件夾。當應用程序首次符號時,特定的文件夾將在「我的文檔」中創建。對於刪除它,我現在用的是「Delltree」功能:使用Inno Setup卸載時刪除文件夾的問題

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); 
var Ceva: integer; 
begin 
    case CurUninstallStep of 
    usUninstall: 
     begin 
     MsgBox('CurUninstallStepChanged:' #13#13 'Uninstall is about to start.', mbInformation, MB_OK) 
     end; 
    usPostUninstall: 
     begin 
      Ceva := MsgBox('CurUninstallStepChanged:' #13#13 'Do you want to delete the folder ?.', mbConfirmation, MB_YESNO) 
     if Ceva = idYES then 
     DelTree('{userdocs}\myfolder', True, True, True);   
     end; 
    end; 

出於某種原因,「{}用戶文檔」常數似乎沒有奏效。如果我把文件夾「DelTree('C:\ Users \ myuser \ Documents \ myfolder',True,True,True)的確切路徑;」一切工作正常。

回答

2

當您在代碼中使用常量時,您需要使用ExpandConstant函數。所以,你的Deltree之命令應該是:

DELTREE( 'ExpandConstant({}用戶文檔)\ MyFolder文件', 真,真,真);

或者,你看過[UninstallDelete]部分嗎?它可以在卸載時刪除目錄和文件,而不需要代碼。

+0

非常感謝。 DelTree('ExpandConstant({userdocs})\ myfolder',True,True,True);完美地工作。我在發佈問題之前嘗試了[UninstallDelete]部分並且它工作正常,但我需要用戶選擇是否要刪除特定文件夾。我沒有找到一種方法來處理[UninstallDelete] – Weasel

+0

對我來說,它適用於這種語法:DelTree(ExpandConstant('{userdocs}')+'\ myfolder',True,True,True); –