здесь все работает как часы, только он не уменьшает файлы, а просто бэкапит. Да и кому уже нужны маленькие размеры русификатора??? Нужен функционал! Разберешься сам во всем, да и подсказки есть. 
[Setup]AppName=Chasys Draw IES      
AppVersion=4.12.05
;AppVerName=4.12.05
UsePreviousAppDir=true
DefaultDirName={pf}John Paul Chacha's LabChasys Draw IES
Uninstallable=yes
Compression=lzma2/ultra64
SolidCompression=true
OutputBaseFilename=Chasys Draw IES_4.12.05_RUS
LicenseFile=embeddedLicense.rtf
WizardImageFile=embeddedWizModernImage-Is.bmp
WizardSmallImageFile=embeddedWizardSmallImage.bmp
SetupIconFile=embeddedWXI.ico
EnableDirDoesntExistWarning=True
DirExistsWarning=no
DefaultGroupName=John Paul Chacha's LabChasys Draw IES
[Files]Source: "dllISTask.dll"; DestDir: "{app}"; Flags: solidbreak
Source: "{app}Artist.exe"; DestDir: "{app}"; DestName: "Artist.exe"; Flags: ignoreversion; MinVersion: 0.0,5.0; BeforeInstall: CreateBackup
Source: "{app}cfg_Files.exe"; DestDir: "{app}"; DestName: "cfg_Files.exe"; Flags: ignoreversion; MinVersion: 0.0,5.0; BeforeInstall: CreateBackup
Source: "{app}cfg_Language.exe"; DestDir: "{app}"; DestName: "cfg_Language.exe"; Flags: ignoreversion; MinVersion: 0.0,5.0; BeforeInstall: CreateBackup
Source: "{app}cfg_Portable.exe"; DestDir: "{app}"; DestName: "cfg_Portable.exe"; Flags: ignoreversion; MinVersion: 0.0,5.0; BeforeInstall: CreateBackup
Source: "{app}Converter.exe"; DestDir: "{app}"; DestName: "Converter.exe"; Flags: ignoreversion; MinVersion: 0.0,5.0; BeforeInstall: CreateBackup
Source: "{app}
awPhoto.exe"; DestDir: "{app}"; DestName: "rawPhoto.exe"; Flags: ignoreversion; MinVersion: 0.0,5.0; BeforeInstall: CreateBackup
Source: "{app}Update.exe"; DestDir: "{app}"; DestName: "Update.exe"; Flags: ignoreversion; MinVersion: 0.0,5.0; BeforeInstall: CreateBackup
Source: "{app}LanguageRussian.lang"; DestDir: "{app}Language"; DestName: "Russian.lang"; Flags: ignoreversion; MinVersion: 0.0,5.0
[Icons]Name: "{group}Удалить русификатор"; Filename: "{uninstallexe}"; WorkingDir: "{app}"
[Run]Filename: "{app}Artist.exe"; WorkingDir: "{app}"; Flags: postinstall unchecked
Filename: "http://www.wylek.ru"; Flags: shellexec waituntilidle hidewizard; Tasks: ADAM
[Tasks]Name: "ADAM"; Description: "Посетить сайт русификации"
[CustomMessages]ru.NameAndVersion=%1, версия %2
ru.AdditionalIcons=Дополнительные значки:
ru.CreateDesktopIcon=Создать значок на Рабочем столе
ru.CreateQuickLaunchIcon=Создать значок в Панели быстрого запуска
ru.ProgramOnTheWeb=Сайт %1 в Интернете
ru.UninstallProgram=Деинсталлировать %1
ru.LaunchProgram=Запустить %1
ru.AssocFileExtension=Связать %1 с файлами, имеющими расширение %2
ru.AssocingFileExtension=Связывание %1 с файлами %2...
[Languages]Name: "ru"; MessagesFile: "compiler:LanguagesRussian_rusik.isl"
[Code]// --- Source: бэкап.iss ------------------------------------------------------------
procedure CreateBackup;
var
srcFile, destFile: string;
begin
srcFile:= ExpandConstant(CurrentFileName);
destFile:= srcFile + '.bak';
DeleteFile(destFile);
RenameFile(srcFile, destFile);
end;
procedure RestoreBackup(backupDir: string);
var
srcFile, destFile: string;
FSR, DSR: TFindRec;
FindResult: Boolean;
APath: string;
begin
APath := AddBackslash(backupDir);
FindResult := FindFirst(APath + '*.bak', FSR);
try
while FindResult do
begin
if FSR.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then
begin
srcFile:= APath + FSR.Name;
destFile:= Copy(srcFile, 0, Length(srcFile)-4);
DeleteFile(destFile);
RenameFile(srcFile, destFile);
end;
FindResult := FindNext(FSR);
end;
FindResult := FindFirst(APath + '*.*', DSR);
while FindResult do
begin
if ((DSR.Attributes and FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY) and
not ((DSR.Name = '.') or (DSR.Name = '..')) then
{Recursion} RestoreBackup(APath + DSR.Name);
FindResult := FindNext(DSR);
end;
finally
FindClose(FSR);
FindClose(DSR);
end;
end;
procedure CurUninstallStepChanged1(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usPostUninstall then
begin
RestoreBackup(ExpandConstant('{app}'))
end;
end;
// --- Source: Команда WYLEK.RU.iss ------------------------------------------------------------
var
MouseLabel,SiteLabel: TLabel;
procedure SiteLabelOnClick(Sender: TObject);
var
ErrorCode: Integer;
begin
ShellExec('open', 'http://www.wylek.ru', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode)
end;
procedure SiteLabelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
SiteLabel.Font.Color:=clRed
end;
procedure SiteLabelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
SiteLabel.Font.Color:=clBlue
end;
procedure SiteLabelMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
SiteLabel.Font.Color:=clGreen
end;
procedure SiteLabelMouseMove2(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
SiteLabel.Font.Color:=clBlue
end;
procedure InitializeWizard2();
begin
MouseLabel:=TLabel.Create(WizardForm)
MouseLabel.Width:=WizardForm.Width
MouseLabel.Height:=WizardForm.Height
MouseLabel.Autosize:=False
MouseLabel.Transparent:=True
MouseLabel.OnMouseMove:=@SiteLabelMouseMove2
MouseLabel.Parent:=WizardForm
SiteLabel:=TLabel.Create(WizardForm)
SiteLabel.Left:=10
SiteLabel.Top:=320
SiteLabel.Cursor:=crHand
SiteLabel.Font.Color:=clBlue
SiteLabel.Caption:='Сайт русификации'
SiteLabel.OnClick:=@SiteLabelOnClick
SiteLabel.OnMouseDown:=@SiteLabelMouseDown
SiteLabel.OnMouseUp:=@SiteLabelMouseUp
SiteLabel.OnMouseMove:=@SiteLabelMouseMove
SiteLabel.Parent:=WizardForm
end;
procedure HideInstallPath();
begin
WizardForm.FileNameLabel.Visible := False;
end;
//*******//
procedure ShowInstallPath();
begin
WizardForm.FileNameLabel.Visible := True;
end;
// --- Source: проверка MD5.iss ------------------------------------------------------------
//Не забываем вставить порверку на присутствие проверяемого файла
procedure CurStepChanged3(CurStep: TSetupStep);
var
       MD5,s:string;
       begin
      If CurStep=ssInstall
then
       begin
         MD5 := GetMD5OfFile(ExpandConstant('{app}Artist.exe'));
          If not (MD5 = '919f06cd9e7ac0dd98f673f493af5518') then
         begin
           s:='Ошибка MD5 в файле обновления!' #13#13 'Установка прекращена.';
           MsgBox(s, mbCriticalError, mb_Ok); //Если хеш файла(ов) не соответствует, выдается сообщение, и на этом все действия прекращаются.
         WizardForm.Close; //Закрытие инсталлятора
         Exit; //Прерывание и откат всех действий
end;
end;
end;
//Не забываем дописать еще такую процедуру
procedure CancelButtonClick(CurPage: Integer; var Cancel, Confirm: Boolean);
       begin
       Cancel:=True;
      If CurPage=12 //Это непосредственно страница с индикатором выполнения
then
       begin
       Confirm:=False; //На этой странице отключаем появление сообщения при нажатии на кнопку Отмена
end;
end;
// --- Source: проверка каталога.iss ------------------------------------------------------------
// Проверка присутствия определенных файлов в папке с установленной программой на странице выбора папки назначения
function NextButtonClick4(CurPage: Integer): Boolean;
var
       s:string;
begin
       Result:=True;
       If CurPage=6 then
      begin
        If (FileSearch('Artist.exe', ExpandConstant('{app}'))='')
       then
        begin
          s:='Извините, в директории '+ExpandConstant('{app}')+'' #13 'не обнаружены файлы, подтверждающие подлинность программы.' #13#13 'Пожалуйста, выберите правильный путь для установки обновления.';
          MsgBox(s, mbError, mb_Ok);
          Result:= False
        end;
      end;
end;
// --- Source: закрыть процесс2.iss ------------------------------------------------------------
function KillTask_S(ExeFileName: string): Integer;
        external 'KillTask@files:ISTask.dll stdcall delayload';
function RunTask_S(FileName: string; bFullpath: Boolean): Boolean;
        external 'RunTask@files:ISTask.dll stdcall delayload';
function RunTask_U(FileName: string; bFullpath: Boolean): Boolean;
        external 'RunTask@{app}ISTask.dll stdcall delayload uninstallonly';
function KillTask_U(ExeFileName: string): Integer;
        external 'KillTask@{app}ISTask.dll stdcall delayload uninstallonly';
//**************************************************//
function InitializeSetup5(): Boolean;
begin
        if RunTask_S('Artist.exe', false) then
        begin
          if MsgBox('Программа Chasys Draw IES используется. Закрыть и продолжить установку?', mbInformation, mb_YesNo) = idYes then
          begin
            KillTask_S('Artist.exe');
            Result := True;
          end else
            Exit;
        end;
        Result := True;
end;
procedure CurUninstallStepChanged5(CurUninstallStep: TUninstallStep);
begin
        if CurUninstallStep = usUninstall then
          if RunTask_U('Artist.exe', False) then
          begin
            // прячем форму
            UninstallProgressForm.Visible := False;
            if MsgBox('Программа Chasys Draw IES используется. Закрыть и продолжить удаление?', mbConfirmation, MB_YESNO) = IDYES then
            begin
              KillTask_U('Artist.exe');
              UnloadDll(ExpandConstant('{app}ISTask.dll'));
              // показываем форму
              UninstallProgressForm.Visible := True;
            end
            else
            begin
              MsgBox('Завершите работу Chasys Draw IES, затем снова запустите программу удаления.', mbInformation, MB_OK);
              UnloadDll(ExpandConstant('{app}ISTask.dll'));
              Abort;
            end;
          end;
end;
// --- Dispatching code ------------------------------------------------------------
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
       CurUninstallStepChanged1(CurUninstallStep);
       CurUninstallStepChanged5(CurUninstallStep);
end;
procedure InitializeWizard();
begin
       InitializeWizard2();
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
       CurStepChanged3(CurStep);
end;
function NextButtonClick(CurPageID: Integer): Boolean;
begin
       Result := NextButtonClick4(CurPageID); if not Result then exit;
end;
function InitializeSetup(): Boolean;
begin
       Result := InitializeSetup5(); if not Result then exit;
end;