𝗪𝗶𝗻𝗱𝗼𝘄𝘀 𝘃𝗲 𝗠𝗮𝗰'𝘁𝗲 𝗣𝘆𝘁𝗵𝗼𝗻 𝗠𝗮𝘀𝗮𝘂𝘀𝘁𝗲̈𝘂 𝗨𝘆𝗴𝘂𝗹𝗮𝗺𝗮𝗹𝗮𝗿ı 𝗗𝗮ğı𝘁𝗺𝗮𝗸

Python platformlar arasıdır. Kodu bir kez yazarsınız ve her yerde çalıştırırsınız.

Ancak bu kodu dağıtmak bambaşka bir hikayedir. Windows ve macOS için iş akışları (pipeline) tamamen ayrıdır. Her sistem için farklı araçları ve farklı kuralları yönetmeniz gerekir.

İşte yayınlama sürecinin dökümü:

Mac İş Akışı • Derleme: x86_64 mimarisi ile PyInstaller kullanın. • Format: Bir .app paketi ve ardından bir .dmg dosyası oluşturun. • İmzalama: Developer ID sertifikası ile codesign kullanın. • Doğrulama: Uygulamanızı Notarization için Apple'a gönderin.

Windows İş Akışı • Derleme: PyInstaller kullanın. • Format: Bir .exe yükleyicisi oluşturmak için Inno Setup kullanın. • İmzalama: Bulut tabanlı imzalama için eSigner CSC kullanın. • Doğrulama: Microsoft SmartScreen sisteminde itibar oluşturun.

Sık Karşılaşılan Hatalar

Mac Mimarisi Eğer bir Apple Silicon Mac üzerinde derleme yaparsanız, ikili dosyalarınız (binaries) yalnızca ARM64 üzerinde çalışabilir. Bu, Intel Mac'lerde çalışmayacakları anlamına gelir. Uygulamanızın her iki Mac türünde de çalışmasını sağlamak için derlemenizi her zaman x86_64 mimarisi üzerinden gerçekleştirin.

Mac İmzalama Basit imzalama işlemleri Hardened Runtime ile genellikle başarısız olur. Uygulama paketinizin içindeki her bir Mach-O ikili dosyasını bulmalı ve bunları içeriden dışarıya doğru tek tek imzalamalısınız.

Mac Notarization Notarization süreci günlerce takılabilir. Bu genellikle teknik bir hata değildir. Eksik vergi formları veya banka bilgileri için Apple Developer hesabınızı kontrol edin. Bu tür idari sorunlar genellikle yayınlamanızı engeller.

Windows Kurulumu Uygulamanızı kullanıcı modunda yüklemek için Inno Setup kullanın. Bu, uygulamayı sistem klasörü yerine kullanıcı klasörüne yükler. Kullanıcıların yazılımınızı yönetici hakları olmadan kurmasına olanak tanır. Bu, birçok destek talebinin önüne geçer.

Windows İmzalama Geleneksel imzalama fiziksel bir USB token gerektirir. Bu da otomasyonu zorlaştırır. Dosyalarınızı doğrudan betiklerinizden (scripts) imzalamak için eSigner CSC gibi bulut imzalama hizmetlerini kullanın.

Sürümleme Sorunu Tüm dosyalarda sürüm numaralarını senkronize tutmalısınız. Eğer Python kodunuz, yükleyici betiğiniz ve web sunucunuz farklı sürüm numaraları kullanıyorsa, güncelleme kontrolleriniz başarısız olacaktır.

İş akışını bir kez kurun. Kurulum zaman alır. Ancak bir kez çalıştığında, yeni sürümleri 30 dakika içinde yayınlayabilirsiniz.

Kaynak: https://dev.to/susumun/distributing-a-python-desktop-app-on-windows-and-mac-the-full-release-pipeline-1n4