从以前的安装中复制文件

时间:2013-07-14 09:13:46

标签: windows-8 inno-setup

为了满足Win 8的要求,我需要将数据文件(data.mpd)从先前安装的安装目录(通常为c:\ProgramFiles,但用户可能已更改为其他内容)复制到新的目录c:\User\....

我怎么能:

  • 获取上一次安装的路径
  • 检查文件data.mpd是否存在
  • 将该文件复制到C:\ Users ...

2 个答案:

答案 0 :(得分:0)

您可以使用包含文件夹路径的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;

答案 1 :(得分:0)

使用DisableDirPage=auto。这将阻止人们在升级时更改安装路径。

然后让您的应用程序(而不是安装程序)在其自己的文件夹中检测此文件,并将其复制到每个用户文件夹。如果多个用户运行您的应用程序(这是拥有每个用户数据的全部要点),这将为您提供最强大的行为。