Since i have gotten so much from the UE4 community, its time to give a little something back.
I couldn’t find any info on how to create the proper files for deployment a Mac build of a game to the Mac store… After some research, this is a step by step guide on you do it. If I’ve missed something, or if i’ve got something wrong, please correct me. At least this solution worked for me…
I think its useful for Blueprint only projects and/or if you don’t want to use Xcode to build your project.
The .app file created by Unreal Engine when you Package your game for Mac is not suitable for Mac Store deployment (at least up to 4.10.1). I will outline below the steps you need to take in order to create the final pkg file that you will upload to iTunes Connect via Application Loader.
First of all you will need to have the proper Developer Certificates in your Mac. For Mac Store deployment you need to have a. 3rd Party Mac Developer Application and b. 3rd Party Mac Developer Installer You can create these certificates in the Member centre of the Apple Developer Program. You must also have the latest Xcode installed.
The .app file created by Unreal Engine has a generic bundle identifier and you will have to edit that with your own (which again you create in the Member centre of the Apple Developer Program. To edit the bundle identifier first right click on the .app file and select Show Package Contents. Then Open Contents/Info.plist. Find the Bundle Identifier record and** edit it with your own identifier**. Save the file.
There are more things you need to change/ add in your Info.plist. a. Add the LSApplicationCategoryType key and select the relevant category of you app for the Mac Store. Edit the version number to reflect the one of your app, as it appears in iTunes Connect.
Make sure your ICNS file contains both a 512x512 and a 512x512@2x image. Recreate it if needed and place it in your myapp.app/Contents/Resources
In the myapp.app/Contents/Resources you might have a file named RadioEffectUnit.component. Right click on it, show contents and edit the Info.plist file you will find there to match your bundle identifier.
You will need to sandbox your app. Create an myapp.entitlements file somewhere in your disk… A basic entitlements looks like this:
<?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”>
- After than you will need to code sign your app. I found out that you need code sign all libraries included in your app. These libraries reside in yourapp.app/Contents/MacOS/
The command you will need is the following, and you must run in the Terminal in the same folder as your .app file:
codesign -f -v -s "Your own 3rd Party Mac Developer Application" --entitlements "path_to_your_entitlements" "Path_to_your_app_content_mac_os_folder/libraryname"
Run it for each library in your yourapp.app/Contents/MacOS/ folder.
codesign -f -v -s "Your own 3rd Party Mac Developer Application" --entitlements "path_to_your_entitlements" "myapp.app/Contents/MacOS/libogg.dylib"
Finally code sign your .app file with the same command
codesign -f -v -s "Your own 3rd Party Mac Developer Application" --entitlements "path_to_your_entitlements" "myapp.app"
if your code sign was successful you will see a message saying "signed bundle with Mach-O thin (x86_64)"
- After successfully signing your app you will need to create the proper .pkg, witch you will upload to iTunes Connect
To do that run the following command:
productbuild --component "myapp.app" /Applications --sign "Your own 3rd Party Mac Developer Installer" --product "myapp.app/Contents/Info.plist" myapp.pkg
Notice that for the product build you use the Mac Developer Installer certificate.
This procedure may take a few minutes.
The created .pkg can be uploaded via Application Loader to iTunes Connect.
I have also create a wiki page at https://wiki.unrealengine.com/MacStore