sign_dmg.sh 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #!/bin/sh -x
  2. [ "$#" -lt 2 ] && echo "Usage: sign_dmg.sh <dmg> <identity>" && exit
  3. src_dmg="$1"
  4. tmp_dmg="writable_$1"
  5. signed_dmg="signed_$1"
  6. identity="$2"
  7. QT_FMWKS=`basename ${TMP_APP}/Contents/Frameworks`/Qt*
  8. QT_FMWK_VERSION="5"
  9. fix_frameworks() {
  10. TMP_APP=$1
  11. QT_FMWK_PATH=$2
  12. QT_FMWKS=$3/Qt*.framework
  13. echo "Patching Qt frameworks..."
  14. for FMWK in $QT_FMWKS; do
  15. FMWK_NAME=`basename -s .framework $FMWK`
  16. FMWK=`basename $FMWK`
  17. FMWK_PATH="${TMP_APP}/Contents/Frameworks/${FMWK}"
  18. mkdir -p "${FMWK_PATH}/Versions/${QT_FMWK_VERSION}/Resources/"
  19. cp -avf "${QT_FMWK_PATH}/${FMWK}/Contents/Info.plist" "${FMWK_PATH}/Versions/${QT_FMWK_VERSION}/Resources"
  20. (cd "${FMWK_PATH}" && ln -sf "Versions/${QT_FMWK_VERSION}/Resources" "Resources")
  21. perl -pi -e "s/${FMWK_NAME}_debug/${FMWK_NAME}/" "${FMWK_PATH}/Resources/Info.plist"
  22. done
  23. }
  24. mount="/Volumes/$(basename "$src_dmg"|sed 's,-\([0-9]\)\(.*\),,')"
  25. test -e "$tmp_dmg" && rm -rf "$tmp_dmg"
  26. hdiutil convert "$src_dmg" -format UDRW -o "$tmp_dmg"
  27. hdiutil attach "$tmp_dmg"
  28. pushd "$mount"
  29. fix_frameworks "$mount"/*.app `qmake -query QT_INSTALL_LIBS` "$mount"/*.app/Contents/Frameworks
  30. codesign -s "$identity" --deep "$mount"/*.app
  31. popd
  32. diskutil eject "$mount"
  33. test -e "$signed_dmg" && rm -rf "$signed_dmg"
  34. hdiutil convert "$tmp_dmg" -format UDBZ -o "$signed_dmg"