7zip - Создать самораспаковывающийся архив (sfx) с указанным путем извлечения

15

Привет эксперты SuperUser,

Спасибо за вашу помощь в продвинутом. Я пытаюсь получить архив 7xip SFX для создания исполняемого файла. Я могу получить исполняемый файл. Но когда я запускаю его, он дает путь для загрузки Extract to:. Я хотел бы изменить на %AppData%\Roamingпо умолчанию. Снимок экрана ниже даст представление о том, что я пытаюсь сделать.

7zip настройки

Извлечь в: диалоговое окно

Внутри архива нет setup.exe или чего-либо еще, в нем всего несколько файлов, которые нужно перейти в Roamingпапку. Это для многих наших пользователей, которые могут получать обновления без указания пути. (Всегда легко, когда пользователям не нужно указывать путь, в противном случае, по моему опыту, пользователи могут выбирать самые необычные пути !!)

Спасибо.

Обновить

Вот что я пробовал до сих пор. мое содержимое файла конфигурации

;!@Install@!UTF-8!
InstallPath="%AppData%\\Roaming\\Notepad++"
;!@InstallEnd@!

Это вызов командной строки.

copy /b 7zS.sfx + config.txt + Installer.7z myinstaller.exe

К сожалению, это не работает . Это дает следующий путь. Так и должно быть %AppData%\\Roaming\\Notepad++.

[Извлечь путь]

Gifcrazy
источник
Эта опция доступна с WinRAR, но не знает о 7-zip.
Не рутируйте здесь, плз ...

Ответы:

7

Попробуйте 7z SFX Builder , он бесплатный, поддерживает параметры командной строки, а также вы можете указать путь извлечения на главной вкладке GUI :

Главная вкладка

omegastripes
источник
omegastripes, это прекрасно работает. Спасибо. У этого есть удивительное количество вариантов. Большое спасибо.
Gifcrazy
McAfee удаляет exe после установки из-за троянского коня ...
Ливен Кардоен
8

Я хотел бы изменить путь извлечения %AppData%\Roamingпо умолчанию.

Вам необходимо скачать «модифицированный модуль» из 7z SFX Builder (sourceforge).

Проверьте ссылки слева для документации (обратите внимание, эти ссылки и текст ниже от https://web.archive.org/ )

В вашем конфигурационном файле:

InstallPath="%AppData%\Roaming"

Параметры файла конфигурации

InstallPath = "path_to_extract"

Устанавливает путь извлечения. Папка извлечения не будет удалена после извлечения.

Если InstallPathзначение отсутствует в файле конфигурации или путь был удален из диалогового диалогового окна извлечения, архив будет извлечен во временную папку. Эта временная папка будет удалена после извлечения и выполнения всех команд.

Разрешены переменные среды (за исключением %%Tпеременных, определенных в SetEnvironment, если они %%Tиспользуются в любой из них). Вы ДОЛЖНЫ использовать ДВОЙНЫЕ обратные слеши в путях. Например:

InstallPath="C:\\Windows\\system32\\test"

или

InstallPath="%PROGRAMFILES%\\test"

Относительные пути разрешены. Текущая папка является той, из которой была запущена программа, запускающая архив SFX. Например,

InstallPath="test"

создает папку с именем «test» в папке, из которой была запущена программа, запускающая SFX-архив. Все файлы будут извлечены в папку «test». С другой стороны,

InstallPath="."

извлекает содержимое архива в папку, из которой была запущена программа, запускающая архив SFX. Также,

InstallPath="%%S"

извлекает содержимое архива в папку, где находится SFX.

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

В этом случае вы не должны указывать RunProgramили ExecuteFileв файле конфигурации. AutoInstallили AutoInstallXможет быть указан в файле конфигурации, но не должен вызываться из командной строки или с помощью клавиши [SHIFT].

Если вы укажете RunProgramили ExecuteFileили вызовете AutoInstallи AutoInstallX, указанный исполняемый файл будет запущен после извлечения.

Параметры файла конфигурации источника

ДэвидПостилл
источник
Спасибо Дэвид. Но можете ли вы сказать мне, как использовать файл конфигурации?
Gifcrazy
@Cricrazy См. Общую информацию о модифицированном модуле, который вы должны загрузить, и проверьте ссылки слева. Ответ обновлен.
ДэвидПостилл
Эта настройка 7-Zip InstallPath- это то, что я ищу. На данный момент мне нужно создать пакетный файл для копирования файлов из временной папки извлечения в папку времени выполнения нашего приложения: ;!@Install@!UTF-8! Title="Local Manager" InstallPath="C:\kiosk\update" RunProgram="7zbootstrap.bat" ;!@InstallEnd@! @ECHO OFF REM 7zbootstrap.bat SETLOCAL SET update=C:\Kiosk\update XCOPY *.* %update%\ /S /E /I /F /Y CD %update% ECHO LAUNCHING AUTOUPDATE.BAT SCRIPT TIMEOUT /T 5 /NOBREAK autoUpdate.bat Однако ссылка больше не работает.
бумажная лента
Не удается получить мини-Markdown для правильного форматирования блока кода. Пожалуйста, измените, если вы знаете, как. Спасибо.
бумажная лента
@papertape Новая ссылка на sourceforge.net/projects/s-zipsfxbuilder
DavidPostill
0

Просто используйте -y -o<PathToExtract>:Setup.exe -y -oc:\abc

user703610
источник
2
можешь привести пример? что такое например и -oc?
Gifcrazy
1
«например» означает «expempli gratia», что в основном означает «например». Обычно используется для указания примера, как вы и просили. Ответ по-прежнему лишен объяснений и может использовать форматирование, но в нем содержится полный пример.
music2myear
Можете ли вы уточнить команду? Вы всегда должны разбивать то, что будут делать команды, так как пользователь на другом конце будет опасаться команд с функциями, которые они не знают.
Менеджер по
Параметры командной строки передаются в содержащийся Exe.
Kazark