Создайте пользовательский установщик EXE на базе Windows на веб-сервере * nix на лету (пользовательский установщик клиента OpenVPN) - PullRequest
1 голос
/ 09 февраля 2011

Это связано с другим вопросом . Мне нужно динамически сгенерировать пользовательский установщик Windows EXE с компьютера * nix (с PHP или любым другим), который содержит пользовательские файлы, которые должны быть установлены на компьютере клиента.

Это будет использоваться для генерации специфичных для клиента установщиков OpenVPN на основе их предпочтений и информации для аутентификации. Время выполнения не важно, так как это может быть сделано асинхронно.

Некоторые идеи, уже опробованные и не работающие:

  1. Используйте схему, аналогичную ninite.com, где загруженный исполняемый файл всегда один и тот же, но имя файла другое, поэтому установщик использует информацию в имени файла для принятия решений.
  2. Использование редактора ресурсов для редактирования ресурсов встроенного установщика. Редко не только редакторы ресурсов Unix для исполняемых файлов Windows, но и новые проблемы не решают проблему установки различных файлов.

Лучше всего подойдет компилятор NSIS / InnoSetup (для Windows), работающий в UNIX, но другие изобретательские решения в порядке.

1 Ответ

1 голос
/ 16 февраля 2011

Отвечая на мой собственный вопрос, кажется, что как NSIS (используется по умолчанию в исходном коде OpenVPN), так и Inno Setup могут работать в Linux.

Inno Setup можно использовать под Wine, это утилита командной строки, поэтому она действительно проста и работает. Смотри http://katastrophos.net/andre/blog/2009/03/16/setting-up-the-inno-setup-compiler-on-debian/

NSIS на самом деле имеет собственный порт Unix, он доступен как пакет "nsis" в Ubuntu / Debian. Имеется «makensis», который может компилировать (в Unix) исполняемый файл Windows из файла .nsi.

Только для информации, я могу собрать полный установщик .exe менее чем за 5 секунд, включая все динамические вещи. PHP используется для exec () сборки после ее подготовки и отправляет exe как загрузку клиенту.

Полагаю, это (или что-то очень похожее) работает в коммерческом предложении OpenVPN-серверов.

...