![7zip - Создание самораспаковывающегося архива (sfx) с указанным путем извлечения](https://rvso.com/image/1493932/7zip%20-%20%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5%20%D1%81%D0%B0%D0%BC%D0%BE%D1%80%D0%B0%D1%81%D0%BF%D0%B0%D0%BA%D0%BE%D0%B2%D1%8B%D0%B2%D0%B0%D1%8E%D1%89%D0%B5%D0%B3%D0%BE%D1%81%D1%8F%20%D0%B0%D1%80%D1%85%D0%B8%D0%B2%D0%B0%20(sfx)%20%D1%81%20%D1%83%D0%BA%D0%B0%D0%B7%D0%B0%D0%BD%D0%BD%D1%8B%D0%BC%20%D0%BF%D1%83%D1%82%D0%B5%D0%BC%20%D0%B8%D0%B7%D0%B2%D0%BB%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F.png)
Я пытаюсь получить архив 7zip SFX для создания исполняемого файла. Я могу получить исполняемый файл. Но когда я запускаю его, он выдает путь загрузки для Extract to:
. Я хотел бы изменить на %AppData%\Roaming
по умолчанию. Скриншот ниже даст представление о том, что я пытаюсь сделать.
setup.exe
Внутри архива нет ничего, в нем есть только несколько файлов, которые нужно поместить в Roaming
папку. Это для многих наших пользователей, которые могут получить эти обновления без указания пути. (Всегда легко, когда пользователям не нужно указывать путь, в противном случае, по моему опыту, пользователи могут выбирать самые необычные пути!!)
Обновлять
Вот что я пробовал на данный момент. Содержимое моего файла конфигурации следующее:
;!@Install@!UTF-8!
InstallPath="%AppData%\\Roaming\\Notepad++"
;!@InstallEnd@!
Это вызов командной строки.
copy /b 7zS.sfx + config.txt + Installer.7z myinstaller.exe
К сожалению, это не работает.. Он дает следующий путь. Он должен быть %AppData%\\Roaming\\Notepad++
.
решение1
Пытаться7z SFX-конструктор, он бесплатный, поддерживает параметры командной строки, а также вы можете указать путь извлечения наОсновная вкладка графического интерфейса:
решение2
Я хотел бы изменить путь извлечения на путь %AppData%\Roaming
по умолчанию.
Вам необходимо загрузить «модифицированный модуль» с сайта7z SFX-конструктор(sourceforge).
Проверитьссылки слевадля документации (обратите внимание на эти ссылки и текст ниже взяты изhttps://web.archive.org/)
В вашем конфигурационном файле:
InstallPath="%AppData%\Roaming"
Параметры файла конфигурации
InstallPath="путь_к_извлечению"
Задает путь извлечения. Папка извлечения не будет удалена после извлечения.
Если
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
, указанный исполняемый файл будет запущен после извлечения.
ИсточникПараметры файла конфигурации
решение3
Просто используйте -y -o<PathToExtract>
:Setup.exe -y -oc:\abc
решение4
(на всякий случай, если кто-то все еще пытается это сделать)
Я не смог понять, как извлечь SFX-архив в определенное место, не указав также файл setup.exe или аналогичный.
Мне удалось достичь своей цели, используя "-y -oPATH"
показанные переключатели.здесьи сохранение обычного SFX-архива внутри пакетного файла (сохранение файла внутри пакетного файла)
Результатом является не EXE, а CMD-файл. (нотолькоCMD-файл)
Метод
- создаватьисточник.exe
- создавать и редактироватьскрипт.cmd
- создаватьобъединить.cmd
- выполнятьобъединить.cmd
объединить.cmdкак следует из названия, объединяет script.cmd и source.exe для созданиявывод.cmd
output.cmd — это результат, при запуске он скопируетисточник.exeиз себя во временное местоположение, запустите его с аргументами, указывающими местоположение, а затем удалите временный файл.
источник.exe
Это архив 7z SFX, созданный с помощью опции "make sfx archive". Он содержит все файлы, которые вы хотите извлечь.
скрипт.cmd
вам нужно заменить {target} на желаемое местоположение. например: C:\Example
тыдолженexit /b
Перед сохранением файла добавьте пустую новую строку .
;;;===,,,@echo off
;;;===,,,findstr /v "^;;;===,,," "%-f0" > "%temp%\tempdata.exe"
;;;===,,,start /wait "" "%temp%\tempdata.exe" -y -o"{target}"
;;;===,,,del /f /q "%temp%\tempdata.exe"
;;;===,,,exit /b
объединить.cmd
copy /a script.cmd /b source.exe /b output.cmd