Packaging macOS
Application Bundle
Section titled “Application Bundle”Package aplikasi Anda sebagai bundle .app macOS standar:
wails3 package GOOS=darwinIni 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
Section titled “Universal Binary”Build untuk Apple Silicon dan Intel Mac:
wails3 task darwin:package:universalIni 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
Section titled “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:iconsIni 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-assetsUntuk menjalankan perintah ikon secara manual dari direktori build/:
cd buildwails3 generate icons -input appicon.png -macfilename darwin/icons.icns -windowsfilename windows/icon.ico -iconcomposerinput appicon.icon -macassetdir darwinCode Signing
Section titled “Code Signing”Tandatangani aplikasi Anda untuk distribusi:
# Using the wrapper (auto-detects platform)wails3 sign GOOS=darwin
# Or using the task directlywails3 task darwin:signKonfigurasi signing di build/darwin/Taskfile.yml:
vars: SIGN_IDENTITY: "Developer ID Application: Your Company (TEAMID)" ENTITLEMENTS: "build/darwin/entitlements.plist"Notarisasi
Section titled “Notarisasi”Untuk aplikasi yang didistribusikan di luar Mac App Store, Apple memerlukan notarisasi:
wails3 task darwin:sign:notarizePertama, simpan kredensial Anda. Jalankan wizard interaktif (wails3 setup signing) atau panggil notarytool langsung:
xcrun notarytool store-credentials "my-notarize-profile" \ --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
Section titled “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.dmgTroubleshooting
Section titled “Troubleshooting””App is damaged and can’t be opened”
Section titled “”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.appNotarisasi gagal
Section titled “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
Section titled “Aplikasi cross-compile tidak berjalan”Binary macOS cross-compile tidak ditandatangani. Transfer ke Mac dan tandatangani sebelum pengujian:
codesign --force --deep --sign - YourApp.app