Как тихо установить самораспаковывающийся 7-zip-архив в определенный каталог?
Ruby Devkit - это самораспаковывающийся архив, основанный на 7 zip.
Я хотел бы вызвать его в автоматическом режиме без необходимости установки 7-Zip для извлечения файлов в папку по своему выбору, чтобы я мог выполнить сценарий установки. Я представляю, что это что-то вроде:
cmd> DevKit-tdm-32-4.5.2-20111229-1559-sfx.exe /silent /dir="C:\DevKit"
Но это, конечно, не работает. Какие флаги командной строки я должен использовать, чтобы тихо извлечь этот архив в папку по своему выбору?
3 ответа
Попробуй это:
C:\> DevKit-tdm-32-4.5.2-20111229-1559-sfx.exe -o"C:\DevKit" -y
Обновление 2017: инструмент из 7zsfx.info теперь мертв и ушел.
Оригинал, старый пост от 08-2015:
Если вы пытаетесь извлечь 7zip SFX ( http://7zsfx.info/) архив:
sfx.exe -y -gm2 -InstallPath="C:\\your\\target\\path"
-y
скрыть некоторые подсказки-gm2
полностью скрывает диалог извлечения (тихий режим)-InstallPath
устанавливает целевой путь (вам нужны двойные обратные слеши)
7z SFX Guide
Официальным способом создания пакета SFX является использование -sfx[{name}] : Create SFX archive
,
А это означает, что созданные пакеты SFX используют два вида параметров CLI:
- официальные опции CLI от 7zSFX, и
переданные опции, которые вы настроили в своей конфигурации, перед созданием пакета.
Вы можете думать об этом как о пересылке параметров в упакованный исполняемый файл. Этот параметр пересылки зависит от
SetEnvironment
а такжеRunProgramm
Конфигурация!
Полный процесс:
- Создать архив
Package.7z
:- содержащий
Installer.msi
и дополнительныеcrap.cab
файл.
- содержащий
Создать файл конфигурации
config.txt
:;!@Install@!UTF-8! Title="Installation" SetEnvironment="strInstall=hidcon:Installer.msi /qn" RunProgram="%strInstall%" ;!@InstallEnd@!
Теперь мы генерируем
Test.exe
объединяя sfx+config+archive в исполняемый файл.copy /b 7zS.sfx + config.txt + Package.7z SfxInstaller.exe
Примечание: 7zS.sfx из официального дополнительного пакета 7zip.
Теперь, когда вы бежите
SfxInstaller.exe
Вы можете передать, например,/lv InstallerLog.txt
создать журнал установки, напримерSfxInstaller.exe /lv InstallerLog.txt
Поскольку используется 7-zip, просто создайте самораспаковывающийся архив в.exe. и запустите его с ключами -o и -y.
Я использую его для экономии места на USB-накопителе. Например, я редко запускаю приложение VDiskAir. Я создаю самораспаковывающийся архив папки программы VDiskAir (около 15 МБ):
7z a -SFX -mx9 VDiskAir.exe [VDiskAir folder path]
Примечание: -mx9 используется здесь для максимального сжатия.
Я создаю DOS BAT для запуска созданного самораспаковывающегося VDiskAir.exe (около 5 МБ), сохраняю его как VDiskAir.bat, содержащий:
VDiskAir.exe -o%TMP% -y
%TMP%\VDiskAir\VDisk_Air.exe
Меня не беспокоит, что папка VDiskAir (в%TMP%, извлеченная с помощью программных файлов VDiskAir) восстанавливается после запуска VDiskAir таким образом, поскольку у меня есть сценарий BAT для очистки%TMP% при завершении работы / запуске.
Вот то, что я использую для продукта Autodesk:
Start /W %~dp0AutoCAD_2018_French_LP_Win_64bit_dlm.sfx.exe -suppresslaunch -d C:\Autodesk