Имя пользователя:
Пароль:
 

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

Аватара для Dodakaedr

Ветеран


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

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


Цитата ZVSRus:
но что-то не припоминаю примера на запаковку в архив »
Цитата vovann01:
Мне нужно, сделать бекап до установки, запихнув несколько папок в архив. »
Вызывайте Backup сколько нужно.
Пример

Код: Выделить весь код
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
OutputDir=.

[Files]
Source: "7za.exe"; DestDir: "{app}\7z"; Flags: onlyifdoesntexist uninsneveruninstall
Source: "compiler:Languages\*"; DestDir: "{app}\Lang2";
Source: "compiler:Help\*"; DestDir: "{app}\Help2";

[Code]
procedure Restore(strFile, DestDir: String);
var
rs: integer;
begin
  if Fileexists(ExpandConstant('{app}\7z\7za.exe')) then
  begin
  Exec(ExpandConstant('{app}\7z\7za.exe'), ' x '+'"'+strFile+'"'+' -y -o'+'"'+DestDir+'"', '', SW_Hide, ewWaitUntilTerminated, rs);
  DeleteFile(strFile);
  end;
end;

procedure Backup(bkfile, fromDir: String);
var
i: integer;
begin
  if not FileExists(ExpandConstant('{tmp}\7za.exe')) then ExtractTemporaryFile('7za.exe');
  Exec(ExpandConstant('{tmp}\7za.exe'), ' a ' +'"' +bkfile +'.7z' +'"' +' -r ' +'"' +fromDir +'"', '', SW_Hide, ewWaitUntilTerminated, i);
  DeleteFile(ExpandConstant('{tmp}\7za.exe'));
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssInstall then
  if DirExists(ExpandConstant('{app}')) then
    begin
      WizardForm.StatusLabel.Caption := 'Архивация данных, пожалуйста, подождите...';
      Backup(ExpandConstant('{app}\Backup\Bak'), ExpandConstant('{app}\Help2'));
      Backup(ExpandConstant('{app}\Backup\Bak'), ExpandConstant('{app}\Lang2'));
    end;
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
  if CurUninstallStep = usDone then
  if FileExists(ExpandConstant('{app}\Backup\Bak.7z')) then
  begin
  Restore(ExpandConstant('{app}\Backup\Bak.7z'), ExpandConstant('{app}'));
  RemoveDir(ExpandConstant('{app}\Backup'));
  DelTree(ExpandConstant('{app}\7z'), true, true, true);
  end;
end;

-------
Inno Setup 5 Ultra Unicode


Последний раз редактировалось Dodakaedr, 31-03-2016 в 10:02.

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

Отправлено: 09:45, 31-03-2016 | #1473