Вопрос Как реализовать распаковку архива с параметрами через секцию [Code].

Toni12

Новичок
Условно есть:
[Run]
Filename: "{tmp}\7za.exe"; Parameters: "x ""{tmp}\Hangar.7z"" -o""{app}\Data\"" * -r"; Flags: runhidden runascurrentuser;

В [Run] есть возможность запустить файл с расширением ехе и установкой параметров. (Флаги, пароли и прочее)
На сколько это возможно реализовать в [_Code]?
 

Toni12

Новичок
C:
        If ReadyPage=13 then   // Скачивание файлов по ссылке.
          begin
            ShellExec('', '{tmp}\7za.exe', 'x ""{tmp}\1_01-Interface.7z"" -p""{#password}"" -o""{app}\Data\"" * -r -aoa', '', SW_SHOW, ewWaitUntilTerminated,ResultCode);
          end;
Сделал так для тестов. В общем ехешник вроде запускается, но аргументы не видит.
 

Andreo Fadio

Старожил
@Toni12, а если этот участок:
Код:
ShellExec('', '{tmp}\7za.exe', 'x ""{tmp}\1_01-Interface.7z"" -p""{#password}"" -o""{app}\Data\"" * -r -aoa', '', SW_SHOW, ewWaitUntilTerminated,ResultCode);
заменить на такое?
Код:
ShellExec('', ExpandConstant('{tmp}\7za.exe'), ExpandConstant('x "{tmp}\1_01-Interface.7z" -p"{#password}" -o"{app}\Data\" * -r -aoa'), '', SW_SHOW, ewWaitUntilTerminated,ResultCode);
На будущее в секции [_code] не надо ставить "", достаточно "
Да и в таком применение как у вас лучше использовать функцию Exec (так как файл исполняемого типа .exe)
 
Последнее редактирование:

Хамик

Старожил
C:
        If ReadyPage=13 then   // Скачивание файлов по ссылке.
          begin
            ShellExec('', '{tmp}\7za.exe', 'x ""{tmp}\1_01-Interface.7z"" -p""{#password}"" -o""{app}\Data\"" * -r -aoa', '', SW_SHOW, ewWaitUntilTerminated,ResultCode);
          end;
Сделал так для тестов. В общем ехешник вроде запускается, но аргументы не видит.
Не видит потому, что команда и аргумент слитны. Аргумент нужно начинать с пробела. Перед x поставьте пробел.
 

Toni12

Новичок
@Andreo Fadio
@Хамик
Спасибо большое за помощь!

C:
        If ReadyPage=13 then
          begin
            Exec(ExpandConstant('{tmp}\7za.exe'), ExpandConstant(' x "{tmp}\1_01-Interface.7z" -p"{#password}" -o"{tmp}\Data\" * -r -aoa'), '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
          end;
        end;
Такой вариант сработал)
 

Toni12

Новичок
Ещё вопрос возник. А где можно найти гайды как реализовать интерфейс и какие библиотеки для этого можно использовать?
 

Andreo Fadio

Старожил
еще в 2019 году
Код:
Exec(ExpandConstant('{tmp}\7za.exe'),ExpandConstant('x -y "{app}\CryEng_base.7z" -o"{app}"'),'', SW_HIDE, ewWaitUntilTerminated, ErrorCode);

Хоть 7za.exe, хоть сам 7z.exe, хоть Unrar.exe, хоть Unarc.exe и любой архиватор - пробел в начале в параметрах не нужен. Не батник же это, где его надо ставить для разделения.
 

Andreo Fadio

Старожил
А где можно найти гайды как реализовать интерфейс и какие библиотеки для этого можно использовать?
вам сперва надо найти сами библиотеки, в них есть примеры того как использовать. Благо они есть на форуме. Самих гайдов, как и что делать дословно нет. Есть только те что из примеров, лучше всего вам начать с изучения какого-нибудь готового варианта, а потом само дойдет :)
 

Toni12

Новичок
вам сперва надо найти сами библиотеки, в них есть примеры того как использовать. Благо они есть на форуме. Самих гайдов, как и что делать дословно нет. Есть только те что из примеров, лучше всего вам начать с изучения какого-нибудь готового варианта, а потом само дойдет :)
Спасибо)
 

Toni12

Новичок
Доброго времени суток, возник вопрос по скачиваю файлов. Есть-ли другие утилиты кроме idp? С idp проблемы на некоторых компьютерах и обычно на Виндовс 7. А именно с tls, если включить, то в теории всё работает нормально. Но есть случаи, в которых вообще ничего не помогает... Переходить на inno 6.0+ тоже не вариант, многие функции просто не выйдет перенести. Заранее спасибо.
 

hitman797

Новичок
@Toni12, InnoTools
In this section you will find the tools and code that I have made for the excellent free installer product, Inno Setup. Before you throw your money away on commercial installers that don't even do what you want, try out Inno Setup!
  • InnoTools Downloader is an add-on DLL which allows you to download files as part of your installation.
  • ITCallback allows you to use Inno Setup code routines as callbacks in Windows API calls.
  • InnoTools Tray allows you to minimize setup to the tray from code or when the user minimizes the window.
 
Сверху