create_app_bundle.sh 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #!/bin/bash
  2. set -e
  3. PUBLISH_DIRECTORY=$1
  4. OUTPUT_DIRECTORY=$2
  5. ENTITLEMENTS_FILE_PATH=$3
  6. APP_BUNDLE_DIRECTORY=$OUTPUT_DIRECTORY/Ryujinx.app
  7. rm -rf $APP_BUNDLE_DIRECTORY
  8. mkdir -p $APP_BUNDLE_DIRECTORY/Contents
  9. mkdir $APP_BUNDLE_DIRECTORY/Contents/Frameworks
  10. mkdir $APP_BUNDLE_DIRECTORY/Contents/MacOS
  11. mkdir $APP_BUNDLE_DIRECTORY/Contents/Resources
  12. # Copy executables first
  13. cp $PUBLISH_DIRECTORY/Ryujinx.Ava $APP_BUNDLE_DIRECTORY/Contents/MacOS/Ryujinx
  14. chmod u+x $APP_BUNDLE_DIRECTORY/Contents/MacOS/Ryujinx
  15. # Then all libraries
  16. cp $PUBLISH_DIRECTORY/*.dylib $APP_BUNDLE_DIRECTORY/Contents/Frameworks
  17. # Then resources
  18. cp Info.plist $APP_BUNDLE_DIRECTORY/Contents
  19. cp Ryujinx.icns $APP_BUNDLE_DIRECTORY/Contents/Resources/Ryujinx.icns
  20. cp -r $PUBLISH_DIRECTORY/THIRDPARTY.md $APP_BUNDLE_DIRECTORY/Contents/Resources
  21. echo -n "APPL????" > $APP_BUNDLE_DIRECTORY/Contents/PkgInfo
  22. # Fixup libraries and executable
  23. python3 bundle_fix_up.py $APP_BUNDLE_DIRECTORY MacOS/Ryujinx
  24. # Now sign it
  25. if ! [ -x "$(command -v codesign)" ];
  26. then
  27. if ! [ -x "$(command -v rcodesign)" ];
  28. then
  29. echo "Cannot find rcodesign on your system, please install rcodesign."
  30. exit 1
  31. fi
  32. # NOTE: Currently require https://github.com/indygreg/apple-platform-rs/pull/44 to work on other OSes.
  33. # cargo install --git "https://github.com/marysaka/apple-platform-rs" --branch "fix/adhoc-app-bundle" apple-codesign --bin "rcodesign"
  34. echo "Usign rcodesign for ad-hoc signing"
  35. rcodesign sign --entitlements-xml-path $ENTITLEMENTS_FILE_PATH $APP_BUNDLE_DIRECTORY
  36. else
  37. echo "Usign codesign for ad-hoc signing"
  38. codesign --entitlements $ENTITLEMENTS_FILE_PATH -f --deep -s - $APP_BUNDLE_DIRECTORY
  39. fi