尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Tinycast 安装与升级完全指南:Homebrew、发行频道、自更新机制与彻底卸载

Tinycast 安装与升级完全指南:Homebrew、发行频道、自更新机制与彻底卸载 Tinycast 安装与升级完全指南Homebrew、发行频道、自更新机制与彻底卸载【免费下载链接】tinycastTinycast — a tiny, fully native macOS launcher, hotkeys, and clipboard history.项目地址: https://gitcode.com/GitHub_Trending/ti/tinycastTinycast 是一个原生 macOS 启动器launcher、全局热键与剪贴板历史工具其安装与升级路径设计得相当独特通过 Homebrew 的第三方 tap 分发、按 Apple silicon / Intel 提供两种架构产物、应用自己管理版本更新Homebrew 主动让路并内置了完整的卸载清理能力。本文以官方安装文档为核心结合仓库内更新与卸载功能的源码实现讲清从首次安装到彻底卸载的每一步原理与实操命令。系统要求与安装方式概览Tinycast 需要macOS 26 或更高版本同时支持 Apple silicon 与 Intel 机型。官方提供了两条安装路线适用于不同场景路线适用场景特点Homebrew cask绝大多数用户自动清除 macOS 隔离标记quarantine flag安装后可直接打开直接下载Releases 页面想手动控制、无 Homebrew 的环境应用为自签名需手动清除一次隔离标记无论走哪条路线最终得到的都是同一个Tinycast.app后续更新与卸载行为完全一致——因为应用本身管理自己的版本生命周期。通过 Homebrew 安装Homebrew 是最省事的路径它会替你清除 macOS 的 quarantine 标记因此应用首次打开不会出现“无法验证开发者”的警告。信任第三方 tapTinycast 通过第三方 tapabue-ammar/tinycast分发。Homebrew 出于安全考虑默认不会安装来自未信任第三方 tap 的软件因此需要先执行一次信任操作brew trust --tap abue-ammar/tinycast brew install --cask abue-ammar/tinycast/tinycastbrew trust只需运行一次之后即可正常安装。Apple silicon 与 Intel 的差异macOS 26 Tahoe 是苹果最后一个支持 Intel 的 macOS 大版本因此稳定版构建以两种形态发布瘦身版thin build仅包含 Apple siliconarm64切片体积更小通用版universal build同时包含 arm64 与 x86_64 切片。上面的brew install命令安装的是Apple silicon 专用的小体积构建。如果在 Intel Mac 上执行Homebrew 会拒绝安装。Intel 机器需要改用 universal caskbrew install --cask abue-ammar/tinycast/tinycast-universal你不需要自己判断该装哪个tinycastcask 会在 Intel 上拒绝安装且两个 cask 最终都安装相同的Tinycast.app。universal 构建同样能在 Apple silicon 上运行只是下载体积更大。发行频道ChannelsTinycast 的每个频道都是一个独立的 App拥有各自独立的设置、权限与登录项。它们可以并排运行因此你可以保留稳定版的同时试用 Beta 版。频道Cask应用名称StableApple silicontinycastTinycast.appStableUniversaltinycast-universalTinycast.appBetatinycastbetaTinycast Beta.app安装 Beta 频道brew install --cask abue-ammar/tinycast/tinycastbeta需要注意两点Beta 与 Stable 不共享设置。要把现有配置迁移过去请使用 Backup 功能两个 Stable cask 是同一个 App因此同一时间只能安装其中一个Beta 与 Stable 则互不干扰。从源码看频道隔离由 bundle id 决定见 ReleaseChannel.swiftcom.tinycast.app→.stable只接受正式 releasecom.tinycast.app.beta→.beta只接受 GitHub prerelease其他任意 bundle id →.development本地开发构建不进行任何自更新。直接下载安装绕过 Homebrew构建产物也发布在项目的 Releases 页面。但 Tinycast 目前是自签名的尚无付费的 Apple Developer ID 背书因此手动下载的副本会被 macOS 加上 quarantine 标记首次启动时 macOS 会拦截并拒绝打开。把 App 拖入 Applications 文件夹后执行一次清除命令即可xattr -dr com.apple.quarantine /Applications/Tinycast.app使用 Homebrew 安装的用户不需要执行此步骤——Homebrew 会替你清除隔离标记。这也是自更新机制的隐含前提Tinycast 自己下载的压缩包不会被系统加上 quarantine 标记macOS 只对沙盒下载器或显式声明LSFileQuarantineEnabled的应用设置该标记Tinycast 两者都不是因此每次自更新后都无需再次手动放行。详见 docs/features/updates.md。更新机制Tinycast 自己管自己日常更新流程Tinycast 会自动更新自己。具体行为如下每天自动检查一次其所属频道的最新 release有新版本时弹出一个原生窗口展示更新说明changelog一键即可完成下载、安装并自动重启你也可以随时手动检查通过启动器launcher、菜单栏中的Check for Updates或Settings → About。因为应用自己管理版本brew upgrade会故意跳过Tinycast——两个 cask 都声明了auto_updates true这是 Homebrew 对“应用自管版本”的官方标记因此 Tinycast 永远不会被 Homebrew 报告为过期、不会重复下载自更新后的副本也不会被 Homebrew 误删或回滚而brew install、brew uninstall、brew list等操作照常工作。这是预期行为不是 bug。详见 docs/features/updates.md。签名与辅助功能授权的连续性每个 release 都用同一张证书签名。这一点很关键macOS 的辅助功能Accessibility授权与签名绑定统一签名保证了应用在多次更新后你此前授予的辅助功能权限不会失效。源码层面的更新原理更新功能位于Tinycast/Features/Updates/几个核心机制值得展开1. 每日检查与重试节奏UpdateCheckStore.swift默认间隔 24 小时从上次成功检查时间lastCheckedAt起算因此重启不会重复请求 GitHub检查失败后缩短到 2 小时重试保证离线启动的机器在联网后能尽快看到新版本首次检查延迟 30 秒避开登录时段的资源高峰请求携带User-Agent头GitHub API 会直接拒绝无 UA 的请求。检查状态落在单个原子 JSON 文件~/Library/Caches/bundle-id/update-check.json中保存lastCheckedAt、当前最新 release 以及用户主动忽略dismiss的版本。“忽略”只作用于该版本被忽略的版本不再打扰你但更新的版本仍会提示而手动“Check for Updates”会忽略该记录总是展示比当前运行版本更新的内容。2. 版本解析与频道判定AppVersion.swift、ReleaseChannel.swift版本号按 semver 优先级解析MAJOR.MINOR.PATCH与MAJOR.MINOR.PATCH-beta.Nprerelease 恒低于其对应的正式 releasebeta.10高于beta.9。解析失败形状不对的 tag的 release 永远不会被当作更新提供tag 与prerelease标记不一致的 release 会被视为发布错误而跳过。Intel 构建不是独立频道——它共享稳定版的 tag、版本、bundle id 与签名仅由架构字段选择对应资产。3. 安装流程UpdateInstaller.swift无论最初是从 Homebrew 还是手动安装自更新只有一条路径将 zip 流式下载到~/Library/Caches/bundle-id/Updates/带真实字节进度Cancel 可真正中止传输用ditto -x -k解压到 staging 目录取其中唯一的.app按频道命名Beta 下是Tinycast Beta.app原生检查 quarantine 标记若存在则清除仍存在则拒绝安装校验 bundle id、版本号并通过 BundleSignature.swift 验证代码签名确属本应用按固定的 Developer ID 要求或与运行中应用逐字节一致的叶子证书用FileManager.replaceItemAt原子替换——staging 目录与/Applications在同一卷上这是原子替换的前提/Applications不可写时直接报告而非绕行没有特权辅助进程提供“重启”按钮由分离的 waiter 进程在本进程退出后重新打开应用。整个流程不触碰~/Library/Preferences、~/Library/Caches与 Application Support因此更新不会影响任何设置、剪贴板条目、笔记或代码片段。4. 发布侧配套发布流程由.github/workflows/release.yml生成两种资产供手动下载/Homebrew 的 DMG 与供更新器使用的 zip并用ditto -c -k --keepParent --sequesterRsrc制作 zip——只有这种打包方式能保留可验证的代码签名普通zip会丢失符号链接、破坏签名封签导致后续每次更新都被签名校验拒绝。发布说明由 Scripts/release-notes.sh 组装更新窗口只展示!-- tinycast:install --标记以上的 changelog 正文。详见 docs/release.md。卸载从 App 到残留文件Homebrew 安装的卸载brew uninstall --cask abue-ammar/tinycast/tinycast清理应用产生的文件Homebrew 卸载只会移除 App 本身。要清理 Tinycast 创建的文件删除其 Application Support 与 Caches 目录rm -rf ~/Library/Application\ Support/com.tinycast.app rm -rf ~/Library/Caches/com.tinycast.app特别提醒~/Library/Application Support/com.tinycast.app里存放着你的代码片段snippets、笔记notes、快捷链接quicklinks、剪贴板历史与 AI 对话记录删除前务必先拷贝出想保留的内容。Beta 频道使用的目录是com.tinycast.app.beta。钥匙串Keychain中的凭据为 AI 或 MCP 服务器保存的 API keys、以及扩展extension的登录态存放在你的登录钥匙串中不在 Application Support 目录里。如需一并清除请在“钥匙串访问”Keychain Access中手动删除。内置卸载器一键清理任意应用除了卸载 Tinycast 自身应用还内置了一个通用卸载器用于移除“其他应用及其遗留文件”——缓存、偏好设置、容器、保存状态、登录代理等。入口在启动器的 Actions 菜单⌘K →Uninstall Application对任意.application条目生效。该功能的关键设计原则详见 docs/features/uninstall.md 与Tinycast/Features/Uninstall/源码只移入废纸篓从不永久删除FileManager.trashItem是该功能唯一的删除调用误判的成本只是拖回废纸篓而不是数据丢失自动探测全磁盘访问权限Full Disk Access但从不主动申请探测是静默无提示的该功能不申请任何权限、不提升特权归属判定基于真实测量而非假设哪些目录允许 TCC 移动是逐一探测试出来的拒绝卸载 Tinycast 自身通过 bundle id 与 bundle URL 双重比对运行中的身份连 Dev 频道也会拒绝自己运行测试./Scripts/run-tests.sh uninstall-test纯 Foundation 测试零文件系统访问全部环境事实以参数注入。常见疑问速查问题答案Intel Mac 装不上tinycastcask正常Intel 需使用tinycast-universalbrew upgrade不更新 Tinycast预期行为应用自管版本auto_updates true手动下载后打不开执行xattr -dr com.apple.quarantine /Applications/Tinycast.app更新后辅助功能授权失效不会所有 release 使用同一张证书签名想同时用稳定版和 Beta两频道是独立 App可并排安装配置迁移用 Backup彻底卸载要删哪些目录Application Support 与 Cachesbundle id 前缀com.tinycast.app外加钥匙串中的 API keys掌握上述流程后无论是 Apple silicon 还是 Intel、稳定版还是 Beta你都能在几分钟内完成安装、验证自更新链路并在需要时把系统恢复到“从未安装过”的状态。【免费下载链接】tinycastTinycast — a tiny, fully native macOS launcher, hotkeys, and clipboard history.项目地址: https://gitcode.com/GitHub_Trending/ti/tinycast创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表