爲了適應運8的要求,我需要從以前安裝的安裝目錄複製數據文件(data.mpd
)(通常c:\ProgramFiles
但用戶可能已經更改爲別的東西)到一個新的目錄c:\User\....
複製文件從以前的安裝
如何我:
- 獲取先前的路徑安裝
- 檢查,如果該文件存在data.mpd
- 將該文件複製到C:\用戶...
爲了適應運8的要求,我需要從以前安裝的安裝目錄複製數據文件(data.mpd
)(通常c:\ProgramFiles
但用戶可能已經更改爲別的東西)到一個新的目錄c:\User\....
複製文件從以前的安裝
如何我:
您可以使用WizardForm.PrevAppDir
屬性,其持有的文件夾路徑,其中具有一定AppId
安裝以前安裝的應用程序(如空尚未安裝)。請注意,此屬性在嚮導窗體初始化後填充,因此請在InitializeWizard
事件之後閱讀它。
對於你的任務,我會在安裝前階段做這個手術,所以對於CurStepChanged
事件的方法,我會寫這樣的:
[Code]
procedure CurStepChanged(CurStep: TSetupStep);
var
DataFilePath: string;
begin
// check if the current step is pre-installation step and if the
// application had been previously installed; if so, then...
if (CurStep = ssInstall) and (WizardForm.PrevAppDir <> '') then
begin
// build and store the path to the Data.mpd file from the prev.
// installation path
DataFilePath := AddBackslash(WizardForm.PrevAppDir) + 'Data.mpd';
// check, if that Data.mpd file exists; if so, then...
if FileExists(DataFilePath) then
// copy it to the target directory; if it fails, show error message
if not FileCopy(DataFilePath, <your new directory here>, False) then
MsgBox('Copying of the Data.mpd failed!', mbError, MB_OK);
end;
end;
使用DisableDirPage=auto
。這會阻止人們在升級時更改安裝路徑。
然後讓您的應用程序(而不是安裝程序)在自己的文件夾中檢測到此文件並將其複製到每個用戶文件夾。如果多個用戶運行你的應用程序(這是每個用戶數據的完整點),這將爲你提供最強大的行爲。
如果我弄明白了,你想要得到以前安裝應用程序的路徑,檢查是否有'data.mpd'文件並將該文件複製到'C:\ Users \ ..'文件夾中,是對的嗎 ? – TLama
是的...重點是它可以位於C:\ ProgramFiles(因爲這是InnoSetup提出的默認目錄),但不能保證(用戶可以更改默認目錄)... – TGMDev