Я не знаю, отвечает ли он всем вашим требованиям, но я использую makeself , который действительно хорош для упаковки вещей. Он работает с Cygwin, поэтому он может удовлетворить ваши потребности ^^
По сути, когда вы создаете сам архив, вы даете скрипт, который будет выполняться при запуске архива. Этот скрипт получает все параметры, переданные в архив (все, что вы хотите):
makeself.sh ${dir_to_archive} ${name_of_archive} ${description} ${startup_script}
Когда вы запускаете автоматически извлекаемый архив, вы делаете:
my_archive.run ${param1} ${param2} ${paramN}
Он распакует ваш архив и запустит:
${startup_script} ${param1} ${param2} ${paramN}
my2c