更新与隐私
SpaceKnife 没有遥测,也不需要账户。它从网上取的东西只有 GitHub 上自己的发布列表,以及新版本的文件和它的校验值。
「设置 › 关于与更新 › 更新 › 自动检查更新」打开时(默认),SpaceKnife 读取它在 GitHub 上的发布列表:
- 启动约 1 分钟后,如果上一次成功的检查已经超过 24 小时;
- 之后运行期间每 24 小时一次;
- 检查失败(没有网络、GitHub 繁忙)后,6 小时后再试,而不是 24 小时。
每次检查都带上已有列表的标记(ETag),列表没变时几乎没有开销。打开这个设置,或者改「提示哪些版本」,会立即检查一次。检查记下的东西(上一次检查、最近的版本和它们的发布说明、关掉过卡片的版本、跳过的系列)保存在数据文件夹的 update.json 里。
命令面板或「关于与更新」页面里的「检查更新」随时可以检查,自动检查关掉了也能用。它的状态显示当前版本,或者查到的新版本。
提示哪些版本
Section titled “提示哪些版本”「设置 › 关于与更新 › 更新 › 提示哪些版本」:
| 选项 | 提示 |
|---|---|
| 「包括预览版」(默认) | 最新的版本,包括预览版 |
| 「只要正式版」 | 只提示不是预览版的版本 |
预览版是 GitHub 上标为预发布(Pre-release)的版本,或者版本号带预发布段的版本,比如 0.4.0-beta.1。草稿从不提示。选「只要正式版」时,要等出了更新的正式版才会提示。
新版本怎么提示
Section titled “新版本怎么提示”提示的力度取决于你落后多少。版本号逐段按整数比较,所以 0.3.10 比 0.3.9 新。
| 新版本不同的部分 | 例子 | 你会看到 |
|---|---|---|
| 最后一段,或者只差预发布段 | 0.3.1 → 0.3.2、0.4.0-beta.1 → 0.4.0 | 只有标题栏的徽章 |
| 中间一段(次版本) | 0.3.2 → 0.4.0 | 徽章,加上左上角的更新卡片 |
| 第一段(主版本) | 0.4.0 → 1.0.0 | 徽章,加上窗口内的更新对话框 |
- 徽章在标题栏右侧,写着「更新 0.4.0」。新版本下载时它逐渐填满并显示百分比,下载好以后写着「可以更新」。悬停显示「SpaceKnife 0.4.0 可用(你在用 0.3.2)」,下载好以后是「SpaceKnife 0.4.0 已下载并校验,点开后选择怎么更新」;点它在下方打开更新卡片,点别处或按 Esc 关闭。
- 更新卡片显示版本号、发布日期、你在用的版本、预览版的「预览版」标记、发布说明的开头和「查看完整说明」、适合你这种安装方式的文件和大小,以及「以后再说」「前往下载页」「一键下载」(下载中显示进度,下载好以后换成两个安装按钮,见安装)。次版本和主版本的卡片里,「以后再说」旁边还有「跳过 0.4.x」(主版本是「跳过 1.x」),见跳过一个系列。
- 主版本的对话框里是同一张卡片,标着「大版本更新」。它打开时,背后的快捷键不起作用。
关掉卡片或对话框(关闭按钮、「以后再说」或 Esc)后,这个版本不会再自动弹出,重启后也一样;徽章保留。点徽章,或在命令面板里运行「查看更新」,可以再打开卡片。
跳过一个系列
Section titled “跳过一个系列”不想再听到某个系列的版本时,在更新卡片里点「跳过 0.4.x」或「跳过 1.x」。左上角的卡片、大版本的对话框和徽章下面的卡片里都有这个按钮,就在「以后再说」旁边。修订版只显示徽章,所以没有这个按钮。
| 更新的级别 | 按钮 | 跳过的系列 |
|---|---|---|
| 次版本(0.3.2 → 0.4.0) | 「跳过 0.4.x」 | 所有 0.4.x:0.4.0、0.4.1、0.4.2… |
| 主版本(0.4.0 → 1.0.0) | 「跳过 1.x」 | 所有 1.x:1.0.0、1.1.0、1.2.3… |
跳过之后,这个系列的每个版本都不弹出卡片、不弹对话框、不显示徽章,也不自动下载。悬停按钮时显示「0.4.x 的版本不再弹出提示、不显示徽章,也不自动下载;可以在「关于与更新」里恢复」;点了之后提示「0.4.x 的版本不再提示;可以在「关于与更新」里恢复」。
- 别的系列的版本照常提示:跳过 0.4.x 之后的 0.5.0,跳过 1.x 之后的 2.0.0。
- 「关于与更新」页面仍然显示这个版本,并且能恢复提示:状态写「有新版本 0.4.2(已跳过 0.4.x 的提示)」,卡片里有一行「已跳过 0.4.x 的版本提示:不弹出、不显示徽章、不自动下载」和「恢复提示」。点「恢复提示」后,这个系列照常提示;「自动下载更新」打开时也会开始下载。
- 「检查更新」查到被跳过的版本时,只提示「发现新版本 0.4.2(已跳过 0.4.x 的提示,见「关于与更新」)」,不打开卡片。命令面板里的「查看更新」打开「关于与更新」页面。
- 跳过的系列记在
update.json里,重启后仍然有效,最多记 20 个。SpaceKnife 已经升到这个系列(或更新的版本)以后,下一次跳过或恢复时,它会从记录里去掉。
关掉卡片和跳过系列是两回事:关掉卡片(关闭按钮、「以后再说」、Esc)只对这一个版本有效,徽章还在,下一个版本照常提示;跳过管的是整个系列,连徽章也不显示。
「设置 › 关于与更新 › 更新 › 自动下载更新」打开时(默认),检查发现新版本后立即在后台下载它的文件:徽章和卡片显示进度,不会为此弹出任何东西。关掉这个设置时,在卡片里点「一键下载」。只下载检查会提示的版本(见提示哪些版本),而且只在发布里有适合你这种安装方式的文件时才下载。跳过的系列不自动下载;要的话在「关于与更新」的卡片里点「一键下载」。
文件存进数据文件夹里的 updates 文件夹,不放进你的「下载」文件夹:
| 你的安装方式 | 下载的文件 |
|---|---|
| Windows 安装包 | SpaceKnife-<版本>-Setup-x64.exe |
| Windows 便携版 | SpaceKnife-<版本>-win-x64-portable.zip |
| macOS | SpaceKnife-<版本>-mac-arm64.dmg 或 …-mac-x64.dmg,按你的 Mac |
| deb | spaceknife_<版本>_amd64.deb |
| rpm | spaceknife-<版本>.x86_64.rpm |
| AppImage | SpaceKnife-<版本>-x86_64.AppImage |
| Linux 便携版 | SpaceKnife-<版本>-linux-x64-portable.tar.gz |
下载完会校验文件:
- 把文件的 SHA-256 和同一个发布里公布的校验值(
SHA256SUMS*.txt)比较,一致时卡片显示「SHA-256 校验通过」。 - 不一致的文件立即删除:「下载的文件与发布的 SHA-256 校验值不符,已删除」。
- 发布里有校验文件却读不到时,不下载。
- 发布里没有这个文件的校验值时,文件保留,并标注「这个版本没有发布校验和,文件未经校验」。
updates文件夹里已经有校验值正确的同一个文件时,直接用它,不再重新下载。
自动下载失败(比如没有网络)时,下一次检查之后会再试,也可以点「重试」。SpaceKnife 对不上发布文件的安装方式(比如从源码运行),「一键下载」不可用,卡片提示「这种安装方式请到发布页下载」。
- 每次启动都会清掉
updates文件夹里不再需要的东西:没下完的文件,以及正在运行的版本和更旧版本的一切(装上它的那个文件;便携版还有被它替换下来的旧程序文件,以及换文件用的计划和日志)。下载好但还没安装的新版本会保留。 - 卸载 Windows 安装版时会删掉
updates文件夹,见卸载。
下载并校验好以后,卡片写着「选一种方式安装:只有你点了才会开始,扫描数据和设置都会保留」,下面是两个大按钮:
- 「无缝更新」:SpaceKnife 自己换上新版本,然后重新打开。
- 经典方式:交给安装程序、磁盘映像或安装包,SpaceKnife 退出;便携版和 AppImage 则是把下载的文件显示出来,由你自己替换。
每个按钮下面一行写着它会做什么。你的安装方式没有无缝的办法时,只有经典方式这一个按钮。
| 你的安装方式 | 无缝更新 | 经典方式 |
|---|---|---|
| Windows 安装包 | SpaceKnife 关闭,安装程序在后台静默运行(不显示安装向导)替换旧版本,然后 SpaceKnife 自动重新打开。为所有用户安装的,Windows 会请求一次管理员权限。 | 「运行安装程序」:SpaceKnife 退出并打开安装向导,按步骤装好新版本。安装程序就地升级旧版本。 |
| 便携版(Windows zip、Linux tar.gz) | SpaceKnife 关闭,由它自己换上新版本的程序文件(见下文),然后重新打开。data 文件夹原样保留。 |
「自己替换」:在文件夹中显示下载的压缩包,SpaceKnife 继续运行。退出 SpaceKnife 后把它解压覆盖旧文件,保留 data 文件夹。 |
| AppImage | SpaceKnife 关闭,新的 AppImage(已经设好可执行权限)替换旧文件,然后重新打开。 | 「自己替换」:在文件夹中显示新的 AppImage,SpaceKnife 继续运行。退出 SpaceKnife 后用它替换旧文件。 |
| macOS | 没有 | 「打开磁盘映像」:SpaceKnife 退出并打开磁盘映像。把 SpaceKnife 拖进「应用程序」替换旧版本,再放行一次。 |
| deb、rpm | 没有 | 「打开安装包」:SpaceKnife 退出,并用系统的软件安装器打开安装包。 |
不管用哪种方式,扫描数据和设置都会保留。「无缝更新」之后,窗口会提示一次「已更新到 SpaceKnife 0.4.0」(现在运行的版本)。
便携版的「无缝更新」:SpaceKnife 先把压缩包解到 updates 文件夹里,然后退出;换文件的是新版本自带的后端程序,不是脚本。它等 SpaceKnife 完全退出,把程序文件夹里除 data 以外的东西移到 updates/previous-<旧版本>(文件还被占用时最多再等 30 秒),把新文件移进来,再启动新版本。有文件替换不了时,旧文件放回原处,打开的仍是旧版本。新版本不完整时什么都不动,SpaceKnife 也不退出,只提示原因。每一步都记在 updates/update-<版本>.log 里。
点会关闭 SpaceKnife 的按钮时,如果还有扫描在进行,第一次点只会提示「还有扫描在进行,更新会中断它(已扫描的部分不会保存)」,按钮上改写「再点一次继续」;再点一次才继续。「自己替换」不关闭 SpaceKnife,所以不会这样问。
从不自己安装
Section titled “从不自己安装”SpaceKnife 从不自己安装更新,「无缝更新」和安装程序都一样:每次安装都从你在更新卡片里的一次点击开始,以后也不会加自动安装的选项。「自动下载更新」只负责下载和校验。
点了按钮以后,它也只会启动直接放在自己的 updates 文件夹里、并且按你这种安装方式的发布文件命名的文件。
「关于与更新」页面
Section titled “「关于与更新」页面”「设置 › 关于与更新」汇总了你的版本和更新的一切。命令面板里的「关于与更新」能打开它,「设置 › 常规」最下面的「关于」一行也能打开它;有新版本时,那一行也会写出来。
- 顶部:你的版本、这份 SpaceKnife 的安装方式和提示哪些版本;上一次检查的结果、检查的时间,以及下一次自动检查的时间。「检查更新」立即检查;「全部发布」打开 Releases 页面。有新版本时,它的更新卡片也显示在这里,并且一直留着。
- 跳过的系列:被跳过的系列的版本也显示在这里。状态写「有新版本 0.4.2(已跳过 0.4.x 的提示)」,卡片里有一行「已跳过 0.4.x 的版本提示:不弹出、不显示徽章、不自动下载」和「恢复提示」;点「恢复提示」,这个系列又照常提示。卡片里照样能下载和安装它。
- 更新:三项更新设置(检查、下载、提示哪些版本)。
- 组件版本:SpaceKnife、Electron、Chromium、Node.js、后端的 Python、协议的版本,以及你的系统。「复制版本信息」把它们一次复制下来,方便报告问题。
- 发布时间线:最近 30 个版本,新的在前,标着「当前」「新」(比你的新)和「预览版」。点一个版本,用界面语言阅读它的发布说明;最新的默认展开。「在 GitHub 上查看」打开它的发布页。时间线来自上一次检查,离线时也在;第一次检查之前是空的。
关闭更新检查
Section titled “关闭更新检查”关掉「设置 › 关于与更新 › 更新 › 自动检查更新」。自动下载也随之停止,之后除非你自己用「检查更新」或「一键下载」,SpaceKnife 不发出任何网络请求。之前检查到的版本仍可能显示徽章。新版本照常发布在 Releases 页面,各种手动升级的方法见安装与升级。
只是不想听到某个系列,用不着关掉检查:在卡片里点「跳过 0.4.x」(见跳过一个系列),其他版本照常提示。
SpaceKnife 不发送任何关于你、你的电脑或你的文件的信息:没有使用统计、没有崩溃报告、没有标识符、没有账户。扫描、快照、标签和设置都留在你的电脑上,位置见数据位置。
全部网络请求
Section titled “全部网络请求”全部发往 GitHub,而且只为了更新:
| 请求 | 什么时候 | 发送什么 |
|---|---|---|
发布列表,api.github.com/repos/DuskXi/SpaceKnife/releases |
自动检查,或「检查更新」 | 一个普通请求,带 User-Agent: SpaceKnife/<版本> 和已缓存列表的 ETag。没有令牌,没有 Cookie。 |
| 校验文件和发布文件,来自 GitHub | 「自动下载更新」打开时,检查发现新版本之后(跳过的系列除外:它们不会自己下载任何东西);或者你点「一键下载」时 | 同样的 User-Agent |
- 「前往下载页」「查看完整说明」「全部发布」和「在 GitHub 上查看」用你的浏览器打开 GitHub;SpaceKnife 本身不为它们请求任何东西。发布时间线显示的是上一次检查已经取到的说明。
- 请求遵循你的代理设置:常见的代理环境变量,Windows 和 macOS 上还有系统的代理设置。
- 和 GitHub 的连接用 HTTPS 证书验证。
- GitHub 对不带令牌的请求按地址限制次数。很多电脑共用一个出口地址时,检查可能暂时被拒(「GitHub 暂时限制了查询次数…」);SpaceKnife 稍后会再试。
- 命令行(
spaceknife-backend scan、run、snapshot)不发出任何网络请求。
留在你电脑上的
Section titled “留在你电脑上的”- 窗口和负责扫描的后端之间只用本机连接(回环地址,每次启动换一个随机令牌),其他电脑连不上。
- 日志文件和日志面板里有文件和文件夹的路径,比如无法读取的文件夹。
- 「复制诊断信息」(「设置 › 高级」)只复制到剪贴板。复制的内容包括设置文件和日志文件夹的路径,路径里通常有你的用户名;贴出去之前检查一下。
- 快照文件(
.sks)里有扫描到的所有项的名称、大小和时间。分享快照等于分享你的文件夹结构;导出的报告也一样。