Packaging macOS
Application Bundle
Package aplikasi Anda sebagai bundle .app macOS standar:
wails3 package GOOS=darwin
Ini membuat bin/<AppName>.app yang berisi:
- Binary terkompilasi di
Contents/MacOS/ - Ikon aplikasi di
Contents/Resources/(dariicons.icnsatau, jika ada, dari asset catalogAssets.car) Info.plistdengan metadata aplikasi
Universal Binary
Build untuk Apple Silicon dan Intel Mac:
wails3 task darwin:package:universal
Ini membuat satu .app yang berjalan native di kedua arsitektur. Universal binary dapat dibangun di platform mana pun — di Linux dan Windows, wails3 tool lipo digunakan otomatis.
Kustomisasi Bundle
Edit build/darwin/Info.plist untuk menyesuaikan:
- Bundle identifier (
CFBundleIdentifier) - Nama dan versi aplikasi
- Versi macOS minimum
- Asosiasi file
- URL scheme
Ikon aplikasi dihasilkan dari asset di direktori build/. Gunakan task generate:icons:
wails3 task common:generate:icons
Ini menggunakan build/appicon.png untuk menghasilkan darwin/icons.icns dan windows/icon.ico. Di macOS Anda juga dapat menyediakan build/appicon.icon (format Icon Composer): task meneruskan -iconcomposerinput appicon.icon -macassetdir darwin, yang menghasilkan Assets.car dan darwin/icons.icns dari file .icon (dilewati di platform non-macOS). Saat Assets.car ada, jalankan task update:build-assets agar Info.plist dan CFBundleIconName diperbarui:
wails3 task common:update:build-assets
Untuk menjalankan perintah ikon secara manual dari direktori build/:
cd build
wails3 generate icons -input appicon.png -macfilename darwin/icons.icns -windowsfilename windows/icon.ico -iconcomposerinput appicon.icon -macassetdir darwin
Code Signing
Tandatangani aplikasi Anda untuk distribusi:
# Using the wrapper (auto-detects platform)
wails3 sign GOOS=darwin
# Or using the task directly
wails3 task darwin:sign
Konfigurasi signing di build/darwin/Taskfile.yml:
vars:
SIGN_IDENTITY: "Developer ID Application: Your Company (TEAMID)"
ENTITLEMENTS: "build/darwin/entitlements.plist"Notarisasi
Untuk aplikasi yang didistribusikan di luar Mac App Store, Apple memerlukan notarisasi:
wails3 task darwin:sign:notarize
Pertama, simpan kredensial Anda. Jalankan wizard interaktif (wails3 setup signing) atau panggil notarytool langsung:
xcrun notarytool store-credentials "my-notarize-profile" \
--apple-id "you@email.com" \
--team-id "TEAMID" \
--password "app-specific-password"
Konfigurasi di build/darwin/Taskfile.yml:
vars:
SIGN_IDENTITY: "Developer ID Application: Your Company (TEAMID)"
KEYCHAIN_PROFILE: "my-notarize-profile"Lihat Menandatangani Aplikasi untuk detail.
Installer DMG
Tidak ada task wails3 task darwin:create:dmg di template Wails 3 bawaan. Untuk membuat DMG, gunakan alat seperti create-dmg atau hdiutil dari Taskfile Anda sendiri setelah menjalankan wails3 task darwin:package (atau darwin:package:universal) — bundle .app berada di bin/.
# After packaging the .app:
hdiutil create -volname "MyApp" -srcfolder bin/MyApp.app -ov -format UDZO MyApp.dmg
Troubleshooting
“App is damaged and can’t be opened”
Aplikasi belum ditandatangani. Tandatangani dengan sertifikat Developer ID, atau pengguna dapat melewati Gatekeeper:
xattr -cr /path/to/YourApp.app
Notarisasi gagal
Masalah umum:
- Kredensial tidak valid: Jalankan ulang
xcrun notarytool store-credentials(atauwails3 setup signing) - Hardened runtime diperlukan: Pastikan entitlements menyertakan
com.apple.security.cs.allow-unsigned-executable-memoryjika diperlukan - Timestamp hilang: Proses signing seharusnya menyertakan timestamp otomatis
Aplikasi cross-compile tidak berjalan
Binary macOS cross-compile tidak ditandatangani. Transfer ke Mac dan tandatangani sebelum pengujian:
codesign --force --deep --sign - YourApp.app