Распаковка архива во время установки. Inno Setup

Одноногий

Новичок
Привет.

Есть некий архив,который нужно установить в папку temp,а затем распаковать по выбранному пути {app}.....

Перепробовал кучу примеров: либо не копирует в темп,либо копирует но не распаковывает,либо ошибка в строке "Неизвестный идентификатор UnZip",и т.д и т.п.

Что делать?
 
Можно сделать перемещение сторонней папки при установке?

Код:
procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssInstall then
    begin
      if not DirExists(ExpandConstant('{app}\_Backup')) then
      begin
        NotBackupDirExists := True;
        ForceDirectories(ExpandConstant('{app}\_Backup'));
      end;
      if NotBackupDirExists then
        RenameFile(ExpandConstant('{app}\01'), ExpandConstant('{app}\_Backup\01'));
        RenameFile(ExpandConstant('{app}\02'), ExpandConstant('{app}\_Backup\02'));
    end;
    begin
      if CurStep = ssPostInstall then
        RenameFile(ExpandConstant('{app}\03'), ExpandConstant('{app}\_Backup\03'));  
    end;
end;

RenameFile(ExpandConstant('{app}\03'), ExpandConstant('{app}\_Backup\03')); - в этой строке могу указать перемещение любой папки в папку _Backup - работает.
Если в этой строке указываю перемещение в папку отличающуюся от _Backup,то ничего не происходит.
К примеру:
RenameFile(ExpandConstant('{app}\03'), ExpandConstant('{app}\02\03'));

Распаковка архива или перемещение папки нужно потому,что у папки слишком длинный путь. Менять путь нельзя,да и не получится от ошибки отделяет меньше 10 знаков,даже учитывая то,что установка производится в корень диска.
 
Последнее редактирование:
Если в этой строке указываю перемещение в папку отличающуюся от _Backup,то ничего не происходит.
К примеру:
RenameFile(ExpandConstant('{app}\03'), ExpandConstant('{app}\02\03'));
Потому что папка 02 не существует, поэтому и не работает.
if NotBackupDirExists then RenameFile(ExpandConstant('{app}\01'), ExpandConstant('{app}\_Backup\01')); RenameFile(ExpandConstant('{app}\02'), ExpandConstant('{app}\_Backup\02'));
При таком раскладе у вас только RenameFile(ExpandConstant('{app}\01'), ExpandConstant('{app}\_Backup\01')); зависит от условия if NotBackupDirExists then, если хотите несколько операций провести от этого условия, то берите все нужные операции в блок begin ... end
code_language.pascal:
if NotBackupDirExists then
begin
    RenameFile(ExpandConstant('{app}\01'), ExpandConstant('{app}\_Backup\01'));
    RenameFile(ExpandConstant('{app}\02'), ExpandConstant('{app}\_Backup\02'));
end;
 
Код:
    begin
      if CurStep = ssPostInstall then
        MoveDir(ExpandConstant('{app}\01'), ExpandConstant('{app}\02\01'));  
    end;
end;

Сделал так (примерно) - всё получилось. Не сохранил скрипт. Теперь не получается.
 
При таком раскладе у вас только RenameFile(ExpandConstant('{app}\01'), ExpandConstant('{app}\_Backup\01')); зависит от условия if NotBackupDirExists then, если хотите несколько операций провести от этого условия, то берите все нужные операции в блок begin ... end
code_language.pascal:
Ничего не понял. Я и так нихрена не понимаю,а Вы в куче написали.)
 
Код:
    begin
      if CurStep = ssPostInstall then
        MoveDir(ExpandConstant('{app}\01'), ExpandConstant('{app}\02\01'));
    end;
end;

Сделал так (примерно) - всё получилось. Не сохранил скрипт. Теперь не получается.

MoveDir(ExpandConstant('{app}\01'), ExpandConstant('{app}\02')); - вот так получается.

MoveDir(ExpandConstant('{app}\01'), ExpandConstant('{app}\02\01')); - во так нет. Если добавляю ещё одну папку через слеш,то не перемещает!

Добавляю:

MoveDir(ExpandConstant('{app}\01'), ExpandConstant('{app}\02\01')); - и так тоже получается,но только с вымышленными именами папок.

Как только вставляю нужные имена папок - не перемещает. Изменяю нужное имя на один символ работает!
Пробовал неимоверно удлинить путь работает,но добавляет с строке проводника: \\?\

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

Есть некий архив,который нужно установить в папку temp,а затем распаковать по выбранному пути {app}.....

Перепробовал кучу примеров: либо не копирует в темп,либо копирует но не распаковывает,либо ошибка в строке "Неизвестный идентификатор UnZip",и т.д и т.п.

Что делать?
А в чем смысл таких телодвижений? Если не секрет кто мешает сделать выбор пути для компонента и просто при галочке распаковать туда куда сказал пользователь? Ну в сам {App} к примеру
 
.....и просто при галочке распаковать туда куда сказал пользователь? Ну в сам {App} к примеру
Расскажу если черкнёте код,чтоб можно было при галочке распаковывать.))
Шутка. Там заморочка с длиной пути. Скомпилировать папку получается лишь из корня диска,если из папки,к примеру: D:\0\*,возникает ошибка. Так же и при установке.

P.S.Уже сделал через SFX.
 
это ультиматум?
Это шутка.

SFX-архив инсталлируется в нужную папку и там распаковывается.
Я,пока,(а может и не "пока") мало понимаю в пролграммировании,а точнее ничего не понимаю. Ищу куски кода,вставляю/проверяю.
 
Назад
Сверху