Вы можете использовать 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;
Если я правильно понял, вы хотите получить путь к предыдущей установке вашего приложения, проверьте, есть ли файл 'data.mpd' и скопируйте этот файл в папку' C: \ Users \ .. ' это правильно ? – TLama
Да ... Дело в том, что оно может быть расположено в C: \ ProgramFiles (так как это значение по умолчанию, предложенное InnoSetup), но это не гарантировано (пользователь мог изменить исходный каталог) – TGMDev