/ distribution / macos / create_app_bundle.sh
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