create_app_bundle.sh 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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 updater.sh $APP_BUNDLE_DIRECTORY/Contents/Resources/updater.sh
  21. cp -r $PUBLISH_DIRECTORY/THIRDPARTY.md $APP_BUNDLE_DIRECTORY/Contents/Resources
  22. echo -n "APPL????" > $APP_BUNDLE_DIRECTORY/Contents/PkgInfo
  23. # Fixup libraries and executable
  24. python3 bundle_fix_up.py $APP_BUNDLE_DIRECTORY MacOS/Ryujinx
  25. # Now sign it
  26. if ! [ -x "$(command -v codesign)" ];
  27. then
  28. if ! [ -x "$(command -v rcodesign)" ];
  29. then
  30. echo "Cannot find rcodesign on your system, please install rcodesign."
  31. exit 1
  32. fi
  33. # NOTE: Currently require https://github.com/indygreg/apple-platform-rs/pull/44 to work on other OSes.
  34. # cargo install --git "https://github.com/marysaka/apple-platform-rs" --branch "fix/adhoc-app-bundle" apple-codesign --bin "rcodesign"
  35. echo "Usign rcodesign for ad-hoc signing"
  36. rcodesign sign --entitlements-xml-path $ENTITLEMENTS_FILE_PATH $APP_BUNDLE_DIRECTORY
  37. else
  38. echo "Usign codesign for ad-hoc signing"
  39. codesign --entitlements $ENTITLEMENTS_FILE_PATH -f --deep -s - $APP_BUNDLE_DIRECTORY
  40. fi