Распаковка архива методом PZlib+Srep+Lzma

Carlos

Участник
Модератор
Столкнулся с проблемой: после распаковки в папке с установленной игрой остаётся временная папка c файлами. Как исправить?
 
Последнее редактирование:

SBalykov

Старожил
Столкнулся с проблемой: после распаковки в папке с установленной игрой остаётся временная папка c файлами. Как исправить?
можно так
Код:
procedure CurStepChanged(CurStep: TSetupStep);
begin
  case CurStep of
  ssPostInstall: begin
  DelTree(ExpandConstant('{app}\Temp'), True, True,True);
  end;
  end;
end;
 

vint56

Ветеран
Проверенный
Carlos, а ты указал распаковку файлов в {app}\Temp
if not SrepInit(ExpandConstant('{app}\Temp'),512,0) then break;
if not PrecompInit(ExpandConstant('{app}\Temp'),128,PCFVer) then break;
 

Carlos

Участник
Модератор
Carlos, а ты указал распаковку файлов в {app}\Temp
if not SrepInit(ExpandConstant('{app}\Temp'),512,0) then break;
if not PrecompInit(ExpandConstant('{app}\Temp'),128,PCFVer) then break;
Всё указано. Но не помогает. И да, временные файлы остаются, если пользоваться именно PZlib+Srep+Lzma
 

vint56

Ветеран
Проверенный
Carlos, а файлы у тебя где распаковываются временые
 

Carlos

Участник
Модератор
vint56, Всё, что относится к инсталлятору в {tmp}, архивы в {app}.
Все файлы игры распаковываются и, когда установка полностью завершена, в папке с игрой остаётся папка типа "freearc9834656347.tmp" и в ней временный аркархив.
Как я понимаю это дело не в pzlib
 
Последнее редактирование:

vint56

Ветеран
Проверенный
Carlos, а должно быть {app}\Temp\freearc9834656347.tmp
Вроде так
if not SrepInit(ExpandConstant('{app}\Temp'),512,0) then break;
if not PrecompInit(ExpandConstant('{app}\Temp'),128,PCFVer) then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data.arc'), ExpandConstant('{app}\'), '', false, 'vint56', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\Temp'), notPCFonFLY{PCFonFLY}) then break;
DelTree(ExpandConstant('{app}\Temp'), True, True,True);
 
Последнее редактирование:

Carlos

Участник
Модератор
"freearc9834656347.tmp" - это я образно описал.
Поэтому "{app}\Temp\freearc9834656347.tmp" не работает.
Каждый раз она же разная бывает:
freearc3719492102.tmp
freearc8562305655.tmp

UPD. Вы всё правильно написали, мой косяк. Проблема решена! Благодарю за помощь!
 
Последнее редактирование:

Carlos

Участник
Модератор
Решил было навести порядок с файлами в скрипте и разложить всё по папкам.
Было так:
#ifdef pZLib
Source: Include\pZLib.exe; DestDir: {tmp}\; Flags: dontcopy solidbreak deleteafterinstall;
#endif

Делаю так:
#ifdef pZLib
Source: Include\pZLib\pZLib.exe; DestDir: {tmp}\; Flags: dontcopy solidbreak deleteafterinstall;
#endif

Компилирую, запускаю инсталлятор, доходит до процесса установки и выдаёт ошибку, что не найден файл pZLib.exe.
Всё раскомментировано, ошибка выскакивает если только перемещать exe в другую папку. При чём среп, прекомп, msc, рефлейт и т.д. так же разложил по папкам и всё прекрасно работает, а вот пзлиб ругается. Не могу понять в чём дело.
 

dixen18

Ветеран
Carlos, Если pZLib отсутствует в папке TEMP - значит где-то неверно путь прописан
 

Carlos

Участник
Модератор
Это да, но путь то прописывается лишь в одном месте.
#ifdef pZLib
Source: Include\pZLib.exe; DestDir: {tmp}\; Flags: dontcopy solidbreak deleteafterinstall;
#endif

Но если прописать в главном скрипте
Source: Include\pZLib\pZLib.exe; Flags: dontcopy solidbreak deleteafterinstall noencryption
всё работает нормально, но при закомментировании #define pZLib файлы всё равно компилируются в инсталл, а это лишние мб.

UPD. Сам ответил на свой вопрос. Сделал в главном скрипте
#ifdef pZLib
Source: Include\pZLib\*.*; DestDir: "{tmp}"; Flags: dontcopy solidbreak deleteafterinstall noencryption
#endif
 
Последнее редактирование:

nik1967

Old Men
Проверенный
Хм, при упаковке
arc a -ep1 -lc- -dsgercpn -di+$ -ma- -r -s; -mt2 -dmtor:8 -hpPassword -w.\ --config=lzmax64.ini -mpzlib+srep:mem512m:l512:m3f+4x4:b100mb:lzma:max:512m:a2:mfbt4:fb256:mc65536:lc5:lp4 :b4
а затем при распаковке с помощью исдон просто тупо закрывается инсталл.
Распаковка
if not ISArcExtract(0, 0, Path+'data.cst', PathDest, '', false, 'Password', PathTmp+'arc.ini', PathDest, notPCFonFLY {PCFonFLY}) then break;
Видео
http://radikal.ru/video/gXgmWq7iipu
Есть у кого мысли?
 

Mickey1s

Ветеран
Модератор
nik1967, попробуй распаковать через unarc.exe НЕ через инсталлятор, а батником, тогда и увидишь где проблема
 

nik1967

Old Men
Проверенный
Mickey1s, через unarc.exe, а так же arc.exe распаковывается нормально, как ни странно. Хотелось бы через unarc.dll
 

vint56

Ветеран
Проверенный
nik1967, может памяти не хватает для распаковки через unarc.dll
 
Сверху