Форум програміста - компіляція з рнр в exe - php

віконне додаток // Створення GUI додатків

для початку потрібно вибрати інструмент для розробки нашого віконця на PHP - ми будемо використовувати
WinBlider (www.winbinder.org).
Для початку його потрібно завантажити.

Щоб не перевантажувати все кодом я вирішив написати лише MD5 Encoder:

Using PHP Syntax Highlighting

// Підключаємо основну бібліотеку
include "include / winbinder.php";

// Даємо мітки вікнам редагування
define # 40; 'IDC_EDITBOX1002'. 1002 # 41; ;
define # 40; 'IDC_EDITBOX1003'. 1003 # 41; ;

// Малюємо віконце
$ Winmain = wb_create_window # 40; null.
AppWindow.
'MD5 Hash Generator by S1B [SBT]'.
WBC_CENTER. WBC_CENTER. 315. 134.
0x00000000. 0 # 41; ;

// Шпигуємо віконце кнопками

# Малюємо рамочку
wb_create_control # 40; $ Winmain. Frame. ''. 10. 10. 290. 85. 0. 0x00000000. 0. 0 # 41; ;
# Малюємо написи (лейбли)
wb_create_control # 40; $ Winmain. Label. 'Текст:'. 23. 35. 45. 15. 0. 0x00000000. 0. 0 # 41; ;
wb_create_control # 40; $ Winmain. Label. 'Hash:'. 23. 65. 45. 15. 0. 0x00000000. 0. 0 # 41; ;
# Малюємо віконця редагування (нижня буде неактивним), і заганяємо їх дані в змінні
$ Text = wb_create_control # 40; $ Winmain. EditBox. ''. 78. 30. 210. 20. IDC_EDITBOX1002. 0x00000000. 0. 0 # 41; ;
$ Hash = wb_create_control # 40; $ Winmain. EditBox. ''. 78. 60. 210. 20. IDC_EDITBOX1003. 0x00000040. 0. 0 # 41; ;

// Дві необхідні написи =)
wb_set_handler # 40; $ Winmain. "Process_main" # 41; ;
wb_main_loop # 40; # 41; ;

function process_main # 40; $ Window. $ id # 41; # 123;
# Оголошуємо дані віконець редагування глобальними
global $ text. $ Hash;
switch # 40; $ id # 41; # 123;
case IDC_EDITBOX1002.
wb_set_text # 40; $ Hash. md5 # 40; wb_get_text # 40; $ text # 41; # 41; # 41; ;
break;
case IDCLOSE.
wb_destroy_window # 40; $ window # 41; ;
break;
# 125;
# 125;

Parsed in 0.045 seconds, using GeSHi 1.0.8.10

Код досить простий і думаю посидівши з документацією 1-2 години Ви почнете розбиратися в ньому так само, як і я. Ну а тепер кульмінація - збираємо кватирку. Для цього пропоную створити окрему директорію і перенести наш скрипт туди. Так само потрібно перенести туди папку include з phpcode директорії вінбліндера. Тепер компілюємо, але не потрібно хапатися за Roadsend IDE. Він не підтримує Бліндер, а підтримує тільки GTK, причому судячи з туманним відповідям розробників Roadsend на їх форумі - підтримку Бліндера можна ще довго чекати. Однак витру соплі, і будемо шукати інші шляхи, і ім'я цих шляхах Bamcompile (www.bambalam.se/bamcompile/). Однак з якихось причин версія 1.21 не завжди вірно працює і іноді компілює все в непрацююче додаток, проте версія 1.1 такими глюками не страждає, тому рекомендую використовувати її. Тепер щедро виділяємо для нашого компілятора окрему папку, заходимо в командний рядок і гордо командуємо:

bambalam -w -c C: \ PHP_Projects \ MD5_Hash_Generator \ md5.phpw md5.exe


Якщо все зроблено правильно, то в директорії з компілятором буде лежати свежесколоченое віконне додаток. Усе.

в ЕХЕ без компілятор
є один вельми цікавий прийом отримання EXE через шаманство в опціях SFX архіву WinRAR.

Як приклад я буду використовувати наш перший скрипт для консолі. Для початку поміщаємо наш скрипт в окрему папку, туди ж копіюємо php.exe і php * ts.dll. Далі створюємо в цій же папці run.bat такого змісту:

@echo off
php.exe -q console.php% 1% 2

Тепер нам необхідно це упакувати, для цього виділяємо всі файли, тиснемо правою кнопкою і вибираємо "Add to archive.".


У вікні вибираємо формат архіву RAR. виставляємо максимальне стиснення і ставимо галочку "Create SFX archive".


Після цього переходимо у складку "Advanced -> SFX Options", там виставляємо перемикач на "C reate in curent folder" і в "Run after extraction" прописуємо "run.bat", а так само у вкладці "Modes" виставляємо галочку "Unpack to temporary folder ", а так само виставляємо перемикачі" Hide all "і" Overwrite all files ".


За смаком можете приліпити свою іконку в соответвуют вкладці. Тепер підтверджуємо створення архіву та на виході отримуємо EXE без всяких компіляторів.