Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Сообщения: 517
Благодарности: 314

Профиль | Отправить PM | Цитировать


Цитата habib2302:
как добавить чекбокс на создание резервной копии файлов? »
Например, так
Код: Выделить весь код
[Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirName={pf}\MyApp
OutputDir=...
Compression=none

[Files]
Source: C:\Windows\Fonts\*; DestDir: {app}; BeforeInstall: CreateBackup(); Flags: recursesubdirs overwritereadonly createallsubdirs ignoreversion;

[Code]
#ifdef UNICODE
 type
  PChar = PAnsiChar;
#endif

function MoveFile(const TargetFile, BackupFile: PChar):Integer; external 'MoveFileA@kernel32.dll stdcall';

var
  CreateBackup_On_Off: TNewCheckBox;

function CheckedBoxes(const iParams: Integer): Boolean;
begin
  case iParams of
    1: Result := CreateBackup_On_Off.Checked;
  end;
end;

procedure CreateBackup();
var
  FinalDir, TargetFile, BackupFile, TargetPath, ShortPath: String;
begin
  if CheckedBoxes(1) then
  begin
    TargetPath:= ExpandConstant('{app}');
    TargetFile:= ExpandConstant(CurrentFileName);
    FinalDir := AddBackslash(ExpandConstant('{app}\Original.old')) + GetDateTimeString('YYYY/MM/DD', '-', '-');
    ShortPath:= TargetFile;
    StringChangeEx(ShortPath, TargetPath, '', True);
    BackupFile:= FinalDir + ShortPath;
    ForceDirectories(ExtractFilePath(BackupFile));
    MoveFile(PChar(TargetFile), PChar(BackupFile));
  end;
end;

procedure InitializeWizard();
begin
  CreateBackup_On_Off := TNewCheckBox.Create(nil);
  with CreateBackup_On_Off do
  begin
    Parent := WizardForm.SelectDirPage;
    SetBounds(WizardForm.DirEdit.Left, WizardForm.DirEdit.Top + 30, WizardForm.DirEdit.Width, WizardForm.DirEdit.Height);
    Caption := 'Сохранить резервную копию перезаписываемых файлов';
  end;
end;

Последний раз редактировалось saurn, 24-05-2013 в 11:20.

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:48, 24-05-2013 | #530