From 141010332badd471e82f0da79610bf6649a91e3a Mon Sep 17 00:00:00 2001 From: Jason Date: Tue, 24 Mar 2026 10:33:18 +0800 Subject: [PATCH] feat(dmg): use create-dmg for styled macOS DMG installer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tauri's built-in DMG styling relies on AppleScript/Finder access which silently fails on CI (tauri-apps/tauri#1731). Switch to create-dmg tool which works on GitHub Actions macOS runners. - Replace Tauri DMG with create-dmg: background image, icon positions, app-drop-link, codesign, hide-extension - Regenerate background image at 2x Retina resolution (1320x800) - Revert tauri.conf.json dmg config (ineffective on CI) - Reorder steps: Prepare → Notarize DMG → Verify - Notarize and Verify now use release-assets/ path for DMG --- .github/workflows/release.yml | 196 +++++++++++++---------------- src-tauri/icons/dmg-background.png | Bin 3897 -> 9343 bytes src-tauri/tauri.conf.json | 17 +-- 3 files changed, 89 insertions(+), 124 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5ee469e39..2bf503403 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -221,60 +221,6 @@ jobs: sleep "$sleep_seconds" done - - name: Notarize macOS DMG - if: runner.os == 'macOS' - shell: bash - timeout-minutes: 30 - env: - APPLE_ID: ${{ secrets.APPLE_ID }} - APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} - APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} - run: | - set -euo pipefail - - DMG_PATH="" - for path in \ - "src-tauri/target/universal-apple-darwin/release/bundle/dmg" \ - "src-tauri/target/aarch64-apple-darwin/release/bundle/dmg" \ - "src-tauri/target/x86_64-apple-darwin/release/bundle/dmg" \ - "src-tauri/target/release/bundle/dmg" \ - "src-tauri/target/universal-apple-darwin/release/bundle/macos" \ - "src-tauri/target/release/bundle/macos"; do - if [ -d "$path" ] && [ -z "$DMG_PATH" ]; then - DMG_PATH=$(find "$path" -maxdepth 1 -name "*.dmg" -type f | head -1 || true) - fi - done - - if [ -z "$DMG_PATH" ]; then - echo "❌ No .dmg found to notarize" >&2 - exit 1 - fi - - echo "=== Verifying DMG integrity before notarization: $DMG_PATH ===" - hdiutil verify "$DMG_PATH" - - max_attempts=3 - for attempt in $(seq 1 "$max_attempts"); do - echo "=== DMG notarization attempt ${attempt}/${max_attempts} ===" - if xcrun notarytool submit "$DMG_PATH" \ - --apple-id "$APPLE_ID" \ - --password "$APPLE_PASSWORD" \ - --team-id "$APPLE_TEAM_ID" \ - --wait; then - echo "✅ DMG notarization succeeded" - exit 0 - fi - - if [ "$attempt" -eq "$max_attempts" ]; then - echo "❌ DMG notarization failed after ${max_attempts} attempts" >&2 - exit 1 - fi - - sleep_seconds=$((attempt * 60)) - echo "⚠️ DMG notarization failed, retrying in ${sleep_seconds}s..." - sleep "$sleep_seconds" - done - - name: Build Tauri App (Windows) if: runner.os == 'Windows' run: pnpm tauri build @@ -291,47 +237,31 @@ jobs: mkdir -p release-assets VERSION="${GITHUB_REF_NAME}" # e.g., v3.5.0 - # Locate bundle directory - BUNDLE_DIR="" - TAR_GZ=""; APP_PATH=""; DMG_PATH="" + # Locate bundle artifacts + TAR_GZ=""; APP_PATH="" for path in \ "src-tauri/target/universal-apple-darwin/release/bundle/macos" \ "src-tauri/target/aarch64-apple-darwin/release/bundle/macos" \ "src-tauri/target/x86_64-apple-darwin/release/bundle/macos" \ "src-tauri/target/release/bundle/macos"; do if [ -d "$path" ]; then - BUNDLE_DIR="$path" [ -z "$TAR_GZ" ] && TAR_GZ=$(find "$path" -maxdepth 1 -name "*.tar.gz" -type f | head -1 || true) [ -z "$APP_PATH" ] && APP_PATH=$(find "$path" -maxdepth 1 -name "*.app" -type d | head -1 || true) - [ -z "$DMG_PATH" ] && DMG_PATH=$(find "$path" -maxdepth 1 -name "*.dmg" -type f | head -1 || true) - fi - done - - # Also search dmg directory (Tauri may put DMGs there) - for path in \ - "src-tauri/target/universal-apple-darwin/release/bundle/dmg" \ - "src-tauri/target/aarch64-apple-darwin/release/bundle/dmg" \ - "src-tauri/target/x86_64-apple-darwin/release/bundle/dmg" \ - "src-tauri/target/release/bundle/dmg"; do - if [ -d "$path" ] && [ -z "$DMG_PATH" ]; then - DMG_PATH=$(find "$path" -maxdepth 1 -name "*.dmg" -type f | head -1 || true) fi done if [ -z "$TAR_GZ" ]; then - echo "No macOS .tar.gz updater artifact found" >&2 + echo "❌ No macOS .tar.gz updater artifact found" >&2 + exit 1 + fi + if [ -z "$APP_PATH" ]; then + echo "❌ No .app found" >&2 exit 1 fi - # Staple notarization ticket (hard-fail — must succeed before release) - if [ -n "$APP_PATH" ]; then - xcrun stapler staple "$APP_PATH" - echo "✅ .app stapled" - fi - if [ -n "$DMG_PATH" ]; then - xcrun stapler staple "$DMG_PATH" - echo "✅ .dmg stapled" - fi + # Staple notarization ticket to .app (Tauri already notarized it) + xcrun stapler staple "$APP_PATH" + echo "✅ .app stapled" # 1) Collect .tar.gz (updater artifact) NEW_TAR_GZ="CC-Switch-${VERSION}-macOS.tar.gz" @@ -339,30 +269,91 @@ jobs: [ -f "$TAR_GZ.sig" ] && cp "$TAR_GZ.sig" "release-assets/$NEW_TAR_GZ.sig" || echo ".sig for macOS not found yet" echo "macOS updater artifact copied: $NEW_TAR_GZ" - # 2) Collect .app as zip (absolute paths, no cd) - if [ -n "$APP_PATH" ]; then - NEW_ZIP="CC-Switch-${VERSION}-macOS.zip" - ditto -c -k --sequesterRsrc --keepParent "$APP_PATH" "release-assets/$NEW_ZIP" - echo "macOS zip ready: $NEW_ZIP" - else - echo "No .app found to zip (optional)" >&2 + # 2) Collect .app as zip + NEW_ZIP="CC-Switch-${VERSION}-macOS.zip" + ditto -c -k --sequesterRsrc --keepParent "$APP_PATH" "release-assets/$NEW_ZIP" + echo "macOS zip ready: $NEW_ZIP" + + # 3) Create styled DMG with create-dmg (Tauri's built-in DMG styling doesn't work on CI) + if [ -z "${APPLE_SIGNING_IDENTITY:-}" ]; then + echo "❌ APPLE_SIGNING_IDENTITY is missing before DMG creation" >&2 + exit 1 fi - # 3) Collect .dmg - if [ -n "$DMG_PATH" ]; then - NEW_DMG="CC-Switch-${VERSION}-macOS.dmg" - cp "$DMG_PATH" "release-assets/$NEW_DMG" - echo "macOS DMG ready: $NEW_DMG" - else - echo "No .dmg found (optional)" >&2 + HOMEBREW_NO_AUTO_UPDATE=1 brew install create-dmg + NEW_DMG="CC-Switch-${VERSION}-macOS.dmg" + DMG_STAGE_DIR="$RUNNER_TEMP/dmg-stage" + rm -rf "$DMG_STAGE_DIR" + mkdir -p "$DMG_STAGE_DIR" + ditto "$APP_PATH" "$DMG_STAGE_DIR/CC Switch.app" + + create-dmg \ + --volname "CC Switch" \ + --background "src-tauri/icons/dmg-background.png" \ + --window-size 660 400 \ + --window-pos 200 120 \ + --icon-size 80 \ + --icon "CC Switch.app" 180 220 \ + --hide-extension "CC Switch.app" \ + --app-drop-link 480 220 \ + --codesign "$APPLE_SIGNING_IDENTITY" \ + --no-internet-enable \ + "release-assets/$NEW_DMG" \ + "$DMG_STAGE_DIR" + + rm -rf "$DMG_STAGE_DIR" + echo "✅ Styled DMG created: $NEW_DMG" + + - name: Notarize macOS DMG + if: runner.os == 'macOS' + shell: bash + timeout-minutes: 30 + env: + APPLE_ID: ${{ secrets.APPLE_ID }} + APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} + APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} + run: | + set -euo pipefail + + DMG_PATH=$(find release-assets -maxdepth 1 -name "*.dmg" -type f | head -1 || true) + if [ -z "$DMG_PATH" ]; then + echo "❌ No .dmg found in release-assets/ to notarize" >&2 + exit 1 fi + echo "=== Notarizing DMG: $DMG_PATH ===" + max_attempts=3 + for attempt in $(seq 1 "$max_attempts"); do + echo "=== DMG notarization attempt ${attempt}/${max_attempts} ===" + if xcrun notarytool submit "$DMG_PATH" \ + --apple-id "$APPLE_ID" \ + --password "$APPLE_PASSWORD" \ + --team-id "$APPLE_TEAM_ID" \ + --wait; then + echo "✅ DMG notarization succeeded" + xcrun stapler staple "$DMG_PATH" + echo "✅ DMG stapled" + break + fi + + if [ "$attempt" -eq "$max_attempts" ]; then + echo "❌ DMG notarization failed after ${max_attempts} attempts" >&2 + exit 1 + fi + + sleep_seconds=$((attempt * 60)) + echo "⚠️ DMG notarization failed, retrying in ${sleep_seconds}s..." + sleep "$sleep_seconds" + done + - name: Verify macOS code signing and notarization if: runner.os == 'macOS' shell: bash run: | set -euo pipefail - APP_PATH=""; DMG_PATH="" + + # Verify .app (from Tauri bundle) + APP_PATH="" for path in \ "src-tauri/target/universal-apple-darwin/release/bundle/macos" \ "src-tauri/target/aarch64-apple-darwin/release/bundle/macos" \ @@ -372,19 +363,7 @@ jobs: [ -z "$APP_PATH" ] && APP_PATH=$(find "$path" -maxdepth 1 -name "*.app" -type d | head -1 || true) fi done - for path in \ - "src-tauri/target/universal-apple-darwin/release/bundle/dmg" \ - "src-tauri/target/aarch64-apple-darwin/release/bundle/dmg" \ - "src-tauri/target/x86_64-apple-darwin/release/bundle/dmg" \ - "src-tauri/target/release/bundle/dmg" \ - "src-tauri/target/universal-apple-darwin/release/bundle/macos" \ - "src-tauri/target/release/bundle/macos"; do - if [ -d "$path" ] && [ -z "$DMG_PATH" ]; then - DMG_PATH=$(find "$path" -maxdepth 1 -name "*.dmg" -type f | head -1 || true) - fi - done - # Verify .app if [ -z "$APP_PATH" ]; then echo "❌ No .app found for verification" >&2 exit 1 @@ -397,7 +376,8 @@ jobs: xcrun stapler validate "$APP_PATH" echo "✅ .app stapler validation passed" - # Verify .dmg + # Verify .dmg (from release-assets/, created by create-dmg + notarized) + DMG_PATH=$(find release-assets -maxdepth 1 -name "*.dmg" -type f | head -1 || true) if [ -n "$DMG_PATH" ]; then echo "=== Verifying .dmg: $DMG_PATH ===" codesign --verify --verbose=2 "$DMG_PATH" diff --git a/src-tauri/icons/dmg-background.png b/src-tauri/icons/dmg-background.png index ccb3b19c93bfc918790b5e7161c3ec54798a21a7..773961d61cd2c70678173dec3cd975cc05a57756 100644 GIT binary patch literal 9343 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 literal 3897 zcmd5<3s6&68oo-!fzlELO>uPAOz7R6$L7< z@Gz!og%uGj?*Jhp1w@h{AYcd~yeWidATRRT+uiNVZo92I)9&nI6mj~j!w=<4d4zyH2kHgdgg4m(g+n?8RD-JySf+-JZtS0QOr53u2`&i4{*?6PdgF-d_G!LPYM2B zA4vTW1H6B(K{XFzY5O8OMV#SvwaHW_su{4))l1%oH>C1mmuD};I}=(vdu(0fRw|( zJGMU^wZJAPB%P)Xd;|PKwEuLu!k<-$v3iLbQO4UbV~u^70;g5=ih41RV?J)FH=(6V zOl~W`4)L)$8dYGps-Esizv}~9DIXeWemeT}@?D;#`-B$57@XBuRi80bq|IH2SQ>rY zdU_{lMr~;M?!W{ity9}V3R{$|W_E2%=qEE&=q|4R!k(v>PYcw~Sf;uoH`csT@Qf)f z{QhFKp`LOmdOB^jZ}%D;rN-EojFJ-^jhW;O9RbrNeXcO?8S@aO--{8^l*%X+Ui6JLrn0CIi*^Mdn=FLl@SjfH;Q0s zEw>Wu?Cb`zGBSjs^+g^oc!-r{q!5b2@hOLuI}9D;r^a~Nv-vjNYN6Rh?E?e}MNcz1 z{*w7F*Q*NDfWeR(SH$>MKg!tS1`TNNwkq_D^BPca?C7HTVl=B};MEDbkc5MbP?axR zjk8>oQ2}Ui>s6vGLAFoNzZ^y249A6M?{>f~Ju9VL9^~O3KBS%=>w9W3Sb-eq%jJ#h zSJGXao#jhTMpGUm(ci`JTGS9^uC48W{_^OPdlgv0&W?@_ZvzZXSXXQ6T{APu9ZgpD z(S@Xz|fr z*}F@F=#(hO$$*mx-#mh3Dintk%Xv*kKSmgLhZ2d^{76L1P=^*Q+d#I#X+s%ypCghi z=%M{d`g-O;_R3e933dWLMf#n|0zsgm+@^f~R6bqh03itkRgHQ3Shrn^cf;(QE-B^h zs(4XXS=o_9@d7V)xkDvaSc~1B;8iUa>gwv%?1c();!?vTsfWI@e(%UO&M?dC^#Fz< zWu|V~maLGpWq1jVjg5_xS9;6xOJ-5=32kIPF1ew!vXUU^<*@1k{Qc$gnH<)gFe3v4 z24;D2k-xZ@G{ZKv!%)$@(yfk8jTJS~skd(3A{$+9#&YLp3F6p@Me{`0VG_q)8rxBc zmA93i61^Pr;jl%fl!S{ix?9xxa|oG?Ff=5i3>`OKPjVFItq8pi3ZPp`qJ6jvXVYh_mza7eFB0-Q8i?r{?LgWy09F zIKS@snRUU~$uGV*z;uPzCZoOxjFv6(`?iF+Prk?#?#m=3UJ`IK37p0RW?6cA`gAvm z>@4LG)vJoHu zDSo;~Y7TOFjI>|6s`kVYDfN9>WlD(;WT%?mNmyTCi;TP} z4lB}D-%@W3L87EO>*K5K2O03~ktZgY%+TQAC$zk=4d8fW76Ctg1`1NFA$Cwk@YS>R+#PK;ZIC`*~)g59b6vly1_|Rkg zY$c(1vibmRF3WaJ=bC=rP%|~~W=2L_T-@?#Ev`L%x^`cFmdYPg9XbF9hhqq;2XIkx zepkrRDq}A%tyvbrUZE(wXeXQ2Lro)3lE0~`35i`^3H4z;)msB%y|j*G`RlpW1hnPI7&&mYC*TpWuBv}ltgRva8OWDC75yf155-N z0s3fZqv`fh=Z_#F@OXA^sdaKKJ^+Co?Y+-yma(={k1L}#F7CfwoorWvdvJDIOn9Jk ztr$9Q`U!P>ahPg~yMOOqGgv7nJDg1AmQiOXU*zYP)bkSP_wLC9a3jdt^W#g1M3jV! zF?x;VT~Q;@U%9<(E{kSYJphM}vZee&*l=x3Pu|)x%GQyk2FSl z1)zsG7#hUNs_G)U@39zDB!_o0C>dRD*)BO}GkB^g9XV4cOL71cxvTI>Yq%)PH%cv0 zA*4rg>hN;elZrf%Xw8UFvrL_(G|wMRF(5HdUxh^5Hb5%13` I4hN_H9YHeVzW@LL diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index d7b911b58..1551b39fc 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -50,22 +50,7 @@ } }, "macOS": { - "minimumSystemVersion": "12.0", - "dmg": { - "background": "icons/dmg-background.png", - "windowSize": { - "width": 660, - "height": 400 - }, - "appPosition": { - "x": 180, - "y": 220 - }, - "applicationFolderPosition": { - "x": 480, - "y": 220 - } - } + "minimumSystemVersion": "12.0" } }, "plugins": {