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

24206
Cricrazy

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

Спасибо за вашу помощь в продвинутом. Я пытаюсь получить 7zip 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++.

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

10
Эта опция доступна с WinRAR, но не знает о 7-zip. Don't Root here plz... 8 лет назад 0

3 ответа на вопрос

6
DavidPostill

Я хотел бы изменить путь извлечения %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, указанный исполняемый файл будет запущен после извлечения.

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

Спасибо Дэвид. Но можете ли вы сказать мне, как использовать файл конфигурации? Cricrazy 8 лет назад 0
@Cricrazy См. [Общая информация о модифицированном модуле] (http://7zsfx.info/en/), которую вы должны загрузить, и проверьте ссылки слева. Ответ обновлен. DavidPostill 8 лет назад 0
Эта 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 ЗАПУСК AUTOUPDATE.BAT SCRIPT TIMEOUT / T 5 / NOBREAK autoUpdate.bat` Однако [ссылка] (http://7zsfx.info/en/) больше не работает. papertape 8 лет назад 0
Не удается получить мини-Markdown для правильного форматирования блока кода. Пожалуйста, измените, если вы знаете, как. Благодарю. papertape 8 лет назад 0
@papertape Новая ссылка https://sourceforge.net/projects/s-zipsfxbuilder/ DavidPostill 8 лет назад 0
@papertape Ответ обновлен с рабочими ссылками. DavidPostill 8 лет назад 0
3
omegastripes

Try 7z SFX Builder, it's free, supports command line parameters, and also you can specify extraction path on the GUI Main Tab:

Main tab

omegastripes, это прекрасно работает. Спасибо. У этого есть удивительное количество вариантов. Большое спасибо. Cricrazy 8 лет назад 0
McAfee удаляет exe после установки из-за троянского коня ... Lieven Cardoen 8 лет назад 0
-2
user703610

Просто используйте -y -oPathtoextract

например Setup.exe -y -oc:\abc

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