ISDone

DLL ISDone 0.6 final

Нет прав для скачивания

Angeleron

Мимокрокодил
Здравствуйте.
Я совсем недавно начал заниматься репаками. Inno Setup для меня уже более менее понятен, но ISDone для меня крайне тяжел в освоении.
Не могли бы вы подсказать как исправить в моем коде следущее:
1. Как добавить окно Ready Page. и окно лицензии - принцип добавления - в той сборке его нет.
2. Как настроить ProgressBar ISDone (Я включил из сообщений выше стандартный но мне бы настроить его - сделать 2 бара - 1 общая установка, второй - данного действия(архива и тп.))
3. Как переместить кнопку Установить на окно перед окном выбора папки в меню пуск и выбор ярлыков (я знаю как убрать это окно, но если я его убираю после кнопки Далее идет установка а мне хочется что бы была кнопка Установить если нельзя выполнить пункт 1)
4. Настроить кнопку отмена (Она останавливает но не отменяет установку)
5. Где можно гайд найти о ISDone что бы знать что лишнее удалить что мне не нужно. А то кода много а что каждый означает - не знаю...
Не серчайте если буду тупить ;)
 

Вложения

Последнее редактирование:

Sephiina

Мимокрокодил
Привет!

Мне нужно, чтобы извиниться за несколько вещей:
Во-первых, для сквернословия (Google Translate виноват).
Во-вторых, это было последнее место, я мог бы надеяться на ответ для моей проблемы, хотя я понимаю, что эта тема о несколько иной вещи. :flagoftruce:

Я приобрел программу в последнее время с самодельным мастера установки. (1 .exe & 5 .bin)
Установщик требует ISDone.dll работать, но у меня Windows Xp не имеет его. Я скачал его, положил его в папку System32 и попытался запустить Regsvr32.exe на нем (не удалось).
Это оригинальный сообщение об ошибке:

C:\Windows\System32\ISDone.dll was loaded, but the DllRegisterServer entry point was not found.
This file can not be registered.

Теперь, я понимаю (от долгих поисков в Интернете), что это не общий файл COM DLL и должны быть зарегистрированы в другой способ, но я не мог найти нигде ответ о том, как это сделать.
Я никогда даже пытался использовать: .NET Regasm.exe, но все же успеха.

Я не большая часть мастера компьютерной, но может сделать с хорошими инструкциями.

Если я слишком много оффтоп, то, пожалуйста, просто ответьте в частном порядке, я не хочу злить никого с моим неуклюжести. :$

Спасибо!
 

Imneror

Мимокрокодил
Ребят помогите пожалуйста, не идет загрузка прогресс бара. Сам прогресс бар отображается, но хода загрузки нету. Прогресс бар ISDone'ский.
Вот собственно модульные скрипты:
ProgressBar.iss
Код:
type
  TImgPB = record  h: HWND; Left, Top, Width, Height, MaxWidth: Integer; img1, img2: Longint; end;

function ImgPBCreate(hParent: HWND; bk, pb: AnsiString; Left, Top, Width, Height: Integer): TImgPB;
begin
  Result.Left:=Left;
  Result.Top:=Top;
  Result.Width:=0;
  Result.Height:=Height;
  Result.MaxWidth:=Width;
  Result.h:= hParent;
  if Length(pb)>0 then Result.img1:=ImgLoad(hParent, pb, Result.Left, Result.Top, 0, Result.Height, True,True) else Result.img1:= 0;
  if Length(bk)>0 then Result.img2:=ImgLoad(hParent, bk, Left, Top, Width, Height, True, True) else Result.img2:=0;
  ImgApplyChanges(Result.h);
end;

procedure ImgPBSetPosition(PB: TImgPB; Percent: Extended);
var
  NewWidth: Integer;
begin
  if PB.img1<>0 then begin
    NewWidth:=Round(PB.MaxWidth*Percent/1000);
    if PB.Width<>NewWidth then begin
      PB.Width:=NewWidth;
      ImgSetPosition(PB.img1,PB.Left,PB.Top,PB.Width,PB.Height);
      ImgSetVisiblePart(PB.img1, ScaleX(0), ScaleY(0), ScaleX(PB.Width), ScaleY(PB.Height));
      ImgApplyChanges(PB.h);
    end;
  end;
end;

procedure ImgPBDelete(PB: TImgPB);
begin
  if PB.img1<>0 then ImgRelease(PB.img1);
  if PB.img2<>0 then ImgRelease(PB.img2);
  PB.img1:=0;
  PB.img2:=0;
  ImgApplyChanges(PB.h);
end;

procedure ImgPBVisibility(var PB :TImgPB; Visible :boolean);
begin
  ImgSetVisibility(PB.img1,Visible);
  ImgSetVisibility(PB.img2,Visible);
end;

[B]ISDone.iss[/B]
[Files]
Source: Include\English.ini; DestDir: {tmp}; Flags: dontcopy
Source: Include\Russian.ini; DestDir: {tmp}; Flags: dontcopy
Source: Include\unarc.dll; DestDir: {tmp}; Flags: dontcopy
Source: Include\ISDone.dll; DestDir: {tmp}; Flags: dontcopy

#ifdef records
Source: records.inf; DestDir: {tmp}; Flags: dontcopy
#endif

#ifdef PrecompInside
Source: Include\CLS-precomp.dll; DestDir: {tmp}; Flags: dontcopy
Source: Include\packjpg_dll.dll; DestDir: {tmp}; Flags: dontcopy
Source: Include\packjpg_dll1.dll; DestDir: {tmp}; Flags: dontcopy
Source: Include\precomp.exe; DestDir: {tmp}; Flags: dontcopy
Source: Include\zlib1.dll; DestDir: {tmp}; Flags: dontcopy
#endif
#ifdef SrepInside
Source: Include\CLS-srep.dll; DestDir: {tmp}; Flags: dontcopy
#endif
#ifdef MSCInside
Source: Include\CLS-MSC.dll; DestDir: {tmp}; Flags: dontcopy
#endif
#ifdef facompress
Source: Include\facompress.dll; DestDir: {tmp}; Flags: dontcopy
#endif
#ifdef precomp
  #if precomp == "0.38"
  Source: Include\precomp038.exe; DestDir: {tmp}; Flags: dontcopy
  #else
    #if precomp == "0.4"
    Source: Include\precomp040.exe; DestDir: {tmp}; Flags: dontcopy
    #else
      #if precomp == "0.41"
      Source: Include\precomp041.exe; DestDir: {tmp}; Flags: dontcopy
      #else
        #if precomp == "0.42"
        Source: Include\precomp042.exe; DestDir: {tmp}; Flags: dontcopy
        #else
        Source: Include\precomp038.exe; DestDir: {tmp}; Flags: dontcopy
        Source: Include\precomp040.exe; DestDir: {tmp}; Flags: dontcopy
        Source: Include\precomp041.exe; DestDir: {tmp}; Flags: dontcopy
        Source: Include\precomp042.exe; DestDir: {tmp}; Flags: dontcopy
        #endif
      #endif
    #endif
  #endif
#endif
#ifdef unrar
Source: Include\Unrar.dll; DestDir: {tmp}; Flags: dontcopy
#endif
#ifdef XDelta
Source: Include\XDelta3.dll; DestDir: {tmp}; Flags: dontcopy
#endif
#ifdef PackZIP
Source: Include\7z.dll; DestDir: {tmp}; Flags: dontcopy
Source: Include\packZIP.exe; DestDir: {tmp}; Flags: dontcopy
#endif

[code]
type
  TCallback = function (OveralPct,CurrentPct: integer;CurrentFile,TimeStr1,TimeStr2,TimeStr3:PAnsiChar): longword;

const
  PCFonFLY=true;
  notPCFonFLY=false;

var
  LabelPct1,LabelCurrFileName,LabelTime1,LabelTime2,LabelTime3: TLabel;

  ISDoneProgressBar1: TImgPB;
  ISDoneCancel:integer;
  ISDoneError:boolean;
  PCFVer:double;

function WrapCallback(callback:TCallback; paramcount:integer):longword;external 'wrapcallback@files:ISDone.dll stdcall delayload';

function ISArcExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutPath, ExtractedPath: AnsiString; DeleteInFile:boolean; Password, CfgFile, WorkPath: AnsiString; ExtractPCF: boolean ):boolean; external 'ISArcExtract@files:ISDone.dll stdcall delayload';
function IS7ZipExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutPath: AnsiString; DeleteInFile:boolean; Password: AnsiString):boolean; external 'IS7zipExtract@files:ISDone.dll stdcall delayload';
function ISRarExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutPath: AnsiString; DeleteInFile:boolean; Password: AnsiString):boolean; external 'ISRarExtract@files:ISDone.dll stdcall delayload';
function ISPrecompExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutFile: AnsiString; DeleteInFile:boolean):boolean; external 'ISPrecompExtract@files:ISDone.dll stdcall delayload';
function ISSRepExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutFile: AnsiString; DeleteInFile:boolean):boolean; external 'ISSrepExtract@files:ISDone.dll stdcall delayload';
function ISxDeltaExtract(CurComponent:Cardinal; PctOfTotal:double; minRAM,maxRAM:integer; InName, DiffFile, OutFile: AnsiString; DeleteInFile, DeleteDiffFile:boolean):boolean; external 'ISxDeltaExtract@files:ISDone.dll stdcall delayload';
function ISPackZIP(CurComponent:Cardinal; PctOfTotal:double; InName, OutFile: AnsiString;ComprLvl:integer; DeleteInFile:boolean):boolean; external 'ISPackZIP@files:ISDone.dll stdcall delayload';
function ShowChangeDiskWindow(Text, DefaultPath, SearchFile:AnsiString):boolean; external 'ShowChangeDiskWindow@files:ISDone.dll stdcall delayload';

function Exec2 (FileName, Param: PAnsiChar;Show:boolean):boolean; external 'Exec2@files:ISDone.dll stdcall delayload';
function ISFindFiles(CurComponent:Cardinal; FileMask:AnsiString; var ColFiles:integer):integer; external 'ISFindFiles@files:ISDone.dll stdcall delayload';
function ISPickFilename(FindHandle:integer; OutPath:AnsiString; var CurIndex:integer; DeleteInFile:boolean):boolean; external 'ISPickFilename@files:ISDone.dll stdcall delayload';
function ISGetName(TypeStr:integer):PAnsichar; external 'ISGetName@files:ISDone.dll stdcall delayload';
function ISFindFree(FindHandle:integer):boolean; external 'ISFindFree@files:ISDone.dll stdcall delayload';
function ISExec(CurComponent:Cardinal; PctOfTotal,SpecifiedProcessTime:double; ExeName,Parameters,TargetDir,OutputStr:AnsiString;Show:boolean):boolean; external 'ISExec@files:ISDone.dll stdcall delayload';

function SrepInit(TmpPath:PAnsiChar;VirtMem,MaxSave:Cardinal):boolean; external 'SrepInit@files:ISDone.dll stdcall delayload';
function PrecompInit(TmpPath:PAnsiChar;VirtMem:cardinal;PrecompVers:single):boolean; external 'PrecompInit@files:ISDone.dll stdcall delayload';
function FileSearchInit(RecursiveSubDir:boolean):boolean; external 'FileSearchInit@files:ISDone.dll stdcall delayload';
function ISDoneInit(RecordFileName:AnsiString; TimeType,Comp1,Comp2,Comp3:Cardinal; WinHandle, NeededMem:longint; callback:TCallback):boolean; external 'ISDoneInit@files:ISDone.dll stdcall';
function ISDoneStop:boolean; external 'ISDoneStop@files:ISDone.dll stdcall';
function ChangeLanguage(Language:AnsiString):boolean; external 'ChangeLanguage@files:ISDone.dll stdcall delayload';
function SuspendProc:boolean; external 'SuspendProc@files:ISDone.dll stdcall';
function ResumeProc:boolean; external 'ResumeProc@files:ISDone.dll stdcall';

function ProgressCallback(OveralPct,CurrentPct: integer;CurrentFile,TimeStr1,TimeStr2,TimeStr3:PAnsiChar): longword;
begin
  if OveralPct<=1000 then ImgPBSetPosition(ISDoneProgressBar1,OveralPct);
  LabelPct1.Caption:= IntToStr(OveralPct div 10)+'.'+chr(48 + OveralPct mod 10)+'%';
  LabelCurrFileName.Caption:=ExpandConstant('{cm:ExtractedFile} ')+MinimizePathName(CurrentFile, LabelCurrFileName.Font, LabelCurrFileName.Width-ScaleX(100));
  Result := ISDoneCancel;
  ImgApplyChanges(WizardForm.Handle);
end;

procedure CancelButtonOnClick(Sender: TObject);
begin
  SuspendProc;
  if MsgBox(SetupMessage(msgExitSetupMessage), mbConfirmation, MB_YESNO) = IDYES then ISDoneCancel:=1;
  ResumeProc;
end;

procedure IsDoneAddComponents();
var PBTop:integer;
begin
  PBTop:=ScaleY(50);
  ISDoneProgressBar1 :=ImgPBCreate(WizardForm.Handle, ExpandConstant('{tmp}\pbbkg.png'), ExpandConstant('{tmp}\pb.png'),7,430,646, 4);

  LabelPct1 := TLabel.Create(WizardForm);
  with LabelPct1 do begin
    Parent       := WizardForm;
    Font.Name    := 'Arial';
    Font.Size    := 10;
    Font.Style   := [fsBold];
    Transparent  := true;
    Font.Color   := $e1cc70;
    AutoSize     := False;
    Left         := ScaleX(540);
    Top          := ScaleY(255);
    Width        := ScaleX(180);
  end;
  LabelCurrFileName := TLabel.Create(WizardForm);
  with LabelCurrFileName do begin
    Parent       := WizardForm.InstallingPage;
    AutoSize     := False;
    Width        := ISDoneProgressBar1.Width+ScaleX(30);
    Left         := ScaleX(0);
    Top          := ScaleY(30);
  end;

  LabelTime1 := TLabel.Create(WizardForm);
  with LabelTime1 do begin
    Parent   := WizardForm.InstallingPage;
    AutoSize := False;
    Width    := ISDoneProgressBar1.Width div 2;
    Left     := ScaleX(0);
    Top      := PBTop + ScaleY(35);
  end;
  LabelTime2 := TLabel.Create(WizardForm);
  with LabelTime2 do begin
    Parent   := WizardForm.InstallingPage;
    AutoSize := False;
    Width    := LabelTime1.Width+ScaleX(40);
    Left     := ISDoneProgressBar1.Width div 2;
    Top      := LabelTime1.Top;
  end;
  LabelTime3 := TLabel.Create(WizardForm);
  with LabelTime3 do begin
    Parent   := WizardForm.FinishedPage;
    AutoSize := False;
    Width    := 300;
    Left     := 180;
    Top      := 200;
  end;
end;

procedure IsDoneHide();
begin
  LabelPct1.Hide;
  LabelCurrFileName.Hide;
  LabelTime1.Hide;
  LabelTime2.Hide;
  LabelTime3.Hide;
  ImgPBVisibility(ISDoneProgressBar1, False);
end;

procedure IsDoneShow();
 begin
   LabelPct1.Show;
   LabelCurrFileName.Show;
   LabelTime1.Show;
   LabelTime2.Show;
   ImgPBVisibility(ISDoneProgressBar1, true);
 end;


procedure IsDoneUnpack(CurStep: TSetupStep);
var
  Comps1,Comps2,Comps3, TmpValue:cardinal;
  FindHandle1,ColFiles1,CurIndex1,tmp:integer;
  ExecError:boolean;
  InFilePath,OutFilePath,OutFileName:PAnsiChar;
begin
  if CurStep = ssInstall then begin  //Если необходимо, можно поменять на ssPostInstall
    WizardForm.ProgressGauge.Hide;
    WizardForm.StatusLabel.Caption:=ExpandConstant('{cm:Extracted}');
    WizardForm.CancelButton.OnClick := @CancelButtonOnClick;
    ISDoneCancel:=0;

// Распаковка всех необходимых файлов в папку {tmp}.

ExtractTemporaryFile('unarc.dll');

#ifdef PrecompInside
ExtractTemporaryFile('CLS-precomp.dll');
ExtractTemporaryFile('packjpg_dll.dll');
ExtractTemporaryFile('packjpg_dll1.dll');
ExtractTemporaryFile('precomp.exe');
ExtractTemporaryFile('zlib1.dll');
#endif
#ifdef SrepInside
ExtractTemporaryFile('CLS-srep.dll');
#endif
#ifdef MSCInside
ExtractTemporaryFile('CLS-MSC.dll');
#endif
#ifdef facompress
    ExtractTemporaryFile('facompress.dll'); //ускоряет распаковку .arc архивов.
#endif
#ifdef records
    ExtractTemporaryFile('records.inf');
#endif
#ifdef precomp
  #if precomp == "0.38"
    ExtractTemporaryFile('precomp038.exe');
  #else
    #if precomp == "0.4"
      ExtractTemporaryFile('precomp040.exe');
    #else
      #if precomp == "0.41"
        ExtractTemporaryFile('precomp041.exe');
      #else
        #if precomp == "0.42"
          ExtractTemporaryFile('precomp042.exe');
        #else
          ExtractTemporaryFile('precomp038.exe');
          ExtractTemporaryFile('precomp040.exe');
          ExtractTemporaryFile('precomp041.exe');
          ExtractTemporaryFile('precomp042.exe');
        #endif
      #endif
    #endif
  #endif
#endif
#ifdef unrar
    ExtractTemporaryFile('Unrar.dll');
#endif
#ifdef XDelta
    ExtractTemporaryFile('XDelta3.dll');
#endif
#ifdef PackZIP
    ExtractTemporaryFile('7z.dll');
    ExtractTemporaryFile('PackZIP.exe');
#endif

    ExtractTemporaryFile('English.ini');
    ExtractTemporaryFile('Russian.ini');
                         
// Подготавливаем переменную, содержащую всю информацию о выделенных компонентах для ISDone.dll
// максимум 96 компонентов.
    Comps1:=0; Comps2:=0; Comps3:=0;
#ifdef Components
    TmpValue:=1;
    if BtnGetChecked(LanguagetextButton[1]) then Comps1:=Comps1+TmpValue;     //компонент 1
    TmpValue:=TmpValue*2;
    if BtnGetChecked(LanguagetextButton[2]) then Comps1:=Comps1+TmpValue;     //компонент 2
    TmpValue:=TmpValue*2;
    if BtnGetChecked(LanguagevoiceButton[1]) then Comps1:=Comps1+TmpValue;    //компонент 3
    TmpValue:=TmpValue*2;
    if BtnGetChecked(LanguagevoiceButton[2]) then Comps1:=Comps1+TmpValue;    //компонент 4
#endif

#ifdef precomp
  PCFVer:={#precomp};
#else
  PCFVer:=0;
#endif
    ISDoneError:=true;
    if ISDoneInit(ExpandConstant('{src}\records.inf'), $F777, Comps1,Comps2,Comps3, MainForm.Handle, {#NeedMem}, @ProgressCallback) then begin
      repeat
  case ActiveLanguage of
   'eng': ChangeLanguage('English');
   'rus': ChangeLanguage('Russian');
  end;
        if not SrepInit('',512,0) then break;
        if not PrecompInit('',128,PCFVer) then break;
        if not FileSearchInit(true) then break;

        #ifdef Data1
        if not ISArcExtract ( 0, 20, ExpandConstant('{src}\{#Data1}'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
        #endif
        #ifdef Data2
        if not ISArcExtract ( 0, 20, ExpandConstant('{src}\{#Data2}'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
        #endif
        #ifdef Data3
        if not ISArcExtract ( 0, 20, ExpandConstant('{src}\{#Data3}'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
        #endif
        #ifdef Data4
        if not ISArcExtract ( 0, 20, ExpandConstant('{src}\{#Data4}'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
        #endif
        #ifdef Data5
        if not ISArcExtract ( 0, 20, ExpandConstant('{src}\{#Data5}'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
        #endif
       
//    далее находятся закомментированые примеры различных функций распаковки (чтобы каждый раз не лазить в справку за примерами)
(*
        if not ISArcExtract    ( 0, 0, ExpandConstant('{src}\arc.arc'), ExpandConstant('{app}\'), '', false, '', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\'), notPCFonFLY{PCFonFLY}) then break;
        if not IS7ZipExtract   ( 0, 0, ExpandConstant('{src}\CODMW2.7z'), ExpandConstant('{app}\data1'), false, '') then break;
        if not ISRarExtract    ( 0, 0, ExpandConstant('{src}\data_*.rar'), ExpandConstant('{app}'), false, '') then break;
        if not ISSRepExtract   ( 0, 0, ExpandConstant('{app}\data1024_1024.srep'),ExpandConstant('{app}\data1024.arc'), true) then break;
        if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\data.pcf'),    ExpandConstant('{app}\data.7z'), true) then break;
        if not ISxDeltaExtract ( 0, 0, 0, 640, ExpandConstant('{app}\in.pcf'), ExpandConstant('{app}\*.diff'),   ExpandConstant('{app}\out.dat'), false, false) then break;
        if not ISPackZIP       ( 0, 0, ExpandConstant('{app}\1a1\*'), ExpandConstant('{app}\1a1.pak'), 2, false ) then break;
        if not ISExec          ( 0, 0, 0, ExpandConstant('{tmp}\Arc.exe'), ExpandConstant('x -o+ "{src}\001.arc" "{app}\"'), ExpandConstant('{tmp}'), '...',false) then break;
        if not ShowChangeDiskWindow ('Пожалуйста, вставьте второй диск и дождитесь его инициализации.', ExpandConstant('{src}'),'CODMW_2.arc') then break;

//    распаковка группы файлов посредством внешнего приложения

        FindHandle1:=ISFindFiles(0,ExpandConstant('{app}\*.ogg'),ColFiles1);
        ExecError:=false;
        while not ExecError and ISPickFilename(FindHandle1,ExpandConstant('{app}\'),CurIndex1,true) do begin
          InFilePath:=ISGetName(0);
          OutFilePath:=ISGetName(1);
          OutFileName:=ISGetName(2);
          ExecError:=not ISExec(0, 0, 0, ExpandConstant('{tmp}\oggdec.exe'), '"'+InFilePath+'" -w "'+OutFilePath+'"',ExpandConstant('{tmp}'),OutFileName,false);
        end;
        ISFindFree(FindHandle1);
        if ExecError then break;
*)

        ISDoneError:=false;
      until true;
      ISDoneStop;
    end;
  end;
  if (CurStep=ssPostInstall) and ISDoneError then begin
    IsDoneHide;
    BtnSetEnabled(hCancelBtn, False);
    ImgApplyChanges(WizardForm.Handle);
    ImgApplyChanges(WizardForm.Handle);
    Exec2(ExpandConstant('{uninstallexe}'), '/VERYSILENT', false);
  end;
end;
 

nik1967

Old Men
Проверенный
Imneror, забыл добавить, что ещё и на ботве - а это важно. Как уже написал El Sanchez с другого ресурса нужно поменять значение в модуле ProgressBar.iss с True на False:
с
Код:
if Length(pb)>0 then Result.img1:=ImgLoad(hParent, pb, Result.Left, Result.Top, 0, Result.Height, True, True) else Result.img1:= 0;
на
Код:
if Length(pb)>0 then Result.img1:=ImgLoad(hParent, pb, Result.Left, Result.Top, 0, Result.Height, True, False) else Result.img1:= 0;
 

Berds

Мимокрокодил
Подскажите пожалуйста multi-volume поддерживается при распаковке 7zip или zip?
 

kaiL

Новичок
Господа, подскажите, умоляю.

Простая команда, которая спокойно выполняется через батник: srep64.exe pakfiles.arc.srep f:\gams\game1\pakfiles.arc

Тупо не обрабатывается через isExec. Инсталлятор пролетает этот пункт и переходит к выполнению следующих.
Код:
if not ISExec ( 0, 0, 0, ExpandConstant('{tmp}\srep64.exe'), ExpandConstant('"{src}\pakfiles.arc.srep" "{app}\"'), ExpandConstant('{tmp}'), '...',false) then break;
Причём вот так работает (ну просто не хочется, чтобы среп файл распаковывался в папке инсталлятора, что за чушь?).
Код:
if not ISExec ( 0, 0, 0, ExpandConstant('{tmp}\srep64.exe'), ExpandConstant('"{src}\pakfiles.arc.srep"'), ExpandConstant('{tmp}'), '...',false) then break;
Чтобы было ещё явнее, как только добавляешь в параметры срепа такой параметр, как outfile он перестаёт работать. Если не добавлять - всё прекрасно работает, но, сами понимаете, это не вариант.

Клянусь, я убился уже искать причину проблемы. Простите, если на 38 страницах был уже поднят такого рода вопрос, я не нашёл. Или я вообще что-то не так делаю?
 

Булат Зиганшин

Developer
Модератор
а вообще, кто-то ещё распаковывает вот так - с диска на диска? есть же cls-srep, или хотя бы как фильтр srep запустить можно...
 

kaiL

Новичок
Булат Зиганшин, привет, это тот самый я, который собрался хелп писать по среп :)
Ответом, почему именно через isexec, будет вот такой скриншот:

Подозреваю, что среп не имеет обратной совместимости, как и прекомп. И последние версии не обрабатываются. Хотя может и я рак, что тоже очень вероятно.
 

sergey3695

Ветеран
Модератор
kaiL, Project CARS не замазал :rofl: Не может сжатое распаковать. А почему я незнаю, чем жал. Может и не поддерживает.
 

kaiL

Новичок
sergey3695, ну так-то я рак, я ж говорил. Однако это просто тестовый инсталлятор, я просто экспериментирую, замазан ещё и логотип от Evil Within :)

Булат Зиганшин, возвращаясь к вопросу о написании полного гайда к срепу, скажу, что до формата future-lz ещё и не дополз. Использую пока приведённые в примерах к последней версии -m0...-m5 -d1g...-d4g.

Ну то есть таки да, может я и неправильно сжимаю, просто как правильно, а как нет, я не знаю.
 

Mailchik

Старожил
Проверенный
Чтобы было ещё явнее, как только добавляешь в параметры срепа такой параметр, как outfile он перестаёт работать. Если не добавлять - всё прекрасно работает, но, сами понимаете, это не вариант.
Клянусь, я убился уже искать причину проблемы. Простите, если на 38 страницах был уже поднят такого рода вопрос, я не нашёл. Или я вообще что-то не так делаю?
Просто в ISExec вы параметром outfile передаете путь к папке, а не к файлу.
if not ISExec ( 0, 0, 0, ExpandConstant('{tmp}\srep64.exe'), ExpandConstant('"{src}\pakfiles.arc.srep" "{app}\pakfiles.arc"'), ExpandConstant('{tmp}'), '...',false) then break;
 

kaiL

Новичок
Mailchik, а я забыл указать. Естественно, я это первым делал так и писал с указанием файла. Не работало.

И в целом, как только я добавляю любой параметр после .srep тут же перестаёт работать полностью и исДон сразу перепрыгивает на следующий пункт. Может дело в символе пробел? Но в примере использования isExec точно так же написана разархивация через арк.ехе и никак пробелы не обособлены. В глубине души я чувствую, что проблема - фуфло, но голова моя отказывается предлагать уже какие-то варианты. Вот решил тут спросить. Может у опытных появятся более грамотные идеи.
 
Последнее редактирование:

Mailchik

Старожил
Проверенный
kaiL, srep не может распаковать в папку, которой не существует.
Делайте так:
Код:
ForceDirectories(ExpandConstant('{app}'));
if not ISExec(0, 0, 0, ExpandConstant('{tmp}\srep64.exe'), ExpandConstant('"{src}\pakfiles.arc.srep" "{app}\pakfiles.arc"'), ExpandConstant('{tmp}'), '...',false) then break;
 
  • Like
Реакции: kaiL

Edison007

Ветеран
Модератор
А еще вроде нужно указать команду -d, что бы оно распаковывалось
 

kaiL

Новичок
Edison007, да и без неё распаковывает вроде.

Mailchik, вот это поворот.jpg попробую.
 

kaiL

Новичок
Mailchik, спасибо, чувак, дело было в папке. Я же говорил, дел за малым, но вот... В общем, спасибо.
 

kaiL

Новичок
Булат Зиганшин, вот смотри - ставил ради интереса разные ключи к свежему srep (и х64 и х32). issrepextract выдаёт одну и ту же ошибку о неправильном формате компрессии. Делал просто -m1 и всё равно ошибка.

Ради эксперимента запустил всё то же самое на srep.exe из пакета isDone. С ключём m1. И issrepextract его распаковал.
 
Сверху