You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

M1 Mac下Bash脚本配置应用麦克风权限失败,求助解决方案

问题分析与解决:M1 Mac下Packages打包.pkg丢失麦克风权限

核心原因

  1. 安装上下文差异:
    DMG安装是用户手动拖拽操作,属于用户主动交互触发,系统认可应用启动的合法性,权限请求可正常弹出;而Packages默认以root权限安装到系统目录(如/Applications),应用首次启动关联root上下文,TCC权限框架会拒绝非用户主动触发的权限请求,甚至不会在系统偏好设置中显示条目。
  2. 签名/属性异常:
    新增音频文件和第三方工具后,若未重新完整签名应用包,或pkg安装时自动移除了com.apple.quarantine扩展属性,会导致TCC判定应用合法性存疑,拒绝权限注册。

解决步骤

1. 修正安装权限与上下文

  • 优先用户级安装:在Packages的构建设置中,将安装目标改为~/Applications(用户目录下的应用文件夹),避免root权限带来的上下文问题。
  • 系统目录安装的适配:若必须安装到/Applications,在Packages的「Scripts」标签页添加post-install脚本,将应用所有者改为当前登录用户:
    # 获取当前实际登录用户(避免root身份)
    CURRENT_USER=$(stat -f "%Su" /dev/console)
    # 修改应用所有者为当前用户
    chown -R $CURRENT_USER:$CURRENT_USER /Applications/YourApp.app
    

2. 确保应用签名完整

新增资源后必须重新签名整个应用包:

  • 通过Xcode重新归档导出签名后的.app,再导入Packages;
  • 或用codesign命令手动签名(需替换为你的开发者ID):
    codesign --deep --force --sign "Developer ID Application: Your Name (XXX)" /Applications/YourApp.app
    
    注意:第三方工具必须包含在签名范围内,否则TCC会判定应用被篡改。

3. 触发用户级权限注册

不要用tccutil直接修改(M1的SIP会限制root操作TCC数据库),而是通过用户身份触发应用启动,让系统弹出权限请求:
在post-install脚本中添加:

CURRENT_USER=$(stat -f "%Su" /dev/console)
# 以当前用户身份后台启动应用,2秒后关闭,触发权限注册
su - $CURRENT_USER -c "open /Applications/YourApp.app & sleep 2; killall YourApp"

4. 调整pkg安装设置

在Packages的「Project」配置中:

  • 取消勾选「Disable user interaction during installation」;
  • 选择「Standard Install」作为安装类型,保留用户交互环节,确保系统认可安装合法性。

验证流程

  1. 重新构建pkg并安装到M1 Mac;
  2. 手动启动应用,检查是否弹出麦克风权限请求;
  3. 进入「系统偏好设置 > 安全性与隐私 > 隐私 > 麦克风」,确认应用已出现在列表中。

内容的提问来源于stack exchange,提问作者Alec Gordon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 23:39:08