diff --git a/apps/desktop/scripts/macos/pkg_arm64.sh b/apps/desktop/scripts/macos/pkg_arm64.sh index 5a397e6b..04f9e104 100755 --- a/apps/desktop/scripts/macos/pkg_arm64.sh +++ b/apps/desktop/scripts/macos/pkg_arm64.sh @@ -132,10 +132,6 @@ find "${APP_BUNDLE}" -name '._*' -delete echo ".app created successfully." -mkdir -p build_pkg_scripts -cp "${SCRIPT_DIR}/tcc_postinstall.sh" build_pkg_scripts/postinstall -chmod +x build_pkg_scripts/postinstall - mkdir -p build_pkg_resources cat > build_pkg_resources/welcome.html < @@ -165,7 +161,6 @@ cat > build_pkg_resources/welcome.html <欢迎安装 ${INSTALLER_TITLE}

CrossDesk 将安装到“应用程序”文件夹。

首次启动时,CrossDesk 会引导你在系统设置中授予必要权限,包括辅助功能、录屏与系统录音等。

-

为避免旧版本授权残留造成状态误判,安装后可能需要重新授权。

安装完成后,请从“应用程序”文件夹启动 CrossDesk。

@@ -177,7 +172,6 @@ pkgbuild \ --version "${APP_VERSION}" \ --install-location "/Applications" \ --component "${APP_BUNDLE}" \ - --scripts build_pkg_scripts \ build_pkg_temp/${APP_NAME}-component.pkg cat > build_pkg_temp/Distribution < build_pkg_resources/welcome.html < @@ -165,7 +161,6 @@ cat > build_pkg_resources/welcome.html <欢迎安装 ${INSTALLER_TITLE}

CrossDesk 将安装到“应用程序”文件夹。

首次启动时,CrossDesk 会引导你在系统设置中授予必要权限,包括辅助功能、录屏与系统录音等。

-

为避免旧版本授权残留造成状态误判,安装后可能需要重新授权。

安装完成后,请从“应用程序”文件夹启动 CrossDesk。

@@ -177,7 +172,6 @@ pkgbuild \ --version "${APP_VERSION}" \ --install-location "/Applications" \ --component "${APP_BUNDLE}" \ - --scripts build_pkg_scripts \ build_pkg_temp/${APP_NAME}-component.pkg cat > build_pkg_temp/Distribution </dev/null 2>&1 - else - /usr/bin/tccutil reset "$service" "$bundle_id" >/dev/null 2>&1 - fi -} - -reset_bundle_tcc() { - local user_name="$1" - local user_id="$2" - local bundle_id - local service - - for bundle_id in "${BUNDLE_IDENTIFIERS[@]}"; do - if run_tccutil "$user_name" "$user_id" "All" "$bundle_id"; then - continue - fi - - for service in "${TCC_SERVICES[@]}"; do - run_tccutil "$user_name" "$user_id" "$service" "$bundle_id" || true - done - done -} - -cleanup_tcc_db() { - local db_path="$1" - - if [ ! -f "$db_path" ] || ! command -v sqlite3 >/dev/null 2>&1; then - return - fi - - /usr/bin/sqlite3 "$db_path" <<'SQL' >/dev/null 2>&1 || true -DELETE FROM access -WHERE service IN ( - 'kTCCServiceScreenCapture', - 'kTCCServiceAccessibility', - 'kTCCServiceMicrophone', - 'kTCCServiceAudioCapture' -) -AND ( - client IN ( - 'cn.crossdesk.app', - 'cn.crossdesk.CrossDesk', - 'com.crossdesk.app', - 'com.crossdesk.CrossDesk', - 'com.kunkundi.crossdesk', - 'com.kunkundi.CrossDesk' - ) - OR lower(client) LIKE '%crossdesk%' -); -SQL -} - -cleanup_user_tcc_db() { - local user_name="$1" - local home_dir - - home_dir=$(/usr/bin/dscl . -read "/Users/${user_name}" NFSHomeDirectory 2>/dev/null | - /usr/bin/awk '{print $2}') - if [ -z "$home_dir" ]; then - return - fi - - cleanup_tcc_db "${home_dir}/Library/Application Support/com.apple.TCC/TCC.db" -} - -CONSOLE_USER=$(/usr/bin/stat -f "%Su" /dev/console 2>/dev/null || true) -if [ -n "$CONSOLE_USER" ] && - [ "$CONSOLE_USER" != "root" ] && - [ "$CONSOLE_USER" != "loginwindow" ]; then - CONSOLE_UID=$(/usr/bin/id -u "$CONSOLE_USER" 2>/dev/null || true) - reset_bundle_tcc "$CONSOLE_USER" "$CONSOLE_UID" - cleanup_user_tcc_db "$CONSOLE_USER" -fi - -# Also clear any system/root-scoped decisions as a harmless fallback. -reset_bundle_tcc "" "" -cleanup_tcc_db "/Library/Application Support/com.apple.TCC/TCC.db" - -exit 0