考慮以下幾點:備份文件並使用InnoSetup進行卸載時恢復它們?
我有兩個文件,例如
XXX.txt
和YYY.txt
我想將它們安裝到一個文件夾(比方說
files
),其中已經有XXX.txt
和YYY.txt
文件我想「備份」兩個原始文件,將它們重命名爲
XXX.txt.backup
和YYY.txt.backup
在卸載我想這兩個文件恢復到原來的狀態
如何我Inno Setup的實現這一目標?
考慮以下幾點:備份文件並使用InnoSetup進行卸載時恢復它們?
我有兩個文件,例如XXX.txt
和YYY.txt
我想將它們安裝到一個文件夾(比方說files
),其中已經有XXX.txt
和YYY.txt
文件
我想「備份」兩個原始文件,將它們重命名爲XXX.txt.backup
和YYY.txt.backup
在卸載我想這兩個文件恢復到原來的狀態
如何我Inno Setup的實現這一目標?
好吧,也許一個彈出窗口說「已經有一個XXX.txt.backup,你真的想覆蓋它嗎?」
添加
[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;
Source: "{app}\XXX.txt"; DestDir: "{app}"; DestName: "XXX.txt.bkup"; Flags: external skipifsourcedoesntexist uninsneveruninstall
似乎沒有工作,因爲「編譯器將預先考慮安裝的源目錄的路徑,如果你不指定一個完全合格的路徑。」
但是,我剛剛發現這工作正常!我已經放棄了「外部」國旗。
歡迎來到StackOverflow。由於這不是一個答案,而是跟進另一個答案,你可以將它作爲評論發佈嗎?如果答案是錯誤的,您可以使用適當的說明進行編輯,並且會得到更多經驗豐富的用戶的批准。謝謝 – Deanna 2012-09-21 09:01:33
如果安裝程序在該文件夾中發現「XXX.txt.backup」,您希望發生什麼 - 跳過備份?覆蓋舊的備份? – mghie 2010-08-21 16:26:10