إنشاء برنامج محمول من خلال python و Gtk على ويندوز

بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته



إنشاء برنامج محمول من خلال python و Gtk على ويندوز .







مقدمة :


أخيرا بعد تجارب كثير pygobject على ويندوز من دون تثبيت شيء (ماعدا Visual C++ 2010 Redistributable) أي أصبح برنامج محمول طبعا حجمه سيكون كبير 200mb تقريبا لأنه يحتوي مفسر بايثون (الذي جربته على الأضمن 3.4.4 أي إخترت إصدار قديم نسبيا) و gtk إصدار 3.24 .

مع الملاحظة بعض الأشياء لا تعمل مثلا أنا كنت عامل عند الضغط على مفاتيح Ctrl F تدخل للبحث عن الأحاديث هذا الإختصار لا يعمل على ويندوز و هناك شيء اخر مثلا عند الضغط على About النافذة الثانية لا تكون تابعة لنافذة البرامج الأساسي لاكنها بداية جيدة ربما هذه الأشياء لها حلول لم أبحث بعد.

قمت باﻷمر من خلال pygi-aio-3.24.1_rev1-setup ومن خلال التعديل على الملفات بشكل يدوي من خلال كتابة ملف bat جديد و ملف vbs والتلاعب داخلهم بالمسارات وجعلها مسارات نسبية .



أشياء سنحتاجها .


1-اولا مفسر بايثون 32bit إصدار 3.4.4 ممكن جلبه من الموقع الرسمي (إخترت 32bit حتى أضمن انه سيعمل على أي معمارية مع الملاحظة نختار ملف MSI installer و x86 تعني 32bit و x86_64 تعني 64bit) .


2-حزمة pygi-aio الإصدار الذي جربته حتى تاريخ كتابة هذا الشرح هو pygi-aio-3.24.1_rev1 حجمه تقريبا 215mb .



3-كما ذكرت لتشغيل البرنامج على أي نظام يجب ان تكون حزمة Visual C++ 2010 Redistributable مثبته.


4-البرنامج يجب ان يكون معمول بطريقة ممكن تشغيله بشكل محمول أي كل الملفات التي قد يحتاجها من ايقونة وغيره يجب أن نراعي يا اما تكون هذه الملفات جنبه يا اما نستخدم المسارات النسبية بمعنى لنفترض داخل البرنامج وضعت مسار الأيقونة إلى usr/share/myicon.png/  عند تشغيل البرنامج على ويندوز لن يعمل لأن هذا المسار غير موجود في ويندوز ممكن مثلا أن أضع الأيقونة إلى جانب البرنامج داخل مجلد إسمه مثلا icon ثم أضع المسار هكذا  icon/myicon.png .

5-يجب ان نراعي الإختلافات التي قد تكون موجودة بين النظامين مثل المسارات وكما ذكرت في أول الموضوع بعض الأشياء لا تعمل مثل تحديد Ctrl F وهذه الأشياء أو مثلا المكتبات المستخدمة في البرنامج يجب ان تكون  متوافقة مع ويندوز بشكل كامل وإذا كانت بشكل جزئي يجب معرفة هذه الأجزاء وموافقتها مع ويندوز أي قد يحتاج البرنامج أحيانا بعض التعديلات ليتوافق مع ويندوز .



لنبدأ سيكون الشرح بالصور وطويل تقريبا 30 صورة (هذا ما يناسبني ).



 بعد تثبيت بايثون ندخل على مجلد المفسر ثم مجلد scripts الذي يحتوي بعض الأدوات مثلا pip ثم نضغط مفتاح Shift ثم من الفأرة المفتاح الأيسر Right Click مع الملاحظة في حال كنا أضفنا مسار بايثون إلى PATH لا نحتاج كل هذا فقط نفتح ال cmd من أي مكان على العموم من هناك كما في الصورة نثبت ما نحتاجه انا جربت تثبيت مكتبة six لدواعي الشرح فقط .





بعد تثبيت ما نحتاجه من مكتبات من خلال pip نشغل pygi-aio ثم نختار مجلد مفسر بايثون .


 نختار مفسر واحد بالإصدار الذي نعمل عليه معنا هنا 3.4 .


 نحدد ما نريد تثبيته على الأقل يجب ان نحدد Base Packages نحدد ما يناسبنا عن نفسي عندما كنت أجرب قمت بتحديد Pango شيء متعلق ب gdk pixbuf و +Gtk هناك أشياء أخرى مثلا Clutter وغيره على العموم كلما حددنا حزم أكثر كلما كبر حجم البرنامج في النهاية, لهذا قد يحتاج الأمر دراسة لمعرفت ما قد نحتاجه وما لا نحتاجه وأساسا أظن هناك مفسرات مصغرة ممكن إستخدامها لتقليل الحجم لاكن هذا ليس موضوعنا الان يمكنك أن تقوم بهذه التجارب بنفسك مثلا تجربت بيئة وهمية او مفسر مصغر وهذه الامور .


 نختار ما يناسبنا عن نفسي لم أختار شيء هنا .

  نختار ما يناسبنا عن نفسي إخترت Glade وهو لا دخل له ببرنامجنا الذي نعمل عليه أنا إخترته لأجربه على العموم الأفضل عدم إختيار شيء لا نحتاجه .




إنتهينا من pygi-aio .




 أخذت نسخة عن مجلد المفسر وأعدت تسميته إلى إسم برنامجي الذي هو ahadis .



 إبحثو في مجلد c:\windows عن ملف python34.dll وإنسخوه إلى مجلد المشروع الذي نعمل عليه أي إلى جانب ملف python.exe (ملاحظة نطابق إسم الملف مع الإصدار الذي نعمل عليه أي python 3.4 إسم الملف python34.dll ) .




جلبت برنامجي ووضعته داخل مجلد المشروع نلاحظ الملف التنفيذي للبرنامج موجود في مجلد إسمه src .



 نقوم بإنشاء ملفين بإسم البرنامج واحد ينتهي ب bat وواحد ينتهي ب vbs .


 داخل ملف bat نضع هذه الأسطر في الأسفل مع الملاحظة أني إستخدمت المسارات النسبية و \.. تعني المجلد الذي قبلي أو المجلد الأعلى أو المجلد الأب مثال مجلد Lib ومفسر بايثون python.exe وتوابعه ...إلخ موجودين عندي الأن في شيء كهذا .
C:\Users\yusuf\Desktop\ahadis

وملف bat موجود في هذا المسار .
C:\Users\yusuf\Desktop\ahadis\ahadis\src


بدل أن أكتب المسار المطلق مثلا لمفسر بايثون كاملا أي هكذا 
C:\Users\yusuf\Desktop\ahadis\python.exe

أكتب ان  مفسر بايثون موجود في المجلد الذي يسبقني (\..) عندها نصبح في .

 C:\Users\yusuf\Desktop\ahadis\ahadis

لاكن معنا هنا المفسر موجود في المجلد الذي يسبقه أيضا عندها أضيف \.. أخرى فيصبح هكذا.

python.exe\..\..

سبب عدم إستخدام المسار المطلق لأن إسم المستخدم قد يختلف من جهاز لجهاز وأساسا البرنامج ليس بالضرورة أن يكون في مجلد Desktop ممكن نقله لأي مكان أتمنى أن تكون الفكرة وصلت .


@set PATH=..\..\Lib\site-packages\gnome;..\..\Lib\site-packages\..\..;..\..\Lib\site-packages\..\..\Scripts;%PATH%
@set TYPELIBDIR=..\..\Lib\site-packages\gnome\lib\girepository-1.0
@set GIRDIR=..\..\Lib\site-packages\gnome\share\gir-1.0
@set GNOMEDIR=..\..\Lib\site-packages\gnome
@echo off
START /B  ..\..\python.exe ahadis

التنسيق سيء على blogger نتأكد وأشدد على هذا نتأكد  من تحديد كل شيء ثم نعمل نسخ copy ثم لصق paste في ملف bat (مع الملاحظة نستبدل ahadis بإسم الملف التنفيذي للبرنامج الخاص بك ).




نلاحظ عند تشغيل ملف bat سيعمل البرنامج لاكن ستظهر أيضا نافذة cmd وهنا يأتي دور ملف vbs للامانة ليس لدي خبرة كبيرة على ويندوز بهذه الأشياء لاكن بعد تجارب لم تنفع إلا هذه الطريقة نكتب داخل ملف vbs كما في الأسفل ونشغل لنجده يعمل من دون نافذة cmd .
Set oShell = CreateObject ("Wscript.Shell")
Dim strArgs
strArgs = "cmd /c ahadis.bat"
oShell.Run strArgs, 0, false

أيضا نتأكد من تحديد كل شيء ثم نعمل نسخ copy ثم لصق paste في ملف vbs (مع الملاحظة نستبدل ahadis.bat بإسم ملف bat للبرنامج الخاص بك ).






ممكن وضع ملف إختصار ووضع له أيقونة بعد تحويل الأيقونة إلى صيغة ico (هناك مواقع توفر هذه الإمكانية مجانا ولم أجرب البرامج لأن النسخة الذي كنت أستخدمها من ويندوز خام ليس فيها برامج وعلى السرعة إستخدمت موقع مجاني فقط إبحثو في جوجل ) .






أخيرا بعض الملاحظات .



هذا ملف ال bat الخام قبل تعديله ربما إذا إخترت حزم أكثر من pygi-aio قد يتغير عن الذي وضعته انا في اﻷعلى لهذا ستحتاج أخذ نسخة عنه وتعديله بنفسك بذات المبدأ أي المسارات النسبية .



إذا جربت البرنامج على جهاز أخر وحصلت على هذا الخطأ تكون Visual C++ 2010 Redistributable غير مثبته.









شارك الموضوع

مواضيع ذات صلة

التسميات

2016 (1) 23 (1) 24 (3) 25 (1) 26 (1) 27 (1) 28 (1) 29 (1) 30 (1) 31 (1) إتصال (1) إختراق (2) أدة (1) أدوات (1) إرسال (1) أرش (1) إسترجاع (1) إستعلام (1) أشياء (7) أشياء تفعلها (8) إصدارات (1) إصلاح (6) إصلاحrealtek (1) إضافات (1) إضافة (1) أعجوبة (1) أعجوية (1) إعداد (1) إقاف (2) أقسام (1) ألعاب (2) الفرق (1) الفلاشة (1) القسم هوم (1) الكتابة بالعربية (1) إلى جانب (1) أندرويد (1) إنشاء (1) إنشاء مستودع (1) أيات (1) أيزو (1) أيقومات (1) أيقونات (1) ايقونات (2) باتش (1) بارامتر (1) بايثون (16) برامج (56) برامج إسلامية (2) برنامج (19) برودباند (1) بعد (7) بعد التثبيت (8) بلوتوث (1) بناء (1) بناء توزيعة (1) بيئة عمل (1) تثبيت (29) تجهيز (2) تجهيو من دون (2) تحزيم (2) تحقق (1) تحويل (1) تخصيص (5) ترجمة (2) ترقية (1) تسجيل الشاشة (1) تشغيل (3) تعريف (13) تعطيل (2) تعلم (6) تفعلها (7) تفعيل (2) تقطع الأحرف (1) تقعيل (1) تنزيل (2) تورنت (1) توزيعة (1) توسعة (1) ثيم (5) ثيمات (1) جافا (1) جماليات (7) جنوم (1) حجم (1) حرق (2) حزمة (1) حل (2) دالة (1) دورة (1) روتر (1) ريدهات (2) سكربت (2) شرح (11) صورة متحركة (1) فايرفوكس (1) فتح منفذ (1) فصل (1) فلاشة (3) فيدورا (29) فيدورا بالعربي (1) قاموس (1) كالي (2) كتاب (2) كتب (2) كرت (1) كروت الشاشة (1) كلمة المرور (2) كورس (1) كورورا (1) لعبة (1) لينكس (2) لينكسو (1) ماهو (6) متغير البيئة (1) مجانا (1) محاكات (2) محاكي (1) محمل الإقلاع إصلاح (1) محمول (1) مستودعات (1) مشكلة (2) ملف نصي (1) من إصدار (1) نظام ملفات (1) نمط (2) نواة (1) هجين (4) واجهات (1) وايرلس (1) وهمي (2) ويندوز (2) access token (1) active (2) add (1) after (7) alias (1) andoid studio (1) android (2) android studio (1) Apache (2) appstream (1) arboot (1) arboot fix (1) arch (3) archiso (1) arfedoraccframework (3) arfedoracontrolcenter (3) arfedy (1) atari (1) atom (1) ayat (1) bicon (1) blivet (1) blivet-gui (1) bls (1) bluetooth (1) book (2) books (2) bootloader fix (1) boxes (3) broadband (1) broadcom (1) broadwayd (1) bugzilla (1) build (2) builddep (1) bumblebee (1) bumbleebe (2) burn (2) byzanz (1) c# (1) calamares (1) camera (1) cannot open display (1) cannot open display: :0 (1) ccna (1) cd (2) centos (1) change (2) chsh (1) cisco (1) clion (1) clone (1) code.org (1) command (2) command line (2) commands (2) comps (1) connect (1) contra (1) convert (1) copr (1) could not connect to the debugger (1) cpu (1) cpufreq (1) createrepo (1) csharp (1) css (1) curlew (1) custom (2) dbus (3) dconf (1) dd (1) Decryption (1) defragment (2) desktop (1) desktop entry (1) dictionary (1) Digital signature (1) disks (1) dnf (14) do (7) docker (1) dolphine (1) download (2) downloads manager (1) dply (1) DRI PRIME (1) driver (9) dukto (1) e2fsck (1) efi (4) el forkane (1) elforkane (1) elif (1) emergency (3) emergency mode (3) emulator (1) enable (2) Encryption (1) entries (1) error mounting /dev/sd (1) ext4 (1) extend (1) extensions (2) fakenes (1) fast startup (2) fceux (1) fedora (45) fedora 25 alpha (1) fedora cloude (1) fedora28 (1) fedoraوفيدورا (1) fedy (1) fgmac (2) fgmac-24 (1) file (1) find (1) firefox (2) fix (10) flash mem (1) flash memory (2) flashplayer (1) flatpak (4) forward (1) fpaste (1) free (1) freebsd (1) freevpn (1) function (1) game (3) games (2) gedit (1) genymotion (1) gettext (1) gif (1) gimp (1) gio (1) github (5) github.io (1) glibc-common (1) gmaclinux (2) gnome (16) gnome boxes (1) gnome disk (1) gnome shell (13) gnome terminal (1) gnome-disks (1) gnu (1) godot (1) goldendict (1) google web designer (1) gpg (2) gradio (1) group (2) grub (7) grub2 (1) grubenv (1) gstreamer (1) gtk (8) gtk+ (1) gvrecord (1) hack (2) hash (4) hdmi (3) hibernate (1) home (2) hosspot (1) html (1) http (1) hybrid (2) icon (2) icons (3) ide (1) if (1) install (32) installf (9) installing (7) intellij idea (1) internet downlaod manager (1) iso (2) java (3) jdk (2) jetbrains (1) jetbrains toolbox (1) kali (2) kde (3) kernel (1) kernel parameters (1) key (1) kickstarts (3) korora (1) krita (1) kvm (2) kvm switches (1) lamp (1) laps (1) learn (1) legacy (1) legacy bios (3) libreoffice (2) libvirt (1) life is trange (1) linux (8) lutris (1) lv (1) lvm (2) mac (4) macros (1) mageia (1) make distro (1) mariadb (1) MariaDB and PHP Lamp Server (1) markdown (2) mate terminal (1) mbr (1) md5sum (1) mirro (1) mkconfig (1) mo (1) mono (2) monodevelop (2) mount (1) mp4 (1) multi screen (1) mumble (1) murmur (1) natron (1) nautilus (2) nes (1) netbeans (1) netcut (1) nintendo (1) ntfs (2) nvidia (8) objdesktop (1) ojuba (2) oop (1) opensuse (1) openvpn (1) opera (1) optirun (2) oracle (1) os.path (1) package (2) page (1) pages (1) pantheon (1) parameter (1) parameters (1) password (2) patch (1) path (2) pdf (1) peek (1) photoshop (1) php (1) phpstorm (1) plasma (2) plugin (3) plugins (1) plymouth (1) po (1) polkit (1) port (1) portable (1) portmatp (1) PostinstallerF (1) pot (1) powerline (2) powerline-go (1) preset (1) preview (1) primary display (1) primeos (1) primus (1) primusrun (1) private key (1) programs (3) protonvpn (1) pubg (1) public key (1) put (1) pv (1) pycharm (2) pygobject (4) pygtk (5) python (56) pythonk (1) qdbus (1) qemu (3) qemu-kvm (1) query (1) radio (1) raspberry pi (4) raspbian (2) reclaim space (2) record (1) redhat (3) remix (1) remix os (1) repo (4) repofrompath (1) repository (1) reset (1) resize2fs (1) rhel (1) router (1) rpm (7) rpmbuild (1) rtl8188ee (1) rtl8192c (1) rtl8192ce (1) rtl8192cu (1) rtl8192de (1) rtl8192ee (1) rtl8192se (1) rtl8723ae (1) rtl8723be (1) rtl8723com (1) rtl8821ae (1) rubymine (1) salix (1) scratch (2) scratch2.scratch 2 (1) screencast (1) script (2) seconday display (1) self (1) send (1) server (1) settings (2) sha1256sym (1) sha256sum (1) share desktop (1) shell (2) shortcut (1) shutter (1) skel (1) skel ماهو (1) skype (1) skype.برامج (1) slackware (1) software (1) soundcloud (1) source code (1) spec (2) spin (1) sqlmap (1) ssh (3) sshd (2) st-trans (1) steam (2) store (1) su (1) sudo (2) sudoers (1) swap (2) switch (2) Switchable Graphics (1) synergy (1) systemd (1) systemd preset (1) teamviewer (1) terminal (2) theme (5) things (7) thomson (1) thread (2) threading (2) thumbnails (1) to (8) tor (2) tor browser (1) torrent (1) transfer closed with 736700 bytes remaining to read (1) translation (1) turn off (2) tuxcut (1) txt (1) ubuntu (1) uefi (5) unable to mount location (1) unity (1) unity3d (1) upgrade (1) usb (1) useradd (2) utf-8 (1) vega (1) verify (1) vg (1) vgaوتبديل (1) vi (1) video (1) vim (1) vino (1) virsh (1) virt-install (1) virt-manger (1) virtual (1) virtual box (1) virtualbox (3) vmware (3) vnc server (1) vokoscreen (1) vpn (1) web server (1) webstorm (1) wifi (1) windows (4) windows-1256 (1) wine (1) woeusb (1) X Error: BadAccess (1) X Error: BadDrawable (1) xdg-mime (1) xdman (1) xfce (1) xfconf-query (1) yum (2) zeal (1) zealdocs (1)