create_app_bundle.sh
1 #!/bin/bash 2 3 set -e 4 5 PUBLISH_DIRECTORY=$1 6 OUTPUT_DIRECTORY=$2 7 ENTITLEMENTS_FILE_PATH=$3 8 9 APP_BUNDLE_DIRECTORY="$OUTPUT_DIRECTORY/Ryujinx.app" 10 11 rm -rf "$APP_BUNDLE_DIRECTORY" 12 mkdir -p "$APP_BUNDLE_DIRECTORY/Contents" 13 mkdir "$APP_BUNDLE_DIRECTORY/Contents/Frameworks" 14 mkdir "$APP_BUNDLE_DIRECTORY/Contents/MacOS" 15 mkdir "$APP_BUNDLE_DIRECTORY/Contents/Resources" 16 17 # Copy executable and nsure executable can be executed 18 cp "$PUBLISH_DIRECTORY/Ryujinx" "$APP_BUNDLE_DIRECTORY/Contents/MacOS/Ryujinx" 19 chmod u+x "$APP_BUNDLE_DIRECTORY/Contents/MacOS/Ryujinx" 20 21 # Then all libraries 22 cp "$PUBLISH_DIRECTORY"/*.dylib "$APP_BUNDLE_DIRECTORY/Contents/Frameworks" 23 24 # Then resources 25 cp Info.plist "$APP_BUNDLE_DIRECTORY/Contents" 26 cp Ryujinx.icns "$APP_BUNDLE_DIRECTORY/Contents/Resources/Ryujinx.icns" 27 cp updater.sh "$APP_BUNDLE_DIRECTORY/Contents/Resources/updater.sh" 28 cp -r "$PUBLISH_DIRECTORY/THIRDPARTY.md" "$APP_BUNDLE_DIRECTORY/Contents/Resources" 29 30 echo -n "APPL????" > "$APP_BUNDLE_DIRECTORY/Contents/PkgInfo" 31 32 # Fixup libraries and executable 33 python3 bundle_fix_up.py "$APP_BUNDLE_DIRECTORY" MacOS/Ryujinx 34 35 # Now sign it 36 if ! [ -x "$(command -v codesign)" ]; 37 then 38 if ! [ -x "$(command -v rcodesign)" ]; 39 then 40 echo "Cannot find rcodesign on your system, please install rcodesign." 41 exit 1 42 fi 43 44 # cargo install apple-codesign 45 echo "Usign rcodesign for ad-hoc signing" 46 rcodesign sign --entitlements-xml-path "$ENTITLEMENTS_FILE_PATH" "$APP_BUNDLE_DIRECTORY" 47 else 48 echo "Usign codesign for ad-hoc signing" 49 codesign --entitlements "$ENTITLEMENTS_FILE_PATH" -f --deep -s - "$APP_BUNDLE_DIRECTORY" 50 fi