Windows ಮತ್ತು Mac ನಲ್ಲಿ Python Desktop Apps ಅನ್ನು ವಿತರಿಸುವುದು
Python ಎಂಬುದು ಕ್ರಾಸ್-ಪ್ಲಾಟ್ಫಾರ್ಮ್ ಆಗಿದೆ. ನೀವು ಒಮ್ಮೆ ಕೋಡ್ ಬರೆದರೆ ಅದನ್ನು ಎಲ್ಲಿ ಬೇಕಾದರೂ ಚಲಾಯಿಸಬಹುದು.
ಆದರೆ ಆ ಕೋಡ್ ಅನ್ನು ವಿತರಿಸುವುದು ಬೇರೆ ವಿಷಯ. Windows ಮತ್ತು macOS ಗಾಗಿ ಇರುವ ಪೈಪ್ಲೈನ್ಗಳು ಸಂಪೂರ್ಣವಾಗಿ ಬೇರೆ ಬೇರೆ ಆಗಿವೆ. ನೀವು ಪ್ರತಿ ಸಿಸ್ಟಮ್ಗೆ ಅನುಗುಣವಾಗಿ ವಿಭಿನ್ನ ಪರಿಕರಗಳು (tools) ಮತ್ತು ವಿಭಿನ್ನ ನಿಯಮಗಳನ್ನು ನಿರ್ವಹಿಸಬೇಕಾಗುತ್ತದೆ.
ಬಿಡುಗಡೆ ಪ್ರಕ್ರಿಯೆಯ ವಿವರ ಇಲ್ಲಿದೆ:
Mac Pipeline • Build: x86_64 architecture ನೊಂದಿಗೆ PyInstaller ಬಳಸಿ. • Format: .app bundle ಮತ್ತು ನಂತರ .dmg ಫೈಲ್ ಅನ್ನು ರಚಿಸಿ. • Signing: Developer ID ಸರ್ಟಿಫಿಕೇಟ್ನೊಂದಿಗೆ codesign ಬಳಸಿ. • Validation: Notarization ಗಾಗಿ ನಿಮ್ಮ ಆ್ಯಪ್ ಅನ್ನು Apple ಗೆ ಸಲ್ಲಿಸಿ.
Windows Pipeline • Build: PyInstaller ಬಳಸಿ. • Format: .exe ಇನ್ಸ್ಟಾಲರ್ ರಚಿಸಲು Inno Setup ಬಳಸಿ. • Signing: ಕ್ಲೌಡ್-ಆಧಾರಿತ ಸೈನಿಂಗ್ಗಾಗಿ eSigner CSC ಬಳಸಿ. • Validation: Microsoft SmartScreen ಸಿಸ್ಟಮ್ನಲ್ಲಿ ರೆಪ್ಯುಟೇಶನ್ (reputation) ನಿರ್ಮಿಸಿ.
Common Pitfalls
Mac Architecture ನೀವು Apple Silicon Mac ನಲ್ಲಿ ಬಿಲ್ಡ್ ಮಾಡಿದರೆ, ನಿಮ್ಮ ಬೈನರಿಗಳು (binaries) ಕೇವಲ ARM64 ನಲ್ಲಿ ಮಾತ್ರ ಕೆಲಸ ಮಾಡಬಹುದು. ಇದರರ್ಥ ಅವು Intel Mac ಗಳಲ್ಲಿ ಕೆಲಸ ಮಾಡುವುದಿಲ್ಲ. ನಿಮ್ಮ ಆ್ಯಪ್ ಎರಡೂ ರೀತಿಯ Mac ಗಳಲ್ಲಿ ಕೆಲಸ ಮಾಡುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಯಾವಾಗಲೂ x86_64 architecture ಮೂಲಕ ನಿಮ್ಮ ಬಿಲ್ಡ್ ಅನ್ನು ರನ್ ಮಾಡಿ.
Mac Signing Hardened Runtime ನೊಂದಿಗೆ ಸಾಮಾನ್ಯ ಸೈನಿಂಗ್ (signing) ಹೆಚ್ಚಾಗಿ ವಿಫಲವಾಗುತ್ತದೆ. ನೀವು ನಿಮ್ಮ ಆ್ಯಪ್ ಬಂಡಲ್ನ ಒಳಗಿರುವ ಪ್ರತಿಯೊಂದು Mach-O ಬೈನರಿಯನ್ನು ಕಂಡುಹಿಡಿದು, ಒಳಗಿನಿಂದ ಹೊರಕ್ಕೆ ಒಂದೊಂದಾಗಿ ಸೈನ್ ಮಾಡಬೇಕು.
Mac Notarization Notarization ಪ್ರಕ್ರಿಯೆಯು ದಿನಗಟ್ಟಲೆ ವಿಳಂಬವಾಗಬಹುದು. ಇದು ಹೆಚ್ಚಾಗಿ ತಾಂತ್ರಿಕ ದೋಷವಲ್ಲ (technical bug). ನಿಮ್ಮ Apple Developer ಖಾತೆಯಲ್ಲಿ ವಿಫಲವಾದ ತೆರಿಗೆ ಫಾರ್ಮ್ಗಳು ಅಥವಾ ಬ್ಯಾಂಕಿಂಗ್ ಮಾಹಿತಿಗಾಗಿ ಪರಿಶೀಲಿಸಿ. ಇಂತಹ ಆಡಳಿತಾತ್ಮಕ ಸಮಸ್ಯೆಗಳು ನಿಮ್ಮ ಬಿಡುಗಡೆಯನ್ನು ತಡೆಯಬಹುದು.
Windows Installation ನಿಮ್ಮ ಆ್ಯಪ್ ಅನ್ನು user mode ನಲ್ಲಿ ಇನ್ಸ್ಟಾಲ್ ಮಾಡಲು Inno Setup ಬಳಸಿ. ಇದು ಆ್ಯಪ್ ಅನ್ನು ಸಿಸ್ಟಮ್ ಫೋಲ್ಡರ್ಗೆ ಬದಲಾಗಿ ಯೂಸರ್ ಫೋಲ್ಡರ್ಗೆ ಇನ್ಸ್ಟಾಲ್ ಮಾಡುತ್ತದೆ. ಇದು ಬಳಕೆದಾರರು ಅಡ್ಮಿನ್ ಹಕ್ಕುಗಳಿಲ್ಲದೆಯೇ (without admin rights) ನಿಮ್ಮ ಸಾಫ್ಟ್ವೇರ್ ಅನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ. ಇದು ಅನೇಕ ಸಪೋರ್ಟ್ ಟಿಕೆಟ್ಗಳನ್ನು (support tickets) ತಡೆಯುತ್ತದೆ.
Windows Signing ಸಾಂಪ್ರದಾಯಿಕ ಸೈನಿಂಗ್ಗೆ ಭೌತಿಕ USB ಟೋಕನ್ ಅಗತ್ಯವಿರುತ್ತದೆ. ಇದು ಆಟೊಮೇಷನ್ ಅನ್ನು ಕಷ್ಟವಾಗಿಸುತ್ತದೆ. ನಿಮ್ಮ ಸ್ಕ್ರಿಪ್ಟ್ಗಳಿಂದ ನೇರವಾಗಿ ಫೈಲ್ಗಳನ್ನು ಸೈನ್ ಮಾಡಲು eSigner CSC ನಂತಹ ಕ್ಲೌಡ್ ಸೈನಿಂಗ್ ಸೇವೆಗಳನ್ನು ಬಳಸಿ.
The Versioning Problem ನೀವು ಎಲ್ಲಾ ಫೈಲ್ಗಳಲ್ಲಿ ವರ್ಷನ್ ಸಂಖ್ಯೆಗಳನ್ನು (version numbers) ಸಿಂಕ್ರೊನೈಸ್ ಆಗಿ ಇರಿಸಬೇಕು. ನಿಮ್ಮ Python ಕೋಡ್, ಇನ್ಸ್ಟಾಲರ್ ಸ್ಕ್ರಿಪ್ಟ್ ಮತ್ತು ವೆಬ್ ಸರ್ವರ್ ವಿಭಿನ್ನ ವರ್ಷನ್ ಸಂಖ್ಯೆಗಳನ್ನು ಬಳಸುತ್ತಿದ್ದರೆ, ನಿಮ್ಮ ಅಪ್ಡೇಟ್ ಚೆಕ್ಗಳು ವಿಫಲವಾಗುತ್ತವೆ.
ಪೈಪ್ಲೈನ್ ಅನ್ನು ಒಮ್ಮೆ ನಿರ್ಮಿಸಿ. ಅದನ್ನು ಸೆಟಪ್ ಮಾಡಲು ಸಮಯ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ. ಆದರೆ ಒಮ್ಮೆ ಅದು ಕೆಲಸ ಮಾಡಿದರೆ, ನೀವು 30 ನಿಮಿಷಗಳಲ್ಲಿ ಹೊಸ ಬಿಡುಗಡೆಗಳನ್ನು (releases) ಕಳುಹಿಸಬಹುದು.