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) निर्माण करा.
सामान्य चुका
Mac आर्किटेक्चर जर तुम्ही Apple Silicon Mac वर बिल्ड केले, तर तुमचे बायनरीज (binaries) फक्त ARM64 वर काम करू शकतात. याचा अर्थ ते Intel Macs वर चालणार नाहीत. तुमचे ॲप दोन्ही प्रकारच्या Macs वर चालेल याची खात्री करण्यासाठी नेहमी x86_64 आर्किटेक्चरद्वारे तुमचे बिल्ड रन करा.
Mac साइनिंग Hardened Runtime मुळे साधे साइनिंग अनेकदा अयशस्वी होते. तुम्हाला तुमच्या ॲप बंडलमधील प्रत्येक Mach-O बायनरी शोधून ती आतून बाहेरपर्यंत एक-एक करून साइन करावी लागेल.
Mac Notarization Notarization साठी कित्येक दिवस लागू शकतात. हे सहसा तांत्रिक बग (bug) नसते. तुमच्या Apple Developer खात्यात काही टॅक्स फॉर्म किंवा बँकिंग माहिती अपूर्ण आहे का ते तपासा. या प्रशासकीय समस्यांमुळे अनेकदा तुमची रिलीज थांबते.
Windows इन्स्टॉलेशन तुमचे ॲप 'user mode' मध्ये इन्स्टॉल करण्यासाठी Inno Setup वापरा. यामुळे ॲप सिस्टम फोल्डरऐवजी युजर फोल्डरमध्ये इन्स्टॉल होते. यामुळे वापरकर्त्यांना ॲडमिन हक्क (admin rights) शिवाय तुमचे सॉफ्टवेअर इन्स्टॉल करता येते. यामुळे सपोर्ट तिकिटांची (support tickets) संख्या कमी होते.
Windows साइनिंग पारंपारिक साइनिंगसाठी फिजिकल USB टोकनची आवश्यकता असते. यामुळे ऑटोमेशन करणे कठीण होते. तुमच्या स्क्रिप्ट्समधून थेट फाईल्स साइन करण्यासाठी eSigner CSC सारख्या क्लाउड साइनिंग सेवांचा वापर करा.
व्हर्जनिंगची समस्या तुम्हाला सर्व फाईल्समध्ये व्हर्जन नंबर (version numbers) सिंक्रोनाइझ ठेवावे लागतील. जर तुमचा Python कोड, इन्स्टॉलर स्क्रिप्ट आणि वेब सर्व्हर वेगवेगळे व्हर्जन नंबर वापरत असतील, तर तुमचे अपडेट चेक फेल होतील.
पाइपलाइन एकदाच तयार करा. ती सेट करण्यासाठी वेळ लागतो. पण एकदा ती व्यवस्थित सुरू झाली की, तुम्ही ३० मिनिटांत नवीन रिलीज पाठवू शकता.