【297】50周 和无关功能说拜拜:Mac 迅雷瘦身记

stevapple 责编: Hum
08月14日

和无关功能说拜拜:Mac 迅雷瘦身记

| 本文为付费栏目文章,您已订阅,可阅读全文 |
迅雷是个大家很熟悉的工具了,尽管吐槽的人不少,但相信大家也都是口嫌体直,边骂边用。
其实 macOS 版迅雷在界面上,相比于 Windows 的客户端来说,已经很克制了,但有些功能仍然对用户造成了干扰。而这篇文章,就是做到让你随意摘取迅雷中你不需要的功能的一篇教程。
过程可能有点长,但回报是值得的。我们是在用一次性操作,换来长期的精简版迅雷体验。

手动安装并精简迅雷

在这一节中,我们将还原现场,一步步剖析迅雷的行为和内部结构。

安装迅雷:事情就是从这个时候开始变得不对劲的

由于下载时可能写入任何目录,迅雷无法遵循沙盒权限,因此没有上架 Mac App Store。打开官网上下载的 DMG 磁盘映像,同意长到没人有耐心看的服务协议,拖动迅雷 App 到 Application目录替身上。伴随着清脆的「叮」声,迅雷已经成功地安装在了你的电脑上。

迅雷安装界面
如果这个时候就急急忙忙打开迅雷,便会发现迎面而来的是显眼的迅雷精选。更悲剧的或许是,所有的视频文件打开方式会被清一色替换为迅雷 App ——还是熟悉的名字、熟悉的配方。

震惊!下载工具竟首页显示电影推荐

还一片清净:去除迅雷影音 App 捆绑

打开「应用程序」目录,你会发现迅雷影音 App 并没有被列出——这是迅雷利用 bundle 格式进行捆绑安装的成果。选中迅雷 App,在辅助菜单中点击「显示包内容」进入其内部,便会在 Contents > Bundles 目录下找到罪魁祸首迅雷影音 App。将整个目录删除,就可以请走这位不速之客了。

揪出隐藏在深处的 XLPlayer.app

深入剖析:还有哪些文件可以精简

接下来是时候处理并没有什么用的首页迅雷商店了。在迅雷 App 包目录下,找到 Contents > PlugIns 目录,里面的插件数目之多、命名之随意令人叹惋。所有插件的详情已经在下表中列出:
建议删除的插件包括:
  • advertising(广告)
  • featuredpage(主页)
  • feedback(反馈)
  • iOSThunder(手机迅雷)
  • myvip(会员中心)
  • softmanager(软件管家)
  • viprenew(会员开通)
  • viptips(会员提示)
  • xlbrowser(内置浏览器)
  • xlplayer(迅雷影音)
针对不同的需求,可以酌情处理以下插件:
  • 需要使用迅雷快鸟进行宽带提速的,请保留 bbassistant 插件,不需要的可以删除;
  • 需要使用迅雷离线空间的,请保留 lixianspace 插件,不需要的可以删除;
  • 需要使用会员权限的,请保留 viptask 插件,不需要的可以删除;
  • 需要登陆迅雷账户的,请保留 userlogin 插件,不需要的可以删除;
  • 需要使用内置的字幕下载功能的,请保留 subtitle 插件,不需要的可以删除;
  • 需要搭配浏览器使用的,请保留 browserhelper 插件,不需要的可以删除;
  • 下载宝(或玩客云)用户请保留 xiazaibao 插件,不需要的可以删除。
以下插件请勿随意删除,否则可能对 app 正常工作产生较大影响:
  • applications 插件:提供除了下载之外的所有迅雷功能的主入口;
  • details 插件:提供任务详情页面;
  • liveupdate 插件:提供在线更新服务(后文将会用到);
  • searchtask 插件:提供任务搜索功能;
  • settings 插件:提供偏好设置面板。
删除时直接将不需要的功能拖入废纸篓,完成后重新打开迅雷就能享受干净的迅雷体验了。如果删除了 featuredpage 插件,打开迅雷后默认会进入空白页,不过点击任意选项卡就能进入对应界面了。

精简后一片空白的迅雷主页
得益于迅雷的高度模块化(以及 bundle 格式的结构),删除这些文件并不会对 app 正常工作产生较大干扰。除了以上列举的两处之外,还有如下文件可以精简:
  • 如果不需要浏览器插件,可以删除 Contents > BrowsersPlugins 目录;
  • 除非需要迅雷应用商店,否则删除 Contents > Library > LaunchServices > com.xunlei.thunderstore.Agent 文件;
  • 如果不需要开机自启动迅雷,可以删除 Contents > Library > LoginItems 目录。

高亮显示推荐删除的文件

初探「自动操作」:用简单流程完成精简

手动精简的成功充分体现了 bundle 格式的健壮性和模块化特点,但繁琐的流程仍没有发挥 macOS 强大的自动化技术。在接下来的文章中,我们将使用 Automator,通过工作流程实现安装后自动精简迅雷
为了即时清除不必要的迅雷组件,我们必须采用「文件夹操作」。「文件夹操作」可以监控指定文件夹中添加的文件并传递给自动化流程,我们的首要任务则是找到迅雷安装时产生新文件的特定目录
在这里我们需要使用 brew-cask 来安装和更新迅雷了。因为只有使用它来安装或更新迅雷时,由于其默认采用卸载后重新安装的模式,Application 目录才可以触发并将迅雷 App 反馈给文件夹操作。

制作实现自动精简的「文件夹操作」

打开 Automator,在顶部菜单选择「文件 > 新建」,并且选择「文件夹操作」。在工作区顶部「文件夹操作接收添加到这个位置的文件和文件夹」后的下拉菜单中选择「其他…」,并且在弹出的菜单中选择 Application 目录(迅雷的安装目录,默认是 /Applications )。

新建一个「文件夹操作」工作流
安装未经修改的迅雷,并且在其辅助菜单中点击「显示包内容」后打开 Contents 目录。
在「自动操作」资源库中「文件和文件夹」一类里找到「获得指定的访达项目」拖进工作区,这是 Automator 中添加操作步骤的基本方法。随后,在下方的「选项」折叠菜单中勾选「忽略此操作的输入」以避免误删新安装的应用。
根据上一节,将需要精简的文件或文件夹从「访达」拖拽进「获得指定的访达项目」列表里,这样就可以实现自动选择这些文件。从资源库中拖拽「将访达项目移到废纸篓」到工作流末尾,自动删除功能添加完毕。

自动删除功能添加完毕

安装服务:感受「文件夹操作」的强大

在顶部菜单选择「文件 > 保存」,并且指定流程名称。
在「访达」的「操作」菜单中选择「服务 > 文件夹操作设置…」,验证「文件夹操作」添加是否成功。

「文件夹操作」正确配置示意
因为我们现在在用 Homebrew 装迅雷,所以可以在终端里用 brew cask reinstall thunder 这条命令来查看自动化精简的效果。

继续探索:实现从安装到精简的自动化

经过上面的精简,我们暂时得到了一个干净的迅雷。但是你可能发现,迅雷版本升级后,精简组件的文件夹操作没有被执行,被删除的组件又都回来了
这一节中,我们就来实现升级后自动精简迅雷组件的效果。
文件夹操作没有被执行,是精简失效的原因。一般来说,我们会用传统的 DMG 映像方式更新迅雷,但由于只是用新文件替换了老文件,之前制作的那份文件夹操作将不会被执行。由我也尝试过检测迅雷内部已经被精简过的目录,由于它们属于被复制的应用程序内部结构,同样不会触发文件夹操作
迅雷 App 内部文件夹不能作为触发条件,不过我们还可以找到一个只有更新迅雷时会有新项目产生的外部目录。这时,一个想法映入我的脑海:能不能找到迅雷更新器的缓存目录呢?在查看迅雷更新产生的磁盘映像后,我发现迅雷更新的缓存目录并不是随机生成的。它位于 ~/Library/Application Support/Thunder/upgrade~ 代表当前用户目录,在 macOS 下一般是 /Users/{你的用户名}),下载的磁盘映像文件名为 thunder_{版本号}.dmg。我们接下来将运用这些完成对迅雷内置更新器自动化的设置。
找对了触发条件后,自动精简的过程就可以分解为 3 步:
  1. 提示用户,退出迅雷
  2. 挂载镜像,完成安装
  3. 精简迅雷,删除垃圾
我们首先新建一个「文件夹操作」。

提示用户,退出迅雷

我们先使用「请求确认」,提示用户执行更新需要退出迅雷。如果用户选择了「取消」,则工作流程被终止。可以点击「自动操作」图标将其切换为警告⚠️样式。
然后使用「过滤“访达”项目」筛选出我们需要的安装包,可以按照图中配置。
接下来,我们需要用「设置变量的值」来记住这个文件,以便安装结束后将它删除。变量名字自拟,这里取名为 路径
最后,使用「退出应用程序」退出可能正在运行的迅雷。在下拉菜单中选中迅雷 App。如果不勾选「要求存储更改」的话,迅雷即使正在下载项目也将被强制退出,勾选后则会有弹窗确认。

询问用户是否更新,并退出迅雷

挂载镜像,完成安装

在上一阶段的工作流程中,除了筛选之外的步骤都没有改变当前变量的值,进入这一阶段时工作流程中传递的变量应该是 DMG 格式的迅雷安装包。
我们使用「装载磁盘映像」将其挂载,同时会输出挂载点目录的位置。这里需要设置另一个变量来记住挂载点,以便完成自动卸载,演示中取名为 磁盘
使用「获得文件夹内容」来获取迅雷安装盘中的文件,并且通过「过滤“访达”项目」找到其中的迅雷应用程序本体。迅雷的文件名是 Thunder.app(在系统中显示为中文名是利用了 bundle 格式的特性),因此我们直接用 名称是 Thunder.app 规则进行过滤即可。
使用「拷贝访达项目」用待安装的迅雷替换现有版本,这步中一定要勾选「替换现有文件」,并且在下拉菜单中选择「应用程序」目录。
接下来,我们需要使用「获取变量的值」获取之前存储的挂载点,即 磁盘 变量。这里需要在下方的「选项」折叠菜单中勾选「忽略此操作的输入」以避免之前传递的变量对产生的干扰。
最后用「推出磁盘」将磁盘映像卸载。

用「自动操作」模拟迅雷安装过程

精简迅雷,删除垃圾

我们接下来沿用上一节的精简思路,用「获得指定的访达项目」获取需要删除的捆绑或插件。
用「获取变量的值」将 路径 中存储的安装包位置添加到当前传递的文件队列中,随后「将访达项目移到废纸篓」完成删除。
再次使用「请求确认」,询问用户是否需要打开迅雷。如果用户取消,则下一步不会被执行。
添加「打开应用程序」操作,在下拉菜单中选取迅雷 App 即可。

精简迅雷,删除安装包

设置文件夹监视

至此,整个工作流程已经顺利结束,接下来要将这个文件夹操作添加到缓存目录上。
使用「访达」中的「前往文件夹」功能,在输入框中输入 ~/Library/Application Support/Thunder/upgrade 并点击「前往」。
upgrade 文件夹拖动到工作区顶部「文件夹操作接收添加到这个位置的文件和文件夹」后的下拉菜单上。
保存工作流程,并且按照上一节的步骤验证「文件夹操作」已经生效。
在迅雷更新下载完毕后,「文件夹操作」将会按照我们的设定弹窗提醒用户,并在用户确认后自动完成从安装到精简的整个流程。

小结

「自动操作」是 macOS 最为强大的独家原生功能之一。它以用户友好的可视化界面实现了复杂流程的自动化,而本文所述只是它的应用场景之一。
许多国产 Mac 软件相较于其 Windows 版本而言,在保留了大部分核心功能的同时确实对用户干扰较轻,但在了解 bundle 格式的基础上依旧可以进行一定程度的精简或增强。利用「文件夹操作」,我们就可以保存这一操作过程,并且在更新后自动调用,让日后的体验更加省心。

上一期
第 50 周预告:意志力是消耗品,也是战利品
下一期
如何更方便地启用 macOS 菜单栏功能
 
精选评论(7) 我的评论
  • 沿明
    08月18日
  • IceHe
    这个很棒
    08月18日
  • Aboboo
    为笔者的极客精神点赞,但是这还是治标不治本,迅雷本身就是一个烂透了的公司,它的产品和服务也是烂透了。
    08月18日
  • nigary
    不看这篇文章都忘了还有迅雷这个软件了。现在我的下载需求分两种,浏览器直接下载和百度盘资源下载。因为网速快了,下大文件的断点续传需求消失了,视频我基本上只看流。迅雷就这么从我的生活中消失了,以前为了迅雷账号等级能升到三军元帅,24小时挂机,冲vip,发疯程度不亚于qq。
    08月18日
  • BravoCiao
    ~/Library/Application Support/Thunder/upgrade
    到了最后一步,在访达里没有找到这个路径,是因为我没用brew-cask 安装迅雷吗?还是我安装的是最新迅雷、从没更新过所以没有这个文件夹?
    08月17日
    • 少数派编辑部
      是因为没有使用内置的更新器更新过,如果没有的话手动新建即可。

      —— 作者
      08月17日 1
  • 沿明
    已经操作过一次,很强大哦,非常感谢!!
    08月17日
  • Bestony
    好文章,很有帮助!
    08月17日