публикую программу zipsfx

Доброго времени! публикую свою программу zipsfx-cpp

Преамбула

Была у меня такая идея создавать на лету SFX (Самораспаковывающийся архив) файлы средствами JAVA

JAVA из коробки поддерживает работу с zip архивами, при том хотелось чтобы были соблюдены следующие условия
  • Создание sfx архива должно работать из любой ОС
  • Создание sfx архива должно быть реализовано в пределах JAVA
Облазив тырнет (где-то 2011 - 2012) я не нашел подходящего решения, из возможных решений было использование 7z, все хорошо, есть SDK, есть "модуль" SFX, кроме одного, оно работает с только 7z архивами (так было 2012)

Тогда было решено написать свой

О программе

Суть использования программы сводится к нескольким шагам
  1. Создать каким либо образом zip архив, тем же 7zip или средствами JAVA.
    Назовем этот файл data.zip или еще как либо.
  2. Создать текстовый файл с параметрами распаковки (куда распаковывать, что потом сделать).
    Назовем этот файл options.txt или еще как либо.
  3. Склеить файлы install.exe = zipsfx + options.txt + data.zip
Вот пример работающей версии:

Шаг 1 - создание архива

Файл data.zip
Содержит два файла:
  1. launcher.bat
  2. data/launcher-2.bat
data/launcher-2.bat в себе содержит следующий код:
@echo off
echo current dir "%CD%"
pause

Шаг 2 - создание параметров

Файл options.txt
OPTIONS BEGIN {
# Hello text
hello = HELLO4 Test arguments

# Show hello text
showHello = false

# Show log progress
showLog = false

# Delete files on exit
deleteFiles = true

# Run after extract
run = cmd /C launcher-2.bat $args

workDir = $dir\data

# return exit code from run
return = true

# true - use temp dir; false - use current dir
useTemp = true
} OPTIONS END


run = cmd /C launcher-2.bat $args - указывает, что после распаковки, необходимо выполнить команду запуска bat файла

workDir = $dir\data - указывает, что выполнить надо команду, в под каталоге data, относительно распакованного каталога

deleteFiles = true - указывает, что по завершению, надо удалить фалы

Шаг 3 - склейка фалов

Вот так склеиваем файлы (в командной строке)
copy /b zipsfx + options.txt + data.zip test.exe

Выполнение того что получилось



Дистрибутив программы

Дистрибутив программы, а так же исходный код (лицензия MIT) расположен на сайте https://github.com/gochaorg/zipsfx-cpp

Дистрибутив программы - это всего один файл (zipsfx), который не требует какой либо установки, он и является тем самым самораспаковывающийся архив, точнее заголовок exe файла.

Более подробное описание расположено на сайте github