Mac App Store Guide
This page gives a brief overview of how to submit your Wails App to the Mac App Store.
Prerequisites
- You will need to have an Apple Developer account. Please find more information on the Apple Developer Program site
- You will need to have your Certificates, Identifiers, and App created on the developer portal. More on this below
- Xcode command line tools will need to be installed on your local machine
Create Certificates and Identifiers
- Go to your Apple Developer Account
- Under
Certificates, Identifiers & Profiles, clickIdentifiersand Register a New App ID. Use the format (com.example.app) - Under the same page click
Certificatesand generate new Certificates for Mac App Store Distribution. Download them and import the certificates into Keychain on your local machine.
Create App Submission
- Go to the App Store Connect Site
- Register a new application and link the bundle ID that you created in the previous step
- Populate your app with the correct screen shots, descriptions, etc. as required by Apple
- Create a new version of your app
Create Provisioning Profile
- Go to the Apple Developer Profiles page
- Add a new provisioning profile for Mac App Store Distribution
- Set the Profile Type as Mac and select the App ID for the application created above
- Select the Mac App Distribution certificate
- Name the Provisioning Profile embedded and download the created profile.
Mac App Store Process
Enable Apple's App Sandbox
Apps submitted to the Mac App Store must run under Apple's App Sandbox. You must create an entitlements.plist file for this to work. The recommendation is to create this file under this path {PROJECT_DIR}/build/darwin/entitlements.plist.
Example Entitlements File
This is an example entitlements file from the RiftShare app. For reference please put in the entitlements your app requires. Refer to this site for more information. You will need to replace the Team ID and Application Name with the ones you registered above.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
<key>com.apple.security.network.server</key>
<true/>
<key>com.apple.security.files.user-selected.read-write</key>
<true/>
<key>com.apple.security.files.downloads.read-write</key>
<true/>
<key>com.apple.application-identifier</key>
<string>TEAM_ID.APP_NAME</string>
<key>com.apple.developer.team-identifier</key>
<string>TEAM_ID</string>
</dict>
</plist>
Add the Embedded Provisioning Profile The Provisioning Profile created above needs to be added to the root of the application. It needs to be named embedded.provisionprofile.