Как создать файл запуска программы. Как из файла Python3 создать.exe на Windows

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

Содержимое:

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

Шаги

Часть 1 Как создать EXE-файл

  1. 1 Откройте меню «Пуск» .
  2. 2 В строке поиска меню «Пуск» введите блокнот. Так вы найдете программу «Блокнот».
  3. 3 Щелкните по значку программы Блокнот. Он выглядит как голубой блокнот и находится в верхней части меню «Пуск».
  4. 4 Введите программный код файла. Введите код построчно или скопируйте и вставьте его в Блокнот (если у вас уже есть готовый код).
    • Если вы не знаете, как, попросите об этом другого человека.
    • Также программные коды простейших EXE-файлов можно найти в интернете.
  5. 5 Щелкните по Файл. Это меню находится в верхнем левом углу окна Блокнота. Откроется выпадающее меню.
  6. 6 Нажмите Сохранить как. Эта опция находится в выпадающем меню «Файл».
  7. 7 Откройте выпадающее меню «Тип файла». Вы найдете его в нижней части окна.
    • Текущей опцией меню «Тип файла» должна быть опция «Текстовые документы (*.txt)».
  8. 8 Щелкните по Все файлы. Эта опция находится в выпадающем меню.
  9. 9 Введите имя EXE-файла. В строке «Имя файла» введите имя, а затем введите расширение.exe . Так файл будет сохранен в качестве EXE-файла.
    • Например, если файл будет называться «bananas» (бананы), введите bananas.exe .
  10. 10 Выберите папку, в которой будет храниться EXE-файл. Для этого щелкните по соответствующей папке в левой части окна.
  11. 11 Нажмите Сохранить. Эта кнопка находится в правом нижнем углу экрана. Так EXE-файл будет сохранен в выбранной папке.

Часть 2 Как создать установочный EXE-файл

  1. 1 Откройте меню «Пуск» . Для этого щелкните по логотипу Windows в нижнем левом углу экрана.
  2. 2 В строке поиска меню «Пуск» введите iexpress . Так вы найдете эту утилиту.
    • Слово iexpress введите полностью.
  3. 3 Щелкните по значку утилиты iexpress. Он выглядит как серый шкаф и находится в верхней части меню «Пуск».
  4. 4 Поставьте флажок у опции «Create new Self Extraction Directive file» (Создать новый самораспаковывающийся файл). Она находится посередине страницы. Эта опция должна быть отмечена по умолчанию; в противном случае выделите ее.
  5. 5 Щелкните по Далее. Эта кнопка находится в нижнем правом углу окна.
  6. 6 Поставьте флажок у опции «Extract files only» (Извлечь только файлы). Она находится посередине страницы.
  7. 7 Нажмите Далее.
  8. 8 Введите имя своего EXE-файла. Сделайте это в текстовом поле посередине окна, а затем нажмите «Далее».
  9. 9 Подумайте об окне с запросом. Если вы хотите, чтобы пользователь подтвердил желание запустить EXE-файл, поставьте флажок у опции «Prompt user with» (Запрос у пользователя) и введите текст запроса о подтверждении. В противном случае нажмите «Далее».
    • Когда пользователь запустит ЕХЕ-файл, откроется окно с введенным вами текстом (если вы выбрали опцию с запросом).
  10. 10 Подумайте об окне с лицензионным соглашением. Если вы хотите, чтобы на экране отобразился текст лицензионного соглашения, поставьте флажок у опции «Display a license» (Показать лицензию), затем нажмите «Browse» (Обзор), чтобы выбрать документ с текстом лицензионного соглашения, а затем нажмите «Открыть». В противном случае нажмите «Далее».
  11. 11 Нажмите Add (Добавить). Эта кнопка находится в нижней средней части окна. Откроется новое окно Проводника, в котором можно выбрать файлы, которые будут включены в установочный EXE-файл.
    • Файлы, включенные в установочный EXE-файл, будут установлены, когда пользователь запустит EXE-файл.
  12. 12 Выберите файлы, которые будут включены в EXE-файл. Щелкните по папке с файлами в левой части окна Проводника, а затем выделите нужные файлы; для этого зажмите левую клавишу мыши и перетащите курсор над нужными файлами.
    • Также файлы можно выделить по одному; для этого зажмите ^ Ctrl и щелкните по каждому нужному файлу.
  13. 13 Нажмите Открыть. Эта кнопка находится в нижнем правом углу окна. Так файлы будут добавлены в установочный EXE-файл.
    • Если нужно добавить больше файлов, еще раз нажмите «Add» (Добавить) и повторите описанный процесс.
  14. 14 Нажмите Далее.
  15. 15 Поставьте флажок у опции «Default» (По умолчанию), а затем нажмите Далее. Она находится в верхней части окна.
  16. 16 Подумайте об окне с заключительным сообщением. Такое сообщение появляется на экране по завершении процесса установки ЕХЕ-файла. Поставьте флажок у опции «Display message» (Показать сообщение), затем введите текст сообщения, а затем нажмите «Далее».
    • Если вы не хотите, чтобы на экране отображалось заключительное сообщение, просто нажмите «Далее».
  17. 17 Добавьте программу, которую нужно установить. Это программа в EXE-файле, который был создан ранее. Нажмите «Browse» (Обзор), откройте папку с файлом, щелкните по нему и нажмите «Сохранить».
    • Если хотите, поставьте флажок у опции «Hide File Extracting Process Animation from User» (Скрыть отображение процесса извлечения файлов), чтобы установочный файл работал без лишних визуальных эффектов.
  18. 18 Нажмите Далее три раза. Будет создан установочный EXE-файл. Время этого процесса зависит от количества файлов, которые вы включили в установочный EXE-файл.
  19. 19 Нажмите Готово. Эта кнопка находится в нижней части окна. Установочный ЕХЕ-файл будет сохранен и готов к работе.
  • Чтобы запустить EXE-файл, установочный EXE-файл не нужен, но установочный EXE-файл установит EXE-файл и любые вспомогательные элементы (например, файл «ReadMe», папки и так далее).

Предупреждения

  • Если вы не знаете, как написать программный код EXE-файла, попросите об этом человека, который умеет программировать.

Наверняка многим из вас хоть раз в жизни попадался архив с расширением.exe, не rar и даже не zip, а именно exe. Вся прелесть данного архива заключается в том, что он самораспаковывающийся и не требует установки дополнительных программ. Многие думают, что для того чтобы создать подобного рода архив, требуются какие-то специфические знания либо программы, но смею вас уверить, что это не так. Создаются ехе архивы при помощи одного из нескольких самых популярных архиваторов: WinRar и WinZip.

У вас на компьютере наверняка установлен один из двух этих архиваторов, поэтому смело можете сразу приступать к практике. Если же вообще никакого архиватора нет, то можете смело установить 7-zip, ведь он бесплатный и свободно распространяется на просторах Интернета. С этого архиватора мы и начнем.

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

У нас выскакивает еще одно подменю, из которого мы должны выбрать пункт «Добавить к архиву…»

Открывается у нас окошко, ищем раздел «Опции» , в опциях пункт «Создать SFX-архив» устанавливаем напротив него птичку. Теперь обращаем внимание на самое верхнее поле, где название нашего будущего архива. У нас добавилось расширение ехе. Кстати название архива можно менять. Также можно указать место, в которое его необходимо сохранить. В принципе можете поиграться и с остальными опциями, но на тип архива они не влияют. Можете поставить максимальный уровень сжатия, чтобы размер архива был как можно меньше.

Теперь можно нажать на кнопку «ОК» .

Вот такой файлик у меня получился на рабочем столе:

Теперь давайте разберемся, как создать точно такой же архив, но уже при помощи WinRar.

Точно так же кликаем правой кнопкой мыши по папке и выбираем пункт «Добавить в архив» :

В открывшемся окошке во вкладке «Общие» необходимо в разделе «Параметры архивации» поставить птичку напротив пункта «Создать SFX-архив» . Ставим какой-нибудь метод сжатия. Я выбрал «Хороший» .

Жмем на кнопку «ОК» .

Получился вот такой архив:

Вот мы и рассмотрели несколько способов о том, как создать самораспаковывающийся 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. единственным выходом в этой ситуации будет исключить эти отчеты из конечного файла и поставлять их вместе с приложением.
В любом случае решение о том какие файлы исключить, а какие оставить за Вами.

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

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