7

Я искал везде и не мог найти прямой ответ от кого-либо.

Если я хочу упаковать содержимое C:\Temp в самораспаковывающийся файл Temp.exe (в формате 7z), как мне сделать это в пакетном файле?

Это не работает:

"C:\Program Files\7-Zip\7z.exe" a -t7z -mx5 -sfx 7z.sfx directoryname archive.exe -mmt

Из этого я получаю самораспаковывающийся архив с именем 7z.sfx. Не могу понять это.

5 ответов5

8

Я понял это после возни с этим:

:: zip
"C:\Program Files\7-Zip\7z.exe" a archive.exe -mmt -mx5 -sfx dirname
pause
4

Проблема в том, что 7-zip не любит пробелы в аргументах. Так что вы хотели что-то вроде:

"C:\Program Files\7-Zip\7z.exe" a archive.exe -mmt -mx5 -sfx7z.sfx dirname
2

Это должно работать:

"C:\Program Files\7-Zip\7z.exe" a -t7z -mx5 -sfx archive.exe directoryname -mmt

(PS: добавьте Program Files\7-zip в переменную среды PATH , там вы можете получить доступ к файлу напрямую как 7z.exe а не как "C:\Program Files\7-Zip\7z.exe")

1

Держите это основным. В руководстве сказано по умолчанию:

  • тип 7z
  • метод сжатия равен 5 (используйте 0 для копирования и 9 для ультра)
  • ( -mmt для многопоточности и может устареть, поскольку в руководстве нет определения.)

Так что это даст основной ответ как:

7z a -sfx archive.exe dir
0

С 7-zip доступна версия командной строки под названием 7z.exe, которую вы можете скачать с сайта 7-zip. Чтобы создать самораспаковывающийся установщик, используйте флаг -sfx, а затем число для величины сжатия.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .