Как создать ехе файл

Содержание

Создаем EXE

Самоизоляция это отличное время приступить к тому, что требует много времени и сил. Поэтому я решил заняться тем, чем всегда хотел — написать свой компилятор.

Сейчас он способен собрать Hello World, но в этой статье я хочу рассказать не про парсинг и внутреннее устройство компилятора, а про такую важную часть как побайтовая сборка exe файла.

Урок 9. Про компиляцию, интерпретацию и .EXE файл

Drawing 20

Здравствуйте, дорогие читатели! Сегодня мы с вами немного окунемся в теорию. Наверняка, вы все когда-то хотели отправить свою супер-пупер программу другу. Но как это сделать? Не заставлять же его устанавливать PascalABC.NET! О том, как это сделать, мы сегодня и поговорим.

Все языки программирования делятся на два типа — интерпретируемые и компилируемые.

Как создать exe файл. Как создать исполняемый (.exe) файл

Мы рассмотрим создание.exe с помощью библиотеки модуля py2exe. Для этого необходим Python 3.4 и ниже .

Если у вас установлена более высокая версия Python, попробуйте использовать (ниже)

В этом примере мы рассмотрим создание.exe на примере Python3.4 .

Прежде всего на нужно создать виртуальное окружение для Python3 .4. В этом примере мы назовем myenv, Вы можете выбрать любое другое имя, но не забывайте сделать соответствующие изменения.

На терминале наберите следующие команды:

>py -3.4 -m venv myenv > myenvScriptsactivate.bat

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

Теперь давайте установим py2exe (https://pypi.python.org/pypi/py2exe

HEAD=dobj) в нашем виртуальном окружении:

>pip install py2exe

И, наконец, чтобы создать единый EXE-файл, в нашем виртуальном окружении выполняем команду:

>python -m py2exe.build_exe hello.py -c –bundle-files 0

(замените hello.py на имя вашего скрипта. Если скрипт находится в другой папке, то нужно использовать полный путь к вашему сценарию, например, C:ProjectsPython hello.py). Это создаст папку DIST, которая содержит исполняемый файл. Для быстрого доступа к нему, наберите в терминале:

Вы увидите путь к папке, где находится EXE-файл.

Примечание: При выполнении, откроется окно и исчезают так же быстро, как и появилось.
Это происходит потому, что операционная система автоматически закрывает терминал, в котором консольная программа закончена.
Для того, чтобы изменить эту ситуацию, можно добавить строчку

> input (” Нажмите для выхода. “)

в конце файла Python . Интерпретатор будет ждать ввода пользователя, а окно будет оставаться открытым, пока пользователь не нажимает клавишу ввода.

Вы можете подробно изучить использование py2exe в документации на странице модуля: https://pypi.python.org/pypi/py2exe
Выход из виртуального окружения производится командой

Как сделать EXE-файлы с помощью блокнота – Вокруг-Дом – 2021

EXE-файл представляет собой тип программы, которая работает в Microsoft Windows. Он состоит из двоичного кода машинного языка, который не предназначен для чтения или записи людьми. Хотя может быть возможно редактировать EXE-файл непосредственно в Блокноте или другом текстовом редакторе, этот процесс будет утомительным и подвержен ошибкам. Вы можете использовать Блокнот для записи исходного кода, который может быть выполнен напрямую или скомпилирован в EXE-файл.

кредит: Том Вернер / DigitalVision / GettyImages

Как создать exe файл для Python кода с помощью PyInstaller

Установка PyInstaller не отличается от установки любой другой библиотеки Python.

Вот так можно проверить версию PyInstaller.

Я использую PyInstaller версии 4.2.

Как создать исполняемый файл (.exe) из сценария Ruby в Windows, используя OCRA

Вы один из тех разработчиков, которые создают сценарии, чтобы сделать свою жизнь проще? по совпадению, ты любишь Руби? а у тебя винда ?. Вместо того чтобы постоянно работать с консолью, выполняющим сценарии вручную в консоли, вам необходимо знать, что существует простой способ их выполнения и даже создание небольших консольных приложений с ними в Windows. Мы говорим о создании .exe (да, файлы приложений) файлы со скриптами ruby, благодаря One-Click Ruby Application Builder. OCRA, создает исполняемые файлы Windows из исходного кода Ruby! Эти исполняемые файлы представляют собой самораспаковывающиеся, самозапускающиеся исполняемые файлы, которые содержат интерпретатор Ruby, ваш исходный код и любые дополнительные необходимые библиотеки ruby ​​или DLL.

В этой статье вы узнаете, как легко создать исполняемый файл из сценария ruby, используя OCRA в Windows.

Как сделать установочный файл «EXE»

Как сделать установочный файл «EXE»

Что вы делаете, когда создаете какое-то новое программное обеспечение Windows — от простого средства диагностики о сложной видеоигре для ПК — и вы хотите поделиться этим с миром? Ну, вы можете сжать файлы в один ZIP-файл и распространять его.

Или вы можете быть модным и вместо этого создать установщик EXE.

В этом посте мы рассмотрим три различных метода: самораспаковывающийся пакет, простой установщик, использующий встроенный IExpress, и расширенный установщик, использующий настраиваемую установку Inno.

Преобразование командных файлов .BAT в исполняемые файлы .EXE

Пакетные сценарии — это серии команд, хранящиеся в текстовом файле, которые могут быть выполнены интерпретатором командной строки. Принимая во внимание, что исполняемые файлы используются для выполнения различных операций и задач на компьютере. Некоторые пользователи задаются вопросом, существует ли способ преобразования пакетного сценария (BAT) в исполняемый файл (EXE). В этой статье вы можете найти методы, которые расскажут вам, как преобразовать пакетные сценарии в исполняемые файлы.

Существуют различные методы, которые включают использование стороннего программного обеспечения или использование самораспаковывающегося пакета Windows. Мы собираемся показать вам простое преобразование пакетных скриптов в исполняемые файлы. Однако могут возникнуть некоторые сложности, если пакетные сценарии имеют ошибки или сложность. В качестве примера в этой статье мы используем пакетный скрипт проверки ping. Некоторые из приведенных ниже методов будут выглядеть как повторяющиеся, но все программы для конвертирования имеют почти одинаковые названия.

Начало

Хотите спойлер? Наша программа будет занимать 2048 байт.

Обычно работа с exe файлами заключается в изучении или модификации их структуры. Сами же исполняемые файлы при этом формируют компиляторы, и этот процесс кажется немного магическим для разработчиков.

Но сейчас мы с вами попробуем это исправить!

Для сборки нашей программы нам потребуется любой HEX редактор (лично я использовал HxD).

Для старта возьмем псевдокод:

Первые две строки указывают на функции импортируемые из библиотек WinAPI. Функция MessageBoxA выводит диалоговое окно с нашим текстом, а ExitProcess сообщает системе о завершении программы.
Рассматривать отдельно функцию main нет смысла, так как в ней используются функции, описанные выше.

Интерпретаторы

Программируя на интерпретируемом языке, мы пишем программу не для выполнения в процессоре, а для выполнения программой-интерпретатором. Ее также называют виртуальной машиной.

Как правило, программа преобразуется в некоторый промежуточный код, то есть набор инструкций, понятный виртуальной машине.

Protsess interpretatsii 510x141

При интерпретации выполнение кода происходит последовательно строка за строкой (от инструкции до инструкции). Операционная система взаимодействует с интерпретатором, а не исходным кодом.

Примеры интерпретируемых языков: PHP, JavaScript, C#, Python.

Скомпилированные программы работают быстрее, но при этом очень много времени тратится на компиляция исходного кода.

Программы же, рассчитанные на интерпретаторы, могут выполняться в любой системе, где таковой интерпретатор присутствует. Типичный пример — код JavaScript. Интерпретатором его выступает любой современный браузер. Вы можете однократно написать код на JavaScript, включив его в html-файл, и он будет одинаково выполняться в любой среде, где есть браузер. Не важно, будет ли это Safari в Mac OS, или же Internet Explorer в Windows.

Создать EXE-файл

Когда вы хотите создать EXE-файл в Windows, вы обычно используете компилятор, чтобы превратить читаемый человеком язык программирования в так называемом исходном коде в машинный код, который может выполнять компьютер. EXE-файл содержит машинный код в специальном формате, разработанном Microsoft. Другие операционные системы, такие как macOS и Linux, имеют свои собственные эквивалентные форматы.

Бесплатные компиляторы для языков, таких как C и C ++, доступны от Microsoft и других производителей программного обеспечения. Пакет Visual Studio Code от Microsoft хорошо зарекомендовал себя и доступен бесплатно; для Windows также доступны другие бесплатные инструменты программирования с открытым исходным кодом.

Даже код файла EXE для основных программ человеку трудно читать или писать напрямую. Программы под названием декомпиляторы превращают EXE-код обратно в исходный код, хотя он не всегда так удобен для чтения, как исходный код, написанный человеком.

Требования

Для создания нашего исполняемого файла мы будем использовать гем OCRA. Чтобы загрузить OCRA, выполните в командной строке следующую команду (cmd.exe):

Менеджер драгоценных камней начнет загрузку ocra, и в конце установки gem (пакет) должен быть доступен в качестве переменной среды в командной строке.

Настройка OCRA Gem

Вы можете прочитать больше об этом пакете в официальном репозитории или в документации здесь. Чтобы проверить, правильно ли был установлен OCRA, вы можете проверить, доступен ли он в консоли в качестве переменной среды, выполняющей ocra –help ,

Кроме того, вы можете скачать драгоценный камень в любом rubygems.org/gems/ocra или же github.com/larsch/ocra/releases/. Автономная версия: Получить ocrasa.rb от github.com/larsch/ocra/releases/. Не требует ничего, кроме работающей установки Ruby в Windows.

Создание exe файла с помощью PyInstaller

PyInstaller собирает в один пакет Python-приложение и все необходимые ему библиотеки следующим образом:

  1. Считывает файл скрипта.
  2. Анализирует код для выявления всех зависимостей, необходимых для работы. spec, который содержит название скрипта, библиотеки-зависимости, любые файлы, включая те параметры, которые были переданы в команду PyInstaller.
  3. Собирает копии всех библиотек и файлов вместе с активным интерпретатором Python.
  4. Создает папку BUILD в папке со скриптом и записывает логи вместе с рабочими файлами в BUILD.
  5. Создает папку DIST в папке со скриптом, если она еще не существует.
  6. Записывает все необходимые файлы вместе со скриптом или в одну папку, или в один исполняемый файл.

Если использовать параметр команды onedir или -D при генерации исполняемого файла, тогда все будет помещено в одну папку. Это поведение по умолчанию. Если же использовать параметр onefile или -F , то все окажется в одном исполняемом файле.

Возьмем в качестве примера простейший скрипт на Python c названием simple.py, который содержит такой код.

Создадим один исполняемый файл. В командной строке введите:

После завершения установки будет две папки, BUILD и DIST, а также новый файл с расширением .spec. Spec-файл будет называться так же, как и файл скрипта.

папки, BUILD и DIST, а также файл .spec

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

 исполняемый файл

Вот что произойдет после запуска файла.

Добавление файлов с данными

Также, открыв spec-файл, можно увидеть раздел datas, в котором указывается, что файл netflix_titles.csv копируется в текущую директорию.

Запустим файл simple1.exe, появится консоль с выводом: Всего фильмов: 7787 .

Использование iexpress.exe для преобразования BAT в EXE

Iexpress.exe — это мастер создания настроек, доступный в операционной системе Windows. Этот инструмент сделан из набора команд, которые помогают пользователям создать один самораспаковывающийся пакет из набора файлов. Этот исполняемый файл является частью Windows Internet Explorer. Однако, используя этот исполняемый файл, пользователь может преобразовать пакетный скрипт (BAT) в исполняемый файл (EXE). Выполните следующие шаги, чтобы получить файл EXE через iexpress.exe:

  1. Удерживая клавишу Windows, нажмите S, чтобы открыть функцию поиска. Введите «iexpress.exe» в поиске, щелкните правой кнопкой мыши и выберите «Запуск от имени администратора».
    Примечание. После ввода имени вы также можете удерживать клавиши CTRL + Shift и нажать кнопку «Ввод», чтобы открыть его как администратор.Открытие команды запуска iexpress.exe от имени администратора
  2. Выберите опцию «Создать новый SED» и нажмите кнопку «Далее».Выбор Создать новый САС
  3. Не изменяйте Назначение пакета и нажимайте Далее. Укажите заголовок пакета для диалоговых окон.
  4. Нажмите кнопку «Далее» для запроса подтверждения и лицензионного соглашения. Теперь нажмите кнопку «Добавить» в «Упакованных файлах», выберите пакетный скрипт и нажмите кнопку «Открыть».Добавление пакетного скрипта
  5. Нажмите на меню «Установить программу» и выберите свой пакетный скрипт. После выбора введите команду перед именем файла, как показано ниже: cmd / c appuals.exe

Примечание. Appuals.exe — это имя пакетного сценария, которое вы выбираете в меню «Установить программу».

DOS Header

Для начала нам нужно сформировать корректный DOS Header, это заголовок для DOS программ и влиять на запуск exe под Windows не должен.

Более-менее важные поля я отметил, остальные заполнены нулями.

Самое главное, что этот заголовок содержит поле e_magic означающее, что это исполняемый файл, и e_lfanew — указывающее на смещение PE-заголовка от начала файла (в нашем файле это смещение равно 0x80 = 128 байт).

Отлично, теперь, когда нам известна структура заголовка DOS Header запишем ее в наш файл.

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

Поэтому для удобства в первой скобке каждого блока указан порядок добавления в файл, а в последней смещение в файле (Offset) по которому должен располагаться данный блок.

Например, первый блок мы вставляем по смещению 0x00000000, и он займет 64 байта (0x40 в 16-ричной системе), следующий блок мы будем вставлять уже по этому смещению 0x00000040 и т.д.

Готово, первые 64 байта записали. Теперь нужно добавить еще 64, это так называемый DOS Stub (Заглушка). Во время запуска из-под DOS, она должна уведомить пользователя что программа не предназначена для работы в этом режиме.

Но в целом, это маленькая программа под DOS которая выводит строку и выходит из программы.
Запишем наш Stub в файл и рассмотрим его детальнее.

А теперь этот же код, но уже в дизассемблированном виде

Это работает так: сначала заглушка выводит строку о том, что программа не может быть запущена, а затем выходит из программы с кодом 1. Что отличается от нормального завершения (Код 0).

Код заглушки может немного отличатся (от компилятора к компилятору) я сравнивал gcc и delphi, но общий смысл одинаковый.

А еще забавно, что строка заглушки заканчивается как x0Dx0Dx0A$. Скорее всего причина такого поведения в том, что c++ по умолчанию открывает файл в текстовом режиме. В результате символ x0A заменяется на последовательность x0Dx0A. В результате получаем 3 байта: 2 байта возврата каретки Carriage Return (0x0D) что бессмысленно, и 1 на перевод строки Line Feed (0x0A). В бинарном режиме записи (std::ios::binary) такой подмены не происходит.

Для проверки корректности записи значений я буду использовать Far с плагином ImpEx:

Компиляторы

Компилятор — это программа, превращающая исходный текст, написанный на языке программирования, в машинные инструкции.

По мере преобразования текста программы в машинный код, компилятор может обнаруживать ошибки (синтаксиса языка, например). Поэтому все проблемы забытых точек с запятыми, забытых скобок, ошибок в названиях функций и переменных в данном случае решаются на этапе компиляции.

При компиляции весь исходный программный код (тот, который пишет программист) сразу переводится в машинный. Создается так называемый отдельный исполняемый файл, который никак не связан с исходным кодом. Выполнение исполняемого файла обеспечивается операционной системой. То есть образуется, например,.EXE файл.

Примеры компилируемых языков: C, C++, Pascal, Delphi.

Открытие исполняемых файлов (EXE) в Windows

Если вы хотите открыть исполняемый файл в Windows, вы можете сделать это несколькими способами. Windows автоматически распознает формат EXE-файла как исполняемый файл, поэтому обычно вы можете открыть его со своего рабочего стола, из проводника Windows, с помощью меню «Пуск» Windows (для установленного программного обеспечения) или с помощью командного окна «Выполнить».

  • Чтобы открыть EXE-файлы на рабочем столе или в проводнике Windows, дважды щелкните файл. Это проинструктирует Windows открыть его.

  • Список установленного программного обеспечения в меню «Пуск» Windows представляет собой ярлыки EXE-файлов для этого программного обеспечения (например, Chrome.exe для Google Chrome). Нажмите значок меню «Пуск» (или нажмите клавишу Windows на клавиатуре), затем нажмите одну из записей, чтобы запустить программное обеспечение.

  • Чтобы использовать командное окно «Выполнить» для запуска EXE-файла, нажмите клавиши Windows + R на клавиатуре. Либо щелкните правой кнопкой мыши значок меню «Пуск» и выберите «Выполнить».

  • В поле команды «Выполнить» найдите исполняемый файл, нажав кнопку «Обзор», или введите расположение файла напрямую. Если вы хотите запустить EXE-файл, нажмите ОК.

  • Если EXE-файл запрашивает административный доступ, вам необходимо разрешить его запуск во всплывающем окне UAC. Нажмите Да, чтобы разрешить это.

  • Если исполняемый файл не запускается (например, он может быть разработан для более старой версии Windows), Windows остановит его запуск. Вы также можете увидеть сообщение об ошибке. В этом случае нажмите «Закрыть» и поищите альтернативную версию файла для запуска.

Откройте Блокнот или другой редактор

Даже если вы можете написать исходный код в Notepad, базовом текстовом редакторе, который поставляется с Windows, многие программисты предпочитают использовать более сложный инструмент, называемый интегрированной средой разработки, или IDE.

Среда IDE автоматизирует компиляцию и запуск кода, выявляет типичные ошибки и автоматически дополняет фразы общего языка программирования и имена переменных во время работы. Он также выделяет синтаксис языка программирования и помогает поставить знаки препинания, такие как точки с запятой и круглые скобки.

Многие программисты также используют инструменты управления исходным кодом, такие как Microsoft Visual SourceSafe или бесплатный инструмент под названием Git, для организации своего кода. Эти инструменты позволяют хранить исторические версии исходного кода и позволяют нескольким программистам работать вместе над проектами кодирования.

Реализация

Создание исполняемого файла с использованием OCRA очень просто, настраиваемо и очень просто. Все, что вам нужно — это ocra как переменная окружения (что должно автоматически произойти при установке гема) и знать, какой файл вы хотите упаковать.

В нашем примере мы собираемся создать исполняемый файл следующего скрипта. Имя файла сценария file-creator.rb и содержит следующий код (он просто запрашивает у пользователя имя нового файла и содержимое):

Как видите, это простое консольное Ruby-приложение. Теперь, чтобы создать исполняемый файл, перейдите с помощью консоли (cmd.exe) в папку, где находится скрипт ruby ​​(в данном случае Desktop Ruby):

Теперь перейдите к процессу, используя следующую команду:

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

Тем не менее, есть интересное поведение, с которым вы, возможно, столкнетесь, когда будете переносить сценарий. OCRA немедленно выполняет сценарий, чтобы проверить наличие зависимостей (.DLL и других файлов), чтобы сделать ваш сценарий максимально независимым и, очевидно, если ваш сценарий требует взаимодействия с пользователем (приглашение или ввод требуемого значения), вы не захотите что OCRA выполняет ваш скрипт по разным причинам. Чтобы предотвратить такое поведение, вам нужно предоставить параметр, чтобы OCRA игнорировала выполнение скрипта:

Теперь выполните команду и соберите свой первый исполняемый файл:

Создать исполняемый файл из сценария ruby

Наконец, вы можете проверить созданный исполняемый файл в той же папке, где находится скрипт:

Скрипт Ruby

Добавление файлов с данными и параметр onefile

Если задать параметр –onefile , то PyInstaller распаковывает все файлы в папку TEMP, выполняет скрипт и удаляет TEMP. Если вместе с add-data указать onefile, то нужно считать данные из папки. Путь папки меняется и похож на «_MEIxxxxxx-folder».

Скрипт обновлен для чтения папки TEMP и файлов с данными. Создадим exe-файл с помощью onefile и add-data.

После успешного создания файл simple1.exe появится в папке DIST.

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

Добавление файлов с данными и параметр onefile

Дополнительные импорты с помощью Hidden Imports

Исполняемому файлу требуются все импорты, которые нужны Python-скрипту. Иногда PyInstaller может пропустить динамические импорты или импорты второго уровня, возвращая ошибку ImportError: No module named …

Для решения этой ошибки нужно передать название недостающей библиотеки в hidden-import.

Например, чтобы добавить библиотеку os, нужно написать вот так:

Использование BAT в EXE Converter

Если первый способ сбивает вас с толку, вы можете загрузить одно из сторонних приложений. Большинство сторонних инструментов специально разработано для этого конкретного преобразования двух файлов. BAT в EXE Converter является одним из известных инструментов, которые большинство пользователей используют для преобразования пакетных сценариев. Выполните следующие шаги, чтобы попробовать конвертер BAT в EXE:

  1. Откройте браузер и загрузите BAT в EXE Converter Установщик. Установите инструмент, запустив установщик.Загрузка BAT в EXE Converter
  2. Дважды щелкните ярлык BAT to EXE Converter, чтобы открыть его. Нажмите на значок кнопки Открыть в верхней части. Выберите файл пакетного сценария и нажмите кнопку «Открыть».Открытие пакетного скрипта в BAT в EXE Converter
  3. Теперь нажмите на значок кнопки «Преобразовать» вверху и выберите имя и местоположение, чтобы сохранить преобразованный файл.Преобразование и сохранение файла EXE
  4. Исполняемый файл для пакетного скрипта будет создан.

Препроцессинг

Эту операцию осуществляет текстовый препроцессор.

Исходный текст частично обрабатывается — производятся:

  • Замена комментариев пустыми строками
  • Подключение модулей и т. д. и т. п.

Пакетные файлы и PowerShell

Традиционно операционные системы Microsoft DOS и Windows были оснащены простой системой программирования, называемой пакетными сценариями. Пакетные скрипты, как и другие так называемые скриптовые языки, могут запускаться непосредственно из Windows или из командной строки без необходимости отдельной стадии компиляции. Пакетные файлы можно использовать для автоматизации простых задач в Windows, таких как установка программного обеспечения, настройка сетевых подключений или резервное копирование файлов.

Совсем недавно Microsoft представила более мощную среду сценариев под названием PowerShell. PowerShell позволяет получить доступ к набору функциональных возможностей .NET в Windows и является более эффективным, чем пакетные сценарии.

Вы также можете установить сторонние языки сценариев, такие как Python и Ruby, в Windows.

Что бы вы ни выбрали, вы можете редактировать код языка сценариев в текстовом редакторе, таком как Блокнот или более сложный продукт.

Советы и предложения

DLL определяются автоматически, но включены только те, которые находятся в вашей установке Ruby.

.rb файлы станут консольными приложениями. .rbw файлы станут оконным приложением (без всплывающего окна консоли). В качестве альтернативы используйте « –console » или же « –windows » опции.

Файл spec

Файл spec — это первый файл, который PyInstaller создает, чтобы закодировать содержимое скрипта Python вместе с параметрами, переданными при запуске.

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

Файл с расширением .spec сохраняется по умолчанию в текущей директории.

Если у вас есть какое-либо из нижеперечисленных требований, то вы можете изменить файл спецификации:

  • Собрать в один бандл с исполняемым файлы данных.
  • Включить другие исполняемые файлы: .dll или .so.
  • С помощью библиотек собрать в один бандл несколько программы.

Например, есть скрипт simpleModel.py, который использует TensorFlow и выводит номер версии этой библиотеки.

Компилируем модель с помощью PyInstaller:

После успешной компиляции запускаем исполняемый файл, который возвращает следующую ошибку.

Исправим ее, обновив файл spec. Одно из решений — создать файл spec.

Команда pyi-makespec создает spec-файл по умолчанию, содержащий все параметры, которые можно указать в командной строке. Файл simpleModel.spec создается в текущей директории.

Поскольку был использован параметр –onefile , то внутри файла будет только раздел exe.

Если использовать параметр по умолчанию или onedir, то вместе с exe-разделом будет также и раздел collect.

Можно открыть simpleModel.spec и добавить следующий текст для создания хуков.

Создаем хуки и добавляем их в hidden imports и раздел данных.

Файлы хуков расширяют возможность PyInstaller обрабатывать такие требования, как необходимость включать дополнительные данные или импортировать динамические библиотеки.

Обычно пакеты Python используют нормальные методы для импорта своих зависимостей, но в отдельных случаях, как например TensorFlow, существует необходимость импорта динамических библиотек. PyInstaller не может найти все библиотеки, или же их может быть слишком много. В таком случае рекомендуется использовать вспомогательный инструмент для импорта из PyInstaller.utils.hooks и собрать все подмодули для библиотеки.

Скомпилируем модель после обновления файла simpleModel.spec.

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

Компиляция

Результатом компиляции является объектный код.

Объектный код — это программа на языке машинных кодов с частичным сохранением символьной информации, необходимой в процессе сборки.

Какой метод подходит вам?

Если ваша программа чрезвычайно проста или вы собираетесь распространять ее среди ограниченного числа людей, используйте метод 7-Zip. Это просто, быстро и практически не требует технических знаний.

Если ваше программное обеспечение несколько простое и вы хотите представить конечного пользователя настоящий мастер установки, воспользуйтесь методом IExpress.

Если у вас сложное программное обеспечение и у вас за плечами большой технический опыт, воспользуйтесь методом Inno Setup. Он самый гибкий, самый мощный и не страдает от проблем, которые мешают IExpress.

Какой метод вы будете использовать? Есть ли другие методы, которые мы пропустили? Дайте нам знать в комментариях ниже!

Секция .rdata

Это, пожалуй, самая простая секция. Мы просто положим сюда две строки добив нулями до 512 байт.

Компоновка

Компоновка также может носить следующие названия: связывание, сборка или линковка.

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

5 вещей, которые вы не знали, что вы могли бы сделать с помощью блокнота Windows

5 вещей, которые вы не знали, что вы могли бы сделать с помощью блокнота Windows

Блокнот – это простой текстовый редактор, который вы можете приобрести для Windows, и поэтому многие из нас любят или ненавидят его. Хотя я давно переехал

Финал

Поздравляю, мы справились!

Файл занимает 2 Кб = Заголовки 512 байт + 3 секции по 512 байт.

Число 512(0x200) ни что иное, как FileAlignment, который мы указали в заголовке нашей программы.

Дополнительно:
Если хочется вникнуть чуть глубже, можно заменить надпись «Hello World!» на что-нибудь другое, только не забудьте изменить адрес строки в коде программы (секция .text). Адрес в памяти 0x00402000, но в файле будет обратный порядок байт 00 20 40 00.

Или квест чуть сложнее. Добавить в код вызов ещё одного MessageBox. Для этого придется скопировать предыдущий вызов, и пересчитать в нем относительный адрес (0x3068 — RIP).

Заключение

Статья получилась достаточно скомканной, ей бы, конечно, состоять из 3 отдельных частей: Заголовки, Программа, Таблица импорта.

Если кто-то собрал свой exe значит мой труд был не напрасен.

Думаю в скором времени создать ELF файл похожим образом, интересна ли будет такая статья?)

Оцените статью
Рейтинг автора
4,8
Материал подготовил
Егор Новиков
Наш эксперт
Написано статей
127
А как считаете Вы?
Напишите в комментариях, что вы думаете – согласны
ли со статьей или есть что добавить?
Добавить комментарий