2010-08-20 14 views
4

考慮以下幾點:備份文件並使用InnoSetup進行卸載時恢復它們?

  • 我有兩個文件,例如XXX.txtYYY.txt

  • 我想將它們安裝到一個文件夾(比方說files),其中已經有XXX.txtYYY.txt文件

  • 我想「備份」兩個原始文件,將它們重命名爲XXX.txt.backupYYY.txt.backup

  • 在卸載我想這兩個文件恢復到原來的狀態

如何我Inno Setup的實現這一目標?

+0

如果安裝程序在該文件夾中發現「XXX.txt.backup」,您希望發生什麼 - 跳過備份?覆蓋舊的備份? – mghie 2010-08-21 16:26:10

回答

-1

好吧,也許一個彈出窗口說「已經有一個XXX.txt.backup,你真的想覆蓋它嗎?」

12

添加

[Files] 
; Backup Function_Template 
Source: "{app}\XXX.txt"; DestDir: "{app}"; DestName: "XXX.txt.bkup"; Flags: external skipifsourcedoesntexist uninsneveruninstall 

這將移動現有的文件和標誌將阻止卸載它。現在,在代碼中,你可以把

[Code] 
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); 
var 
    OldFile: string; 
begin 
    case CurUninstallStep of  
    usPostUninstall: 
     begin 
     OldFile := ExpandConstant('{app}\XXX.txt.bkup'); 
     if FileExists(OldFile) then 
      RenameFile(OldFile, ExpandConstant('{app}\XXX.txt')); 
     end; 
    end; 
end; 
0
Source: "{app}\XXX.txt"; DestDir: "{app}"; DestName: "XXX.txt.bkup"; Flags: external skipifsourcedoesntexist uninsneveruninstall 

似乎沒有工作,因爲「編譯器將預先考慮安裝的源目錄的路徑,如果你不指定一個完全合格的路徑。」

但是,我剛剛發現這工作正常!我已經放棄了「外部」國旗。

+3

歡迎來到StackOverflow。由於這不是一個答案,而是跟進另一個答案,你可以將它作爲評論發佈嗎?如果答案是錯誤的,您可以使用適當的說明進行編輯,並且會得到更多經驗豐富的用戶的批准。謝謝 – Deanna 2012-09-21 09:01:33

相關問題