Ariver
2026-06-04 cb0259e3176109d437be4ff941016fe7eb37022c
privatevoice.src/scripts/build-macappstore-pkg-macos.sh
@@ -15,7 +15,7 @@
#     Example: "3rd Party Mac Developer Installer: Example Team (TEAMID)"
#
#   PRIVATEVOICE_APPSTORE_PROVISIONING_PROFILE
#     Path to the Mac App Store provisioning profile for com.privatevoice.input.
#     Path to the Mac App Store provisioning profile for com.shanghai3168.privatevoicedictation.
#
# Optional environment:
#   PRIVATEVOICE_SIGNING_KEYCHAIN
@@ -47,6 +47,7 @@
VERSION="$(defaults read "$INFO_PLIST" CFBundleShortVersionString 2>/dev/null || echo "2.1.0")"
BUILD_ID="$(defaults read "$INFO_PLIST" CFBundleVersion 2>/dev/null || date +%Y%m%d.%H%M)"
BUNDLE_ID="$(defaults read "$INFO_PLIST" CFBundleIdentifier 2>/dev/null || echo "")"
step() {
  echo ""
@@ -129,6 +130,7 @@
[[ -n "$APPSTORE_PROVISIONING_PROFILE" ]] || fail "PRIVATEVOICE_APPSTORE_PROVISIONING_PROFILE is required"
[[ -f "$APPSTORE_PROVISIONING_PROFILE" ]] || fail "Provisioning profile not found: $APPSTORE_PROVISIONING_PROFILE"
[[ -f "$INFO_PLIST" ]] || fail "Info.plist not found at $INFO_PLIST"
[[ -n "$BUNDLE_ID" ]] || fail "CFBundleIdentifier is missing from $INFO_PLIST"
[[ -f "$ENTITLEMENTS" ]] || fail "App Store entitlements not found at $ENTITLEMENTS"
[[ -f "$PROJECT_DIR/build/darwin/icon.icns" ]] || fail "icon.icns not found"
[[ -d "$SHERPA_LIB_DIR" ]] || fail "sherpa-onnx dylibs not found at $SHERPA_LIB_DIR"
@@ -142,6 +144,15 @@
command -v productbuild >/dev/null || fail "productbuild not found"
command -v pkgutil >/dev/null || fail "pkgutil not found"
PROFILE_PLIST="$(mktemp)"
trap 'rm -f "$PROFILE_PLIST"' EXIT
security cms -D -i "$APPSTORE_PROVISIONING_PROFILE" >"$PROFILE_PLIST" ||
  fail "Unable to decode provisioning profile: $APPSTORE_PROVISIONING_PROFILE"
PROFILE_APP_IDENTIFIER="$(/usr/libexec/PlistBuddy -c "Print :Entitlements:com.apple.application-identifier" "$PROFILE_PLIST" 2>/dev/null || true)"
PROFILE_BUNDLE_ID="${PROFILE_APP_IDENTIFIER#*.}"
[[ "$PROFILE_BUNDLE_ID" == "$BUNDLE_ID" ]] ||
  fail "Provisioning profile bundle ID mismatch: profile has $PROFILE_BUNDLE_ID, app has $BUNDLE_ID"
step "Cleaning old Mac App Store build"
rm -rf "$BUILD_DIR"
mkdir -p "$BUILD_DIR"