WinRar SFX, распаковать в динамическую папку

У меня есть RAR SFX с некоторыми программами. В зависимости от некоторых условий (параметр командной строки - это то, что я могу сделать), SFX должен извлекать либо папку TEMP, либо текущую папку.

Это принципиально новая версия программного обеспечения. При загрузке из Интернета извлечение должно идти во временную папку, а затем при установке выполняется поиск карты, где находится SW. Если загрузить изнутри программы, то я знаю местоположение программы относительно пути загрузки, и извлечение должно идти в текущую папку...

В любом случае, я могу добиться этого с помощью RAR SFX?

TNX.

2 ответа

Внутри вашей программы вы можете пропустить заголовок SFX файла и извлечь его как обычный RAR-файл в нужную вам папку. Нужно немного кода или встраивание библиотек Winrar или 7zip.

Этот пакетный код покажет вам, как мы можем создать SFX (S elF-eX tract), защищенный паролем и пользовательским значком, если вы, конечно, хотите добавить их

@echo off
Set SFX_Name=TestSFX.exe
Set SfxOptions=SfxOptions.txt
Set AddFile=MyBatchFile.bat
Set Icon=HackooIcon.ico
Set Winrar="%ProgramFiles%\WinRAR\WinRar.exe"
Set ExtractedPath=%tmp%\hackoo
Set Setup=%ExtractedPath%\MyBatchFile.bat
Set Password=hackoo123

(
    echo ;The comment below contains SFX script commands
    echo Path="%ExtractedPath%"
    echo Silent=1
    echo OverWrite=1
    echo Setup="%Setup%"
)> "%SfxOptions%"

%Winrar% a -c -cfg- -ep1 -idq -m5 -mdg -r -s -sfx -y -iicon"%Icon%" -hp"%Password%" "-z%SfxOptions%" "%SFX_Name%" "%AddFile%"
if errorlevel 1 goto Failure
::del "%~dp0SfxOptions.txt"
goto :EOF

:Failure
::del "%~dp0SfxOptions.txt"
echo.
echo Error on creation of "%~dp0%SFX_Name%"
echo.
pause

Для других переключателей и команд вы можете выполнить этот пакет, чтобы открыть файл справки Winrar:

@echo off
Set WinrarHelp=%ProgramFiles%\WinRAR\WinRAR.chm
Start "" "%WinrarHelp%"
Другие вопросы по тегам