42 lines
1.1 KiB
Bash
42 lines
1.1 KiB
Bash
#!/bin/bash
|
|
# Installable UDZO disk image: TargetPrint.app + /Applications shortcut.
|
|
# System tools only (hdiutil). No create-dmg / npm.
|
|
# Usage: create_dmg.sh <TargetPrint.app> <output.dmg> [volume name]
|
|
set -euo pipefail
|
|
|
|
APP="${1:?path to TargetPrint.app}"
|
|
DMG="${2:?output .dmg path}"
|
|
VOLNAME="${3:-TargetPrint}"
|
|
|
|
test -d "$APP"
|
|
APP_NAME="$(basename "$APP")"
|
|
STAGE="$(mktemp -d /tmp/targetprint-dmg-XXXXXX)"
|
|
cleanup() { rm -rf "$STAGE"; }
|
|
trap cleanup EXIT
|
|
|
|
mkdir -p "$STAGE"
|
|
cp -R "$APP" "$STAGE/$APP_NAME"
|
|
ln -s /Applications "$STAGE/Applications"
|
|
|
|
# Optional background for Finder (ignored by hdiutil srcfolder; kept next to
|
|
# the app so a later Finder-layout pass can use it).
|
|
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
if [[ -f "$ROOT/Resources/dmg/background.png" ]]; then
|
|
mkdir -p "$STAGE/.background"
|
|
cp "$ROOT/Resources/dmg/background.png" "$STAGE/.background/background.png"
|
|
fi
|
|
|
|
rm -f "$DMG"
|
|
mkdir -p "$(dirname "$DMG")"
|
|
|
|
echo "==> Creating $DMG"
|
|
hdiutil create \
|
|
-volname "$VOLNAME" \
|
|
-srcfolder "$STAGE" \
|
|
-ov \
|
|
-format UDZO \
|
|
-imagekey zlib-level=9 \
|
|
"$DMG"
|
|
|
|
echo "==> $(du -h "$DMG" | awk '{print $1}') $DMG"
|