Как создать самораспаковывающийся архив, работающий на DOS?

2517
Firedragon

Мне нужно создать самораспаковывающийся архив для DOS. Это унаследованный проект, который в настоящее время использует lha (Харуясу Йошизаки) для создания самораспаковывающегося. Это работает, однако, когда он запускает, он спрашивает, хотим ли мы заменить когда-либо файл. Для сотен файлов это немного проблема.

Так что мне нужен способ создания исполняемых файлов, которые будут самораспаковываться и предоставлять опцию «да для всех» на экстракторе. Также очевидно, что он должен быть в состоянии работать на DOS.

Я искал в Интернете и могу найти программы, которые делают это, но все они, кажется, нуждаются в 32-битном.

1
Полусерьезное предложение создать обычный самораспаковывающийся архив lha, а затем залатать его с помощью Hiew или другого аналогичного инструмента, чтобы пропустить подсказку. Кроме того, я помню, как Total Commander и 32-битный WinRAR имели MS-DOS-совместимые самораспаковщики. grawity 10 лет назад 0

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

1
sgmoore

You can do this with ARJ which you can download from http://arj.sourceforge.net

The trick is to embed command line parameters into the exe which is done by adding a comment which starts with ))

For example, if you create a text file called (for example) options.txt that contains the line

)) -o 

and generate your self-extracting exe with the command line

arj A -JE -zoptions.txt TEST.EXE *.* 

Then this will automatically overwrite any files (just as if you had specified the -o command line option).

1
Firedragon

I managed to find a way to do this using Infozip

You need to copy the UNZIPSFX.EXE into a suitable location and then merge as follows:

> cd <folder to zip> > zip -r app . > copy /b <UNZIPSFX location>\UNZIPSFX.EXE+app.zip app.exe > zip -A app.exe 
0
TOOGAM

Варианты включают в себя:

используя arj (как упоминалось в другом месте на этой странице)

используя unzipsfx (как упоминалось в другом месте на этой странице)

использование другой программы, которая обрабатывает файлы LZH (вместо использования самораспаковывающихся файлов). Большинство архивных программ могут обрабатывать самораспаковывающиеся файлы (игнорируя самораспаковывающийся код в начале архива).

Возможно, самораспаковывающиеся файлы поддерживают опцию, например -y или /? или же -? или -h, например:

program.exe -y

Вы можете обойтись, используя echo или type. например:

эхо Y | program.exe

тип fileyyyy.txt | program.exe

Эта вертикальная черта - это труба: shift-backslash