Создание самораспаковывающегося zip-архива на linux-боксе

Из-за ряда ограничений, в которые я не буду вдаваться, мне нужно создать самораспаковывающийся ZIP-архив на Linux-системе. Полученный архив должен быть исполняемым только в Windows. Это вообще возможно? Если да, то какие инструменты справятся с этой задачей?

Предыстория: когда пользователь загружает установочный пакет из моего Linux-окна, мне нужно, чтобы этот установочный пакет был предварительно заполнен определенным ключом. Я знаю этот ключ только во время выполнения; моя идея заключалась в том, чтобы написать простой файл .xml с этим ключом, затем заархивировать установщик .msi с этим файлом xml в самораспаковывающийся архив и отправить этот файл в браузер. Если у вас есть альтернативные идеи о том, как это сделать, я бы тоже хотел их услышать.


person Alex Weinstein    schedule 04.05.2009    source источник
comment
Вам нужно будет четко указать, на какой конкретной платформе архив должен быть исполняемым.   -  person bignose    schedule 04.05.2009
comment
Добавил уточнение - только Windows.   -  person Alex Weinstein    schedule 04.05.2009


Ответы (2)


Ваш ответ можно найти на следующей странице: http://ubuntuforums.org/showthread.php?t=847329 Обратите внимание, что я не беру на себя ответственность ни за что, кроме использования Google и обнаружения чего-то, что логически звучит так, как будто это работает. Я не гарантирую, что эта информация будет работать, или что вы сможете найти упомянутые материалы в Интернете. Я просто фанат Google. Надеюсь, это поможет.

Проблема Несколько дней назад мне пришлось создать Win32-совместимый самораспаковывающийся ZIP-файл для друга. Звучит легко, да. Проблема заключалась в том, что у меня поблизости не было Windows-машины, а ставить какие-то программы-архиваторы под Wine не хотелось.

ПРИМЕЧАНИЕ. Для создания самораспаковывающегося ZIP-файла Win32 также можно использовать бесплатную ZIP-программу, такую ​​как IZArc под Wine. Это не будет рассмотрено в данном руководстве, извините.

«Исследование» Погуглив, я нашел этот пост на форуме, датированный августом 2003 года. Прочитав его, я обнаружил, что самораспаковывающиеся ZIP-файлы представляют собой не что иное, как подходящий распаковываемый двоичный файл, за которым следует обычный ZIP-файл. Я использовал unzipsfx.exe, включенный в Info-ZIP UnZip 5.52.

Ссылка на этот пост работала несколько дней назад, поэтому я получил unzipsfx.exe, который искал. Сегодня, 2 июля 2008 г., я обнаружил, что ссылка мертва. Погуглив нигде не нашел рабочей ссылки. Я прочитал лицензию несколько раз и понял, что могу распространять оригинальный unzipsfx.exe с включенной лицензией.

Обратите внимание, что файл unzipsfx-552_win32.tar.gz (80 кБ) не является официальным пакетом Info-ZIP и включает программное обеспечение, защищенное авторским правом, авторство которого я не беру. Больше информации в лицензии Info-ZIP, которая также включена в архив. Исходный код включенных двоичных файлов можно найти здесь.

Решение

Шаг первый, получение пакета unzipsfx.exe и zip: * откройте Терминал (в Ubuntu нажмите alt+f2 и введите gnome-terminal) * введите следующие команды Код:

wget http://kolmoskone.homelinux.org/~kaja/kamaa/unzipsfx-552_win32.tar.gz tar zxf unzipsfx-552_win32.tar.gz sudo apt-get install zip

Шаг второй, создание ZIP-файла в Ubuntu: * откройте файловый менеджер (nautilus) и выберите файлы, которые вы хотите заархивировать * щелкните правой кнопкой мыши и выберите «Создать архив» (или аналогичный). Выберите место для ZIP-файла, проще всего использовать домашний каталог. Выберите тип .zip. См. man zip для получения информации о том, как создать ZIP-файл в командной строке.

Шаг третий, создание самораспаковывающегося ZIP-файла * введите следующие команды: Код:

cat unzipsfx-552_win32/unzipsfx.exe MYZIPFILE.zip > mysfxfile.exe zip -A mysfxfile.exe

mysfxfile.exe теперь можно открыть в любой Win32-совместимой системе (включая, например, Windows XP/2000/Vista и даже Wine в Linux) или в ЛЮБОЙ ZIP-СОВМЕСТИМОЙ программе архивирования, такой как file-roller в Ubuntu.

person phuzion    schedule 04.05.2009

Я смог сделать это с помощью unzipsfx. Доступна более новая версия — только что вышедшая в апреле 2009 года — версия 6.0. Версия 5.52 не поддерживала необходимую мне критическую функциональность — запуск определенного установочного файла после завершения извлечения.

Поэтому я скачал исходники для 6.0. Затем я изменил их, чтобы исключить проверку «запрос на запуск», которая есть по умолчанию. Я перекомпилировал с помощью Visual Studio 2008, попробовал шаги, описанные в руководстве выше, и теперь все работает как шарм.

person Alex Weinstein    schedule 05.05.2009
comment
Если вы нашли ответ, не могли бы вы отметить его правильно? Также была бы полезна ссылка из ответа на страницу с программным обеспечением. - person bignose; 06.05.2009