Там есть ответ, но ему два года, и он не предоставляет никакой информации о том, как это сделать.

Ситуация: у меня есть папка с исполняемым файлом, некоторые необходимые библиотеки DLL и некоторые изображения. Я хочу упаковать все это в один исполняемый файл. Если выполнено, он запустит исполняемый файл.

Я нашел этот пост суперпользователя. Тем не менее, он не предлагает решения.

Если вы знакомы с Python, есть приложение под названием PyInstaller. Он создает однофайловые исполняемые файлы из исходного кода python.

Я не уверен насчет точной внутренней работы, но обычно это происходит примерно так:

  • Оберните каталог с исполняемым файлом в новый исполняемый файл, ex app.exe
  • Новый исполняемый файл выполняет программу, которая распаковывает скрытый каталог во временную папку, папку с именем _MEIxxxxx, где x - это числа. Например: C:\Users\Me\AppData\Local\Temp\_MEI188722
  • Запустите программу из этой папки.

Из того, что я прочитал, они используют хакерскую темную магию, чтобы заставить это работать. Мне интересно, если есть программа, которая делает этот вид темной магии для файлов не-Python.

2 ответа2

0

Windows не позволяет запускать приложение изнутри контейнера (например, zip-файла). Вот почему PyInstaller распаковывает во временный каталог для запуска самого приложения.

Компрессоры, такие как ZIP и 7Zip, предлагают вам возможность создать самораспаковывающийся исполняемый файл. Это обычный сжатый файл плюс исполняемый код, необходимый для распаковки. Упаковано в один файл. 7zip предлагает возможность создавать самораспаковывающиеся архивы для инсталляторов. Возможно, вы в любом случае сможете использовать эту опцию для запуска стандартной программы вместо установщика: http://7zip.bugaco.com/7zip/MANUAL/switches/sfx.htm

Вы можете настроить его для запуска любого файла после распаковки. Я не уверен, что вы сможете удалить подсказку.

0

nsis http://en.wikipedia.org/wiki/Nullsoft_Scriptable_Install_System будет лучшим вариантом, который я видел. Я сделал несколько обёрток для рабочих приложений, чтобы пользователи не копались в файлах, используемых для восстановления ПК и т.д. На этой неделе я только что создал интерфейсный модуль антивирусного сканера, который автоматически загружает руткит msert/mcafee stinger/mcafee, используя прокси-сервер corp, а затем запускает все 3 приложения для технаря.

вы можете сделать то, что вы просите, с помощью стандартного шаблона / примера, в главном разделе установите выходной каталог [$ OUTDIR% temp% _MEI188722] и добавьте строку [file yourapp.exe] для каждого файла в исходном каталоге, который нужен программе. , затем используйте строку execwait для запуска рассматриваемого приложения. команда для спящих 20 мс, а затем удалить% temp% _MEI188722, чтобы файлы были удалены после того, как они не используются.

Установка установщика в бесшумный режим будет препятствовать отображению любых стандартных диалоговых окон установщика, и ваше приложение будет загружаться через мгновение. или вы можете создавать собственные диалоговые страницы, если вам нужно, чтобы пользователь сначала выбрал какие-либо параметры, или чтобы приложение возвращало сообщение, если в нем произошла какая-то ошибка. Учебники и сообщество достаточно активны и помогают в полной мере, поэтому, как только вы привыкнете к тому, как работает nsis, все должно быть просто. http://hmne.sourceforge.net/ это удобная программа, которая позволяет вам легче редактировать файл скрипта, чтобы вы могли сделать исполняемый файл.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .