把网站变成桌面应用,该选哪种办法
想把网站变成 Mac、Windows 或 Linux 上的桌面应用,先试浏览器自带的网页应用功能,一分钟就能装好,也不花钱。想要能随时编辑、复用和导出的设置,再换 Pake 桌面版;需要可重复的构建、Linux 版本或者打包本地文件时,用 Pake CLI。
几种办法的共同点
网站变成桌面应用以后,它仍然是那个网站。应用本身只是一个原生窗口,加载同一个网址,再用系统自带的网页引擎画出来,macOS 上是 Safari 的 WebKit(WKWebView),Windows 上是 Microsoft Edge WebView2,Linux 上是 WebKitGTK。Pake 底层的 Tauri 用的正是这几个引擎,所以 Pake 做出来的应用体积很小,同一个页面在不同系统上也可能略有差别(见 Tauri 的 webview 版本说明)。
由此带来三件事。网站自己不能离线的话,应用也需要联网,网站的功能、限制和登录规则会原样带过来,引擎由系统负责更新,Mac 上跟着系统升级,Windows 上由会自动更新的 WebView2 运行时负责(见微软的分发说明)。
几种办法真正的差别在于,窗口归谁管,设置存在哪里,装好之后还能改多少。
办法一:用已有的浏览器
macOS Sonoma 14 及以上的 Safari 有文件菜单里的添加到程序坞,Apple 说明这样得到的网页应用不会和 Safari 共用历史记录、Cookie、网站数据和设置(见 Apple 的说明)。Edge 可以从 Settings and more › More tools › Apps › Install this site as an app 安装网站,Chrome 对应的是 Install page as app...(见微软和 Google 的说明)。具体步骤写在 Mac 教程和 Windows 教程里。
很多时候这就是正确答案,有独立窗口,有程序坞或任务栏图标,也不用多装任何东西。代价是可控的地方少,不能指定初始窗口大小,不能隐藏标题栏,不能加自己的 CSS,也没法把整套设置当成文件搬到另一台电脑。从 Edge 装的应用还和 Edge 绑在一起,微软写明它们使用 Edge 的引擎、设置和扩展,Edge 卸载后就不能用了(见微软的说明)。
办法二:Pake 桌面版
Pake 桌面版支持 Mac 和 Windows,把上面的事情变成一张表单。粘贴网址或者从精选里选一个网站,看一下名称和图标,选好窗口大小,点创建应用,整个过程不需要 Node.js、Rust、Xcode 或 Visual Studio(见安装要求)。做好的应用会出现在我的应用里,点编辑再点保存修改就会原地重装,登录状态也保留(见管理应用)。
真正拉开差距的是浏览器应用没有的那些选项,窗口大小、Mac 上的隐藏标题栏、始终置顶、常驻后台、无痕浏览,以及高级里自己的 CSS 和 JavaScript。每个选项的含义在创建应用里有完整的表,这里不重复。接着还有两件事分别写成了教程,用添加另一个账号同时用同一个网站的两个账号(见多账号教程),以及用 .pake 文件在别的电脑上重建同一套设置(见换电脑迁移)。
每创建一个应用会占用一个免费名额或者许可证,打开、更新和移除应用不算,Pake 删掉以后做好的应用也照常运行,规则见许可证说明。
办法三:Pake CLI
Pake CLI 免费开源,支持 macOS、Windows 和 Linux,需要 Node.js 20.9 或更高、Rust 1.85 或更高,以及各平台的编译工具(见快速上手)。一条命令就够了。
pnpm install -g pake-cli
pake https://excalidraw.com --name Excalidraw
安装包会生成在当前目录,macOS 是 .dmg,Windows 是 .msi,Debian 和 Ubuntu 上是 .deb 加 AppImage。第一次构建要下载并编译依赖,会等好几分钟。想打包本地 HTML 或者构建好的静态站点,只能用 CLI,想用 --config 文件或 --json 输出做脚本化构建也一样。完全不想装本地工具链的话,可以让 GitHub Actions 在线构建在云端的机器上编译。
快速选择
| 你的情况 | 从这里开始 |
|---|---|
| 只有一个网站,默认窗口就够 | Safari 的添加到程序坞,或者从 Edge、Chrome 安装 |
| 有好几个网站,想调整尺寸、图标或行为 | Pake 桌面版 |
| 同一个网站要登录第二个账号 | Pake 桌面版的添加另一个账号 |
| Linux | Pake CLI |
| 静态项目,或者要可重复的脚本化构建 | Pake CLI |
| 不想装工具链又要 Windows 或 Mac 的包 | GitHub Actions |
怎么确认做好了
测试要用你真正在用的页面,不要拿宣传首页。创建应用,登录,点一个会跳出本站的链接,网站有下载功能的话下载一个文件,然后退出再重新打开。用 Pake CLI 做的应用默认会在下次启动时回到上次停留的页面,打包时的网址仍然是主页(见命令行参数)。
容易出问题的地方
最常见的是登录。Google 和一些服务商会拦截内嵌网页视图里的登录,任何封装方式都改变不了,哪些办法仍然可用见登录排查。网站提示浏览器不受支持的话,设置方法在 User Agent 教程里。依赖浏览器扩展的网站,在封装应用里没有那个扩展。桌面布局本来就局促的网站,封装后也一样局促,封装不会替网站重新设计页面。
这些都不在意的时候,选更简单的工具。浏览器的网页应用已经够用,就不必再装别的软件。
常见问题
桌面应用可以离线用吗
只有网站本身支持离线才行。应用每次都通过网络加载网站,没有离线支持的网站断网后会报错。用 CLI 打包的本地文件,页面本身不需要联网,但里面引用的远程脚本和数据仍然需要。
封装的应用和官方桌面客户端一样吗
不一样。封装显示的是网页版,厂商如果有原生客户端,可能带通知、离线存储或系统集成,是网站没有的,封装之前先看看厂商有没有提供。
应用用哪个引擎渲染
系统自带的,macOS 是 WebKit,Windows 是 WebView2,Linux 是 WebKitGTK,所以同一个页面在各系统上的表现可能略有不同。
以后可以删掉吗
可以。浏览器网页应用在浏览器里移除,Safari 的则是把应用从个人文件夹里的应用程序文件夹拖进废纸篓,Pake 的应用在我的应用里移除,Windows 上也可以在设置 › 应用里移除,登录状态怎么处理见管理应用。
