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

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

Я пытаюсь получить архив 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++.

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

решение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

Связанный контент