Files
flameshot/packaging/macos/create_dmg.sh
borgmanJeremy 7e3f2901f3 Fix macos signing and clean up CI (#4020)
* Fix macos signing and clean up CI

* Get version on mac similar to windows
2025-06-23 20:04:25 -05:00

97 lines
2.6 KiB
Bash
Executable File

#!/bin/bash
# Script to create and optionally sign a DMG file
# Usage: create_dmg.sh <app_path> <dmg_path> <app_sign_identity> <dmg_sign_identity>
# If signing identities are empty, DMG will be created unsigned
APP_PATH="$1"
DMG_PATH="$2"
APP_SIGN_IDENTITY="$3"
DMG_SIGN_IDENTITY="$4"
if [ $# -ne 4 ]; then
echo "Usage: create_dmg.sh <app_path> <dmg_path> <app_sign_identity> <dmg_sign_identity>"
echo "Note: Leave signing identities empty to create unsigned DMG"
exit 1
fi
echo "Creating DMG from: $APP_PATH"
echo "Output DMG: $DMG_PATH"
rm -f "$DMG_PATH"
TEMP_DIR=$(mktemp -d)
echo "Using temp directory: $TEMP_DIR"
cp -R "$APP_PATH" "$TEMP_DIR/"
# Create Applications symlink
ln -s /Applications "$TEMP_DIR/Applications"
# Calculate size needed for DMG (in KB)
SIZE=$(du -sk "$TEMP_DIR" | cut -f1)
SIZE=$((SIZE + 1000)) # Add some padding
echo "Creating DMG with size: ${SIZE}k"
# Create DMG
hdiutil create -srcfolder "$TEMP_DIR" \
-volname "Flameshot" \
-fs HFS+ \
-fsargs "-c c=64,a=16,e=16" \
-format UDZO \
-size ${SIZE}k \
"$DMG_PATH"
if [ $? -ne 0 ]; then
echo "Failed to create DMG"
rm -rf "$TEMP_DIR"
exit 1
fi
echo "DMG created successfully"
# Sign the DMG (either with identity or ad hoc)
if [ -n "$DMG_SIGN_IDENTITY" ] && [ "$DMG_SIGN_IDENTITY" != "" ]; then
echo "Signing DMG with identity: $DMG_SIGN_IDENTITY"
codesign --force --sign "$DMG_SIGN_IDENTITY" --timestamp "$DMG_PATH"
if [ $? -eq 0 ]; then
echo "DMG signed with Developer ID"
# Verify signature
echo "Verifying DMG signature..."
codesign --verify --verbose "$DMG_PATH"
else
echo "Failed to sign DMG with identity"
rm -rf "$TEMP_DIR"
exit 1
fi
else
echo "Signing DMG with ad hoc signature (no identity required)"
codesign --force --sign - "$DMG_PATH"
if [ $? -eq 0 ]; then
echo "DMG signed with ad hoc signature"
else
echo "Failed to ad hoc sign DMG"
rm -rf "$TEMP_DIR"
exit 1
fi
fi
# Clean up
rm -rf "$TEMP_DIR"
echo "DMG creation complete: $DMG_PATH"
if [ -z "$DMG_SIGN_IDENTITY" ] || [ "$DMG_SIGN_IDENTITY" = "" ]; then
echo ""
echo "NOTE: This DMG uses ad hoc signing (no Developer ID required)."
echo "Users will see a security warning but can still run the app by:"
echo "1. Right-clicking the app and selecting 'Open'"
echo "2. Or going to System Preferences > Security & Privacy and clicking 'Open Anyway'"
echo "3. The warning only appears on first launch"
echo ""
echo "The app and DMG are properly signed for Apple Silicon requirements."
fi