Как сделать файл exe. Создание EXE файла Пример создания простейшего exe файла

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

Нам преподаватели дали уж очень неразборчивую программку, но один умный человек посоветовал другую, которая называется Smart Movie Maker . Он сказал, что легче программы для этой задачи еще не видел.

У вас появится такое окошко:

Как вы можете увидеть левая часть окна разбита на две части: Инсталлятор и Деинсталлятор .

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

Что я вам расскажу о основных характеристиках для установочного файла.
Как вы уже заметили у файла.exe довольно таки много параметров. Поговорим немного о каждом.

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

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

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

Файлы:

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

Требования:


В этом пункте нужно указать требования к вашей программе. Например тип ОС или дополнительное ПО, которое должно быть установлено на компьютер.

Диалоги:


На этом окне есть четыре вкладки: Общая , Лицензия/Информация , Пароль и Завершение . Диалоги это дополнительные окна или пункты, которые будут появляться. Например, окно о лицензионном соглашении.

Интерфейс:


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

В принципе это все основные пункты, которые потребуются для установочного файла.

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

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

Содержание
1.Как скомпилировать EXE
1.1 Технология компиляции
1.2 Сопутствующие файлы
2.Что нужно включить в EXE

1.Как скомпилировать EXE
1.1 Технология компиляции
Эпиграф:
"Ай да Пушкин, ай да..."
А.С.Пушкин

Технология компиляции EXE в Visual FoxPro довольно проста. Мы не будем отвлекаться на такие экстремальные методы как ввод в командном окне команд типа BUILD PROJECT, BUILD APP, BUILD EXE , а ограничимся удобствами, предоставляемыми графическим интерфейсом VFP.
Итак, для создания EXE нам понадобится нажать в менеджере проекта кнопку "BUILD..." . Выбрав в открывшемся диалоговом окне опцию Win32 executable / COM server (EXE) давим OK . ВСЕ. ;-)
"Как все?"-- спросите Вы -- "А указать под каким именем сохранить файл?"
Согласен... Надо указать обязательно, иначе все насмарку.
Кстати, думаю, что нелишним будет напомнить о том, что для того чтобы процесс компиляции прошел успешно необходимо менеджер проекта заполнить файлами Вашей программы, один из которых обязательно должен быть как main (в менеджере проектов имя этого файла выделено жирным шрифтом), т.е. файл который будет исполнен первым. По умолчанию как main-программа устанавливается первый включенный в проект программный файл (*.prg) или файл формы (*.scx).
Вобщем все довольно просто! Просто..?
Теперь о грустном...

1.2 Сопутствующие файлы
Эпиграф:
"... а включаешь - не работает!"
М.Жванецкий

Все перепетии этапа компиляции приложения уже позади, и Вы, гордый от сознания собственного превосходства над простыми смертными, семимильными шагами несетесь к заказчику, устанавливаете свое приложение, попутно расписывая ему(заказчику) как теперь у него все будет круто, и подсчитывая в уме какой винт нужно купить, что бы осталось на пиво, вдруг натыкаетесь на то, что Ваша супер-пупер прога не фурычит. Грустно. Обидно. А главное не будет у Вас нового вичестера или Чего Вы Там Себе запланировали купить с гонорара...

Все дело в том, что скомпилированный нами.exe не есть самодостаточным исполняемым файлом. Для нормальной работы этому псевдо-исполняемому файлу необходимы библиотеки поддержки (.dll). Я не буду сильно вдаваться в рассуждения об этом, а просто приведу названия файлов, необходимых для нормальной работы приложения.
В принципе до 6-й версии включительно для переноса приложения на клиентскую машину можно использовать штатный Setup Wizard , который самостоятельно все прописывает, а в последующих --InstallShield (или другой инсталятор).
Все приведенные ниже файлы есть минимально-необходимый набор файлов для различных версий VFP (по материалам ):

VFP 8.0 msvcr70.dll, vfp8r.dll, vfp8rrus.dll, gdiplus.dll VFP 7.0 msvcr70.dll, vfp7r.dll, vfp7rrus.dll VFP 6.0 vfp6r.dll, vfp6renu.dll , vfp6rrus.dll VFP 5.0 vfpole50.dll, vfpodbc.dll, vfp500.dll, vfp5rus.dll, Foxpro.int
Указанный выше набор библиотек необходимо разместить в каталоге программы или в системном каталоге Windows. Для различных версий Windows эти каталоги различны:

Win9x, WinMe c:\Windows\SYSTEM WinNT,Win2000,WinXP c:\Windows\SYSTEM32

2.Что нужно включить в EXE
Эпиграф:
"To include or not to include?"
пьяный электрик

Все изложенное ниже является личным мнением автора, которым Вы можете пренебречь. Но делая по-своему помните: биться головой в бетонную стену гораздо больнее, чем воспользоваться проломом сделаным до Вас .
По умолчанию в готовый.exe включаются все файлы, необходимые для работы приложения - программы, формы, меню, библиотеки, классы и т.д. кроме файлов баз данных и таблиц (такие файлы можно узнать по перечеркнутому кружочку возле имени файла в менеджере проекта). Все включенные в.exe файлы после компиляции станут немодифицируемыми (доступными только для чтения). Понятно, что файлы таблиц (*.dbf) включать не стоит поскольку они подвергаются постоянным операциям изменения-дополнения данных, но иногда бывают случаи когда необходимо скрыть какие-либо статическиеданные от пользователя, но обеспечить доступ к ним самой программы. Лучшего места чем "внутренности" exe-шника не придумать.
Так же довольно нередкая ситуация, когда нужно "находу", или временно, изменить файл отчета, или когда имеем целый набор отчетов, уникальных для каждого пользователя. Ну в самом деле представьте: десять операторов и каждому по десять отчетов и все это в *.exe. единственным выходом в этой ситуации будет исключить эти отчеты из конечного файла и поставлять их вместе с приложением.
В любом случае решение о том какие файлы исключить, а какие оставить за Вами.

Все, пиво кончилось, надо идти в гастроном.

С уважением, Владислав Кулак

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

Существует два варианта создания EXE файла. Первый — это использование сред для программирования, а второй — применение специальных инсталляторов, при помощи которых создаются разные «репаки» и пакеты, устанавливаемые в один клик. Далее на примерах рассмотрим оба варианта.

Способ 1: Visual Studio Community

Рассмотрим процесс создания простой программы на основе языка программирования «Visual С++» и ее компиляции в Visual Studio Community.

  1. Запускаем приложение, заходим в меню «Файл» , после чего жмем по пункту «Создать» , а затем в открывшемся перечне на «Проект» .
  2. Открывается окно «Создание проекта» , в котором нужно кликнуть сначала по надписи «Шаблоны» , а потом «Visual С++» . Далее выбираем «Консольное приложение Win32» , задаем наименование и местоположение проекта. По умолчанию он сохраняется в рабочей директории Вижуал Студио Коммьюнити, в системной папке «Мои документы» , но по желанию возможно выбрать другой каталог. По завершении настроек щелкаем «ОК» .
  3. Запускается «Мастер настройки приложений Win32» , в котором просто жмем «Далее» .
  4. В следующем окне определяем параметры приложения. В частности, выбираем «Консольное приложение» , а в поле «Дополнительные параметры» «Пустой проект» , сняв при этом галочку с «Предварительно скомпилированный заголовок» .
  5. Запускается проект, в котором нужно добавить область для записи кода. Для этого во вкладке «Обозреватель решений» жмем правой кнопкой мыши по надписи «Файлы ресурсов» . Появляется контекстное меню, в котором последовательно кликаем на «Добавить» и «Создать элемент» .
  6. В открывшемся окошке «Добавить новый элемент» выбираем пункт «Файл С++» . Далее задаем имя файла кода будущего приложения и его расширение «.с» . Для изменения папки хранения нажимаем на «Обзор» .
  7. Открывается обозреватель, в котором уточняем местоположение и нажимаем на «Выбор папки» .
  8. В результате появляется вкладка с заголовком «Source.с» , в которой происходит набор и редактирование текста кода.
  9. Далее необходимо скопировать текст кода и вставить в показанную на изображении область. В качестве примера возьмем следующее:
  10. #include
    #include

    int main(int argc, char* argv) {
    printf("Hello, World!");
    _getch();
    return 0;
    }

    Примечание: Текст кода выше — это просто пример. Вместо него необходимо использовать собственный код для создания программы на языке «Visual С++».

  11. Для сборки проекта кликаем на «Начать отладку» на выпадающем меню «Отладка» . Можно просто нажать на клавишу «F5» .
  12. После чего выскакивает уведомление, предупреждающее о том, что текущий проект устарел. Здесь необходимо нажать на «Да» .
  13. По завершении компиляции приложение выводит окно консоли, в котором будет написано «Hello, World!» .
  14. Созданный файл в формате EXE можем посмотреть при помощи Проводника Windows в папке проекта.

Способ 2: Инсталляторы

Для автоматизации процесса установки ПО все более широкую популярность завоевывают так называемые инсталляторы. С их помощью создается софт, основной задачей которого является упрощение процесса развертывания ПО на компьютере. Рассмотрим процесс создания EXE файла на примере Smart Install Maker.

  1. Запускаем программу и во вкладке «Информация» редактируем наименование будущего приложения. В поле «Сохранить как» нажимаем по значку папки для определения местоположения, куда будет сохранен выходной файл.
  2. Открывается Проводник, в котором выбираем желаемое расположение и кликаем «Сохранить» .
  3. Переходим во вкладку «Файлы» , где необходимо добавить файлы, из которых будет потом собран пакет. Это осуществляется путем нажатия на пиктограмму «+» в нижней части интерфейса. Возможно также добавить целую директорию, для чего надо нажать на значок, на котором изображена папка с плюсом.
  4. Далее открывается окно выбора файлов, где нужно щелкнуть на значок в виде папки.
  5. В открывшемся обозревателе обозначаем нужное приложение (в нашем случае — это «Torrent» , у вас же может быть любой другой) и кликаем на «Открыть» .
  6. В результате в окне «Добавить запись» отображается файл с указанием пути его расположения. Остальные опции оставляем по умолчанию и жмем «ОК» .
  7. Происходит процедура добавления исходного объекта в приложение и в специальной области софта появляется соответствующая запись.
  8. Далее нажимаем «Требования» и открывается вкладка, где нужно отметить список поддерживаемых операционных систем. Оставляем галочки на полях «Windows XP» и все, что идут ниже нее. На всех остальных полях оставляем рекомендуемые значения.
  9. Затем открываем вкладку «Диалоги» , кликнув по соответствующей надписи в левой части интерфейса. Здесь все оставляем по умолчанию. Для того чтобы инсталляция проходила в фоновом режиме, можно выставить галочку в поле «Скрытая установка» .

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

Таким образом, в данной статье мы выяснили, что EXE файл может создаваться как при помощи специализированных сред разработки программ, например Visual Studio Community, так и специальными инсталляторами, к примеру, Smart Install Maker.

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

Суть этой технологии состоит в следующем.

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

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

При запуске целевого файла управление получает сначала программа инициализации ядра HomeLisp , которая затем считывает из файла все сохраненные пользователем функции и загружает их в среду Лиспа. После этого управление получает блок стартового S-выражения , и предусмотренная разработчиком программа начинает исполняться.

Рассмотрим процесс создания EXE-файла на простом практическом примере: создадим диалоговую программу, которая будет вычислять наибольший общий делитель двух целых чисел с помощью алгоритма Евклида. Пример этот не так уж бесполезен: поскольку HomeLisp работает с целыми неограниченной разрядности, написание аналогичного примера в любой расхожей среде программирования (VB,C++,Delphi) потребовала бы заметных усилий...

Функция *GCD имеет следующий вид:

(defun *gcd (x y) (cond ((eq x y) x) ((greaterp y x) (*gcd y x)) ((eq (remainder x y) 0) y) (T (*gcd y (remainder x y))))) ==> *gcd (*gcd 655 72) ==> 1 (*gcd 655 75) ==> 5 (*gcd 65536 4096) ==> 4096

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

Запрос (посредством функции ASK ) первого операнда;

Запрос второго операнда;

Вычисление результата;

Отображение результата с помощью функции SAY ;

Напишем определяющее выражение для функции GCD-1 , в котором будет реализован приведенный выше алгоритм:

(defun GCD-1 nil (prog (a1 a2) (setq a1 (str2fix (Ask "Введите первый операнд"))) (setq a2 (str2fix (Ask "Введите второй операнд"))) (TRY (say (fix2str (*gcd a1 a2))) EXCEPT (say "Ошибка!"))))

Следует обратить внимание на то, что результат вызова ASK имеет тип STRING , а функция *GCD требует операндов типа FIXED . Поэтому, прежде, чем присваивать введенные пользователем значения локальным переменным, a1 и a2 , эти значения следует преобразовать в тип FIXED (для чего служат вызовы функции STR2FIX ).

Далее, поскольку готовится диалоговая программа, предназначенная для конечного пользователя, следует предусмотреть возможные ошибки. Именно поэтому вычисление наибольшего общего делителя сделано критическим участком кода с помощью вызова функции TRY Если в процессе вычисления произойдет сбой, программа не "упадет", а будет выдано сообщение "Ошибка!".

Если выполнить функцию GCD-1 из среды разработки, то сначала будет выведено окно запроса первого операнда:


Пользователь вводит первый операнд и нажимает кнопку OK ; появляется окно запроса второго операнда:


Пользователь вводит второй операнд, нажимает кнопку OK и получает результат:


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


В обоих случаях будет открыто окно построения EXE-файла:



Чтобы создать EXE-файл, необходимо выполнить следующие действия:

Задать имя EXE-файла. Имя (и путь) будущего EXE-файла задаются в комбинированном поле ввода в левом верхнем углу формы создания EXE-файла. Имя и путь можно задать вручную, а можно нажать кнопку "..." и выбрать директорию и имя с помощью стандартного диалога Сохранить как . По умолчанию создается файл noname.exe в текущей директории.

В области ввода "Стартовое S-выражение" необходимо задать код, с которого начнется выполнение будущего приложения. Стартовое S-выражение может быть вызовом функции. Если требуется задать стартовое S-выражение, состоящее из нескольких вызовов, то эти вызовы следует "заключить" в PROG -конструкцию.

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

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

Изменить значения настроечных параметров в списке, расположенном в правом верхнем углу. Последовательность действий при замене значений параметров будет описана ниже;

Сбросить флажок "Отображать диспетчерскую форму при старте". Если этот флажок оставить поднятым, то при запуске приложения будет отображаться специальная диспетчерская форма. Этой форме можно задать заголовок (в соответствующем поле ввода). Использование диспетчерской формы удобно при отладке.

Установить или сбросить флажок "Сообщать о завершении". Если этот флажок установлен, то перед завершением приложения будет выдано сообщение.

Окно создания EXE-файла с минимально-необходимым набором параметров может иметь вид:



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


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

Если же при создании EXE-файла поднять флажок "Отображать диспетчерскую форму при старте" и задать заголовок формы:


То при исполнении полученного EXE-файла, в правом верхнем углу экрана отображается диспетчерская форма следующего вида:


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

Если в процессе выполнения приложения с диспетчерской формой возникает ошибка, то информация об ошибке выводится в область вывода, которая в нормальном состоянии скрыта. Например, если сделать стартовым S-выражением вызов несуществующей функции (unknown) , то при выполнении возникнет картинка, приведенная ниже:


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


Если в процессе выполнения нажать "Стоп", то выполнение программы прерывается:


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

Режим построения EXE-файлов с диспетчерской формой предназначен для облегчения отладки приложений. Если не использовать диспетчерскую форму, то управлять графическими окнами должен будет сам разработчик, а в случае "зависания" приложения для его снятия придется использовать диспетчер задач ОС.

При необходимости изменить значение какого-либо настроечного параметра (размер стека, число лексем и т.д.) необходимо щелкнуть мышью по нужно строке списка "Параметры". Числовое значение соответствующего параметра будет перенесено в область ввода, расположенную под списком:



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


Программный код, сгенерированный дизайнером, может иметь такой вид:

(prog nil (dlgCreate "_Dlg_ 419 233 "Наибольший общий делитель:") (dlgAddControl "_Dlg_ "_LBL_1 _LABEL 14 15 100 21 "("Tahoma" 14,25 1 0 0) "Первое:" 0 &H80000012 &H8000000F) (dlgAddControl "_Dlg_ "_TXT_1 _TEXT 155 13 248 31 "("Tahoma" 14 1 0 0) "" 0 &H80000008 &H80000005) (dlgAddControl "_Dlg_ "_LBL_2 _LABEL 12 59 133 26 "("Tahoma" 14,25 1 0 0) "Второе:" 0 &H80000012 &H8000000F) (dlgAddControl "_Dlg_ "_TXT_2 _TEXT 156 56 247 31 "("Tahoma" 14 1 0 0) "" 0 &H80000008 &H80000005) (dlgAddControl "_Dlg_ "_LBL_3 _LABEL 13 101 127 27 "("Tahoma" 14,25 1 0 0) "Н.О.Д." 0 &HFF &H8000000F) (dlgAddControl "_Dlg_ "_TXT_3 _TEXT 157 98 247 31 "("Tahoma" 14 1 0 0) "" 0 &HFF &H80000005) (dlgAddControl "_Dlg_ "_BUT_1 _BUTTON 24 148 180 50 "("Tahoma" 8,25 1 0 0) "Вычислить") (dlgPutPicture "_BUT_1 7) (dlgAddControl "_Dlg_ "_BUT_2 _BUTTON 213 149 180 50 "("Tahoma" 8,25 1 0 0) "Закрыть") (dlgPutPicture "_BUT_2 36) // // Обработчик события CLICK для кнопки _BUT_2 // (defun _BUT_2_Click Nil (prog Nil (dlgHide "_DLG_) (dlgDestroy "_DLG_) (gc))) // // Назначение процедуры-события _BUT_2_Click контролу _BUT_2 // (dlgSetEvent "_BUT_2 "_BUT_2_Click) // // Обработчик события CLICK для кнопки _BUT_1 // (defun _BUT_1_Click Nil (prog (a1 a2) (setq a1 (str2fix (dlgGetText "_TXT_1))) (setq a2 (str2fix (dlgGetText "_TXT_2))) (TRY (dlgPutText "_TXT_3 (fix2str (*gcd a1 a2))) EXCEPT (dlgPutText "_TXT_3 "Ошибка!!!")))) // // Назначение процедуры-события _BUT_1_Click контролу _BUT_1 // (dlgSetEvent "_BUT_1 "_BUT_1_Click) // // Отображение диалога _Dlg_ // (dlgShow "_Dlg_))

Для того, чтобы построить EXE-файл, нужно загрузть в среду Лиспа функцию и написать стартовое выражение для отображения диалога. Проще всего "погрузить" приведенную выше PROG -конструкцию в функцию MAIN без параметров. Тогда стартовым S-выражением для запуска EXE-файла будет вызов (main) . Итак, если загрузить в среду Лиспа следующие функции:
// // Поиск наибольшего общего делителя // (defun *gcd (x y) (cond ((eq x y) x) ((greaterp y x) (*gcd y x)) ((eq (remainder x y) 0) y) (T (*gcd y (remainder x y))))) // // Программа отображения диалога _Dlg_ // (defun main nil (prog nil (dlgCreate "_Dlg_ 419 233 "Наибольший общий делитель:") (dlgAddControl "_Dlg_ "_LBL_1 _LABEL 14 15 100 21 "("Tahoma" 14,25 1 0 0) "Первое:" 0 &H80000012 &H8000000F) (dlgAddControl "_Dlg_ "_TXT_1 _TEXT 155 13 248 31 "("Tahoma" 14 1 0 0) "" 0 &H80000008 &H80000005) (dlgAddControl "_Dlg_ "_LBL_2 _LABEL 12 59 133 26 "("Tahoma" 14,25 1 0 0) "Второе:" 0 &H80000012 &H8000000F) (dlgAddControl "_Dlg_ "_TXT_2 _TEXT 156 56 247 31 "("Tahoma" 14 1 0 0) "" 0 &H80000008 &H80000005) (dlgAddControl "_Dlg_ "_LBL_3 _LABEL 13 101 127 27 "("Tahoma" 14,25 1 0 0) "Н.О.Д." 0 &HFF &H8000000F) (dlgAddControl "_Dlg_ "_TXT_3 _TEXT 157 98 247 31 "("Tahoma" 14 1 0 0) "" 0 &HFF &H80000005) (dlgAddControl "_Dlg_ "_BUT_1 _BUTTON 24 148 180 50 "("Tahoma" 8,25 1 0 0) "Вычислить") (dlgPutPicture "_BUT_1 7) (dlgAddControl "_Dlg_ "_BUT_2 _BUTTON 213 149 180 50 "("Tahoma" 8,25 1 0 0) "Закрыть") (dlgPutPicture "_BUT_2 36) // // Обработчик события CLICK для кнопки _BUT_2 // (defun _BUT_2_Click Nil (prog Nil (dlgHide "_DLG_) (dlgDestroy "_DLG_) (gc))) // // Назначение процедуры-события _BUT_2_Click контролу _BUT_2 // (dlgSetEvent "_BUT_2 "_BUT_2_Click) // // Обработчик события CLICK для кнопки _BUT_1 // (defun _BUT_1_Click Nil (prog (a1 a2) (setq a1 (str2fix (dlgGetText "_TXT_1))) (setq a2 (str2fix (dlgGetText "_TXT_2))) (TRY (dlgPutText "_TXT_3 (fix2str (*gcd a1 a2))) EXCEPT (dlgPutText "_TXT_3 "Ошибка!!!")))) // // Назначение процедуры-события _BUT_1_Click контролу _BUT_1 // (dlgSetEvent "_BUT_1 "_BUT_1_Click) // // Отображение диалога _Dlg_ // (dlgShow "_Dlg_)))

а затем построить EXE-файл gcd-2.exe , задав следующие параметры:


То получится вполне работоспособный EXE-файл . Его можно запустить, и убедиться, что НОД считается верно:

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

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

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

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

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

>py -3.4 -m venv myenv > myenv\Scripts\activate.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:\Projects\Python\ hello.py). Это создаст папку DIST, которая содержит исполняемый файл. Для быстрого доступа к нему, наберите в терминале:

> explorer dist

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

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

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

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

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

>deactivate

Способ 2

Через командную строку Windows устанавливаем pyinstaller:

> pip install pyinstaller

В командной строке переходим в папку, где находится файл

Cd c:\...

Затем в командной строке набираем команду

Pyinstaller --onefile example.py

Вместо exapmle.py используем имя файла, из которого нужно создать exe файл.

Через пару минут все готово! Скоркее всего, exe файл будет находится во созданной подпапке dist