إنشاء مثبّت Windows لتطبيق Python (من PyInstaller إلى Setup.exe)
جمّد برنامج Python باستخدام PyInstaller، ثم ضع الناتج داخل مثبّت Windows حقيقي مع اختصارات وأداة إزالة. لماذا يتفوق onedir على onefile عند صنع المثبّتات، وما الإعدادات التي تهم فعلًا.
آخر تحديث 31 أكتوبر 2026 · 3 دقائق قراءة
يحوّل PyInstaller برنامج Python إلى ملف .exe لنظام Windows يعمل من دون تثبيت Python. لكنه لا يثبّت هذا البرنامج: لا مدخل في قائمة «ابدأ»، ولا أداة إزالة، ولا شيء في إعدادات Windows. لتحقيق ذلك تضع ناتج PyInstaller داخل مثبّت. إليك المسار كاملًا، من السكربت إلى Setup.exe.
الخطوة 1: تجميد التطبيق باستخدام PyInstaller
ثبّت PyInstaller في بيئة المشروع، ثم ابنِ من المجلد الذي يحتوي سكربت الدخول:
pip install pyinstaller
pyinstaller --noconsole --onedir --name MyApp --icon app.ico main.py
ما تفعله الخيارات:
--onedir(الخيار الافتراضي) ينتج مجلدًاdist/MyApp/يحتويMyApp.exeومجلد_internal/للمكتبات. استخدم هذا الخيار للمثبّتات. فهو يبدأ أسرع من--onefile، لأنه لا يحتاج إلى فك أي شيء في مجلد مؤقت عند كل تشغيل، كما يلفت انتباه الاستدلالات التجريبية لبرامج مكافحة الفيروسات بدرجة أقل.--noconsoleيخفي نافذة الطرفية السوداء في التطبيقات الرسومية (Tkinter وPyQt وKivy وغيرها). لا تستخدمه مع أدوات سطر الأوامر.--icon app.icoيضمّن الأيقونة في ملف.exe. احتفظ بملف.icoنفسه للمثبّت.--name MyAppيحدد اسم الملف التنفيذي ومجلد الإخراج.
ملفات البيانات التي يفتحها برنامجك أثناء التشغيل (الصور، قوالب الإعدادات، النماذج) يجب إضافتها عبر --add-data "src;dest" أو في ملف .spec، وإلا فلن توجد في dist/MyApp/.
افتح dist/MyApp/MyApp.exe وتأكد من أن التطبيق يعمل. إن أمكن، انسخ مجلد dist/MyApp كاملًا إلى جهاز Windows آخر لا يحتوي Python وشغّله هناك أيضًا.
الخطوة 2: ضغط مجلد الإخراج
اضغط محتويات dist/MyApp/ في ملف zip: MyApp.exe و_internal/. لا تضمّن build/ ولا ملف .spec ولا شجرة المصدر. ملف zip هو ما سيُثبَّت، بايتًا ببايت.
الخطوة 3: بناء المثبّت
- ارفع ملف zip إلى ExeTup. سيتعرف على
MyApp.exeبوصفه البرنامج الرئيسي. - أدخل اسم التطبيق والإصدار والناشر، ورخصة إن أردت.
- اختر جميع المستخدمين (Program Files، مع طلب صلاحيات المسؤول) أو المستخدم الحالي (لا يحتاج صلاحيات مسؤول). الأدوات التي توزَّع على الزملاء غالبًا ما تعمل أفضل بالتثبيت لكل مستخدم.
- اختر المعمارية. يبني PyInstaller وفق إصدار Python الذي شغّلته به، فإصدار Python بمعمارية 64 بت يعطي تطبيقًا 64 بت.
- ارفع
app.ico، وفعّل الاختصارات التي تريدها، ثم ابنِ. - نزّل
Setup.exeواختبره على Windows.
ملاحظات خاصة بـ Python
- الإنذارات الكاذبة لبرامج مكافحة الفيروسات. حزم PyInstaller هدف متكرر للاستدلالات المفرطة في الحذر لدى برامج مكافحة الفيروسات، لا سيما بناءات
--onefile. أما بناء onedir داخل مثبّت عادي، موضوعًا في Program Files، فيتصرف كأي برنامج آخر ويقل احتمال الإبلاغ عنه. والتوقيع الرقمي للكود يساعد أكثر. - الحجم. يبلغ حجم تطبيق Tkinter من 20 إلى 40 ميغابايت، بينما يرفع PyQt أو NumPy أو PyTorch هذا الرقم كثيرًا. يقلّص ضغط LZMA في المثبّت الحجم إلى النصف عادةً. استبعد الوحدات التي لا تستخدمها عبر
--exclude-moduleلإبقائه خفيفًا. - التشغيل الأول. لأن onedir لا يحتاج إلى فك ضغط، يكون التشغيل الأول بسرعة ما يليه.
- التحديثات. وزّع مثبّتًا جديدًا برقم إصدار أعلى. التثبيت فوق الإصدار السابق يستبدل الملفات في مكانها.
- أدوات الطرفية. لبرنامج سطر أوامر، فكّر في التثبيت على مستوى الجهاز وأخبر المستخدمين بمجلد التثبيت؛ فالمثبّت لا يضيفه إلى
PATH.
البدائل
ينتج Nuitka وcx_Freeze أيضًا مجلدًا يحتوي ملف .exe، وخطوة المثبّت متطابقة. إن أردت كتابة سكربت المثبّت بنفسك، فإن NSIS وInno Setup يعملان كلاهما مع ناتج PyInstaller.
الأسئلة الشائعة
هل أستخدم --onefile أم --onedir للمثبّت؟
--onedir. يمنح المثبّت المستخدمين أصلًا ملف Setup.exe واحدًا لتنزيله، فلا داعي لتحمّل بطء إقلاع onefile وفك الضغط في مجلد مؤقت. كما أن onedir هو الخيار الافتراضي في PyInstaller.
هل يحتاج المستخدمون إلى تثبيت Python؟
لا. يجمع PyInstaller مفسّر Python والمكتبات في المجلد، ويضع المثبّت هذا المجلد على جهاز المستخدم.
لماذا يحذّر Windows من المثبّت الخاص بي؟
التنزيلات الجديدة غير الموقّعة تستدعي Microsoft SmartScreen إلى أن تكتسب سمعة. راجع دليل SmartScreen لمعرفة ما يمكنك فعله.
هل يمكنني تضمين إعدادات نموذجية أو مجلد بيانات؟
نعم. إما أن تضيفها عبر --add-data في PyInstaller لتستقر داخل _internal/، أو تضيفها في خطوة «ملفات أخرى» في ExeTup لتوضع بجوار MyApp.exe.
أدلة ذات صلة
- كيف تصنع ملف Setup.exe لتطبيق Windows (بدون برمجة)ما الذي يفعله ملف Setup.exe فعلاً، والطرق الثلاث لصنعه، وكيف تحوّل مجلد تطبيقك إلى مثبّت احترافي خلال دقائق دون كتابة أي سكربت تثبيت.
- تحويل ملف .exe إلى مثبّت Windows (من exe إلى Setup.exe)كيف تحوّل ملف .exe عاديًا، أو مجلدًا يحتوي على ملف .exe، إلى مثبّت Windows حقيقي مع اختصارات وبرنامج إلغاء تثبيت، دون كتابة أي سكربت تثبيت.
- '"قام Windows بحماية الكمبيوتر الخاص بك": ماذا يعني تحذير SmartScreen وكيف تتخلص منه'لماذا يعرض Windows تحذير "ناشر غير معروف" على مثبّت جديد، وما الذي يمكن للمستخدمين النقر عليه، وكيف يُزيل توقيع التعليمات البرمجية والسمعة هذا التحذير.