Windows और Mac पर Python डेस्कटॉप ऐप्स का वितरण
Python क्रॉस-प्लेटफ़ॉर्म है। आप एक बार कोड लिखते हैं और इसे कहीं भी चला सकते हैं।
लेकिन उस कोड को वितरित करना एक अलग कहानी है। Windows और macOS के लिए पाइपलाइन पूरी तरह से अलग होती है। आपको प्रत्येक सिस्टम के लिए अलग-अलग टूल्स और अलग-अलग नियमों को संभालना होगा।
रिलीज़ प्रक्रिया का विवरण यहाँ दिया गया है:
Mac पाइपलाइन • Build: x86_64 आर्किटेक्चर के साथ PyInstaller का उपयोग करें। • Format: एक .app bundle और फिर एक .dmg फ़ाइल बनाएँ। • Signing: Developer ID सर्टिफिकेट के साथ codesign का उपयोग करें। • Validation: Notarization के लिए अपने ऐप को Apple के पास सबमिट करें।
Windows पाइपलाइन • Build: PyInstaller का उपयोग करें। • Format: .exe इंस्टॉलर बनाने के लिए Inno Setup का उपयोग करें। • Signing: क्लाउड-आधारित साइनिंग के लिए eSigner CSC का उपयोग करें। • Validation: Microsoft SmartScreen सिस्टम में प्रतिष्ठा (reputation) बनाएँ।
सामान्य गलतियाँ (Common Pitfalls)
Mac आर्किटेक्चर यदि आप Apple Silicon Mac पर बिल्ड करते हैं, तो आपके बाइनरी (binaries) केवल ARM64 पर काम कर सकते हैं। इसका मतलब है कि वे Intel Macs पर काम नहीं करेंगे। यह सुनिश्चित करने के लिए कि आपका ऐप दोनों प्रकार के Macs पर चले, हमेशा अपने बिल्ड को x86_64 आर्किटेक्चर के माध्यम से चलाएँ।
Mac साइनिंग साधारण साइनिंग अक्सर Hardened Runtime के साथ विफल हो जाती है। आपको अपने ऐप बंडल के अंदर प्रत्येक Mach-O बाइनरी को खोजना होगा और उन्हें अंदर से बाहर की ओर एक-एक करके साइन करना होगा।
Mac Notarization Notarization में कई दिनों तक देरी हो सकती है। यह अक्सर कोई तकनीकी बग नहीं होता है। अपने Apple Developer अकाउंट में देखें कि कहीं कोई टैक्स फॉर्म या बैंकिंग जानकारी तो नहीं छूटी है। ये प्रशासनिक समस्याएँ अक्सर आपकी रिलीज़ को रोक देती हैं।
Windows इंस्टॉलेशन अपने ऐप को user mode में इंस्टॉल करने के लिए Inno Setup का उपयोग करें। यह ऐप को सिस्टम फ़ोल्डर के बजाय यूज़र फ़ोल्डर में इंस्टॉल करता है। यह उपयोगकर्ताओं को बिना एडमिन अधिकारों (admin rights) के आपके सॉफ़्टवेयर को इंस्टॉल करने की अनुमति देता है। इससे कई सपोर्ट टिकटों से बचाव होता है।
Windows साइनिंग पारंपरिक साइनिंग के लिए फिजिकल USB टोकन की आवश्यकता होती है। इससे ऑटोमेशन कठिन हो जाता है। अपनी फ़ाइलों को सीधे अपने स्क्रिप्ट से साइन करने के लिए eSigner CSC जैसी क्लाउड साइनिंग सेवाओं का उपयोग करें।
वर्शनिंग की समस्या आपको सभी फ़ाइलों में वर्शन नंबरों को सिंक्रोनाइज़ (synchronized) रखना होगा। यदि आपके Python कोड, इंस्टॉलर स्क्रिप्ट और वेब सर्वर अलग-अलग वर्शन नंबर का उपयोग करते हैं, तो आपके अपडेट चेक विफल हो जाएंगे।
पाइपलाइन को एक बार बनाएँ। इसे सेटअप करने में समय लगता है। लेकिन एक बार जब यह काम करने लगे, तो आप 30 मिनट में नई रिलीज़ भेज सकते हैं।