跳转到内容

更新与隐私

SpaceKnife 没有遥测,也不需要账户。它从网上取的东西只有 GitHub 上自己的发布列表,以及新版本的文件和它的校验值。

「设置 › 关于与更新 › 更新 › 自动检查更新」打开时(默认),SpaceKnife 读取它在 GitHub 上的发布列表:

  • 启动约 1 分钟后,如果上一次成功的检查已经超过 24 小时;
  • 之后运行期间每 24 小时一次;
  • 检查失败(没有网络、GitHub 繁忙)后,6 小时后再试,而不是 24 小时。

每次检查都带上已有列表的标记(ETag),列表没变时几乎没有开销。打开这个设置,或者改「提示哪些版本」,会立即检查一次。检查记下的东西(上一次检查、最近的版本和它们的发布说明、关掉过卡片的版本、跳过的系列)保存在数据文件夹的 update.json 里。

命令面板或「关于与更新」页面里的「检查更新」随时可以检查,自动检查关掉了也能用。它的状态显示当前版本,或者查到的新版本。

「设置 › 关于与更新 › 更新 › 提示哪些版本」:

选项 提示
「包括预览版」(默认) 最新的版本,包括预览版
「只要正式版」 只提示不是预览版的版本

预览版是 GitHub 上标为预发布(Pre-release)的版本,或者版本号带预发布段的版本,比如 0.4.0-beta.1。草稿从不提示。选「只要正式版」时,要等出了更新的正式版才会提示。

提示的力度取决于你落后多少。版本号逐段按整数比较,所以 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)后,这个版本不会再自动弹出,重启后也一样;徽章保留。点徽章,或在命令面板里运行「查看更新」,可以再打开卡片。

不想再听到某个系列的版本时,在更新卡片里点「跳过 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,所以不会这样问。

SpaceKnife 从不自己安装更新,「无缝更新」和安装程序都一样:每次安装都从你在更新卡片里的一次点击开始,以后也不会加自动安装的选项。「自动下载更新」只负责下载和校验。

点了按钮以后,它也只会启动直接放在自己的 updates 文件夹里、并且按你这种安装方式的发布文件命名的文件。

「设置 › 关于与更新」汇总了你的版本和更新的一切。命令面板里的「关于与更新」能打开它,「设置 › 常规」最下面的「关于」一行也能打开它;有新版本时,那一行也会写出来。

  • 顶部:你的版本、这份 SpaceKnife 的安装方式和提示哪些版本;上一次检查的结果、检查的时间,以及下一次自动检查的时间。「检查更新」立即检查;「全部发布」打开 Releases 页面。有新版本时,它的更新卡片也显示在这里,并且一直留着。
  • 跳过的系列:被跳过的系列的版本也显示在这里。状态写「有新版本 0.4.2(已跳过 0.4.x 的提示)」,卡片里有一行「已跳过 0.4.x 的版本提示:不弹出、不显示徽章、不自动下载」和「恢复提示」;点「恢复提示」,这个系列又照常提示。卡片里照样能下载和安装它。
  • 更新:三项更新设置(检查、下载、提示哪些版本)。
  • 组件版本:SpaceKnife、Electron、Chromium、Node.js、后端的 Python、协议的版本,以及你的系统。「复制版本信息」把它们一次复制下来,方便报告问题。
  • 发布时间线:最近 30 个版本,新的在前,标着「当前」「新」(比你的新)和「预览版」。点一个版本,用界面语言阅读它的发布说明;最新的默认展开。「在 GitHub 上查看」打开它的发布页。时间线来自上一次检查,离线时也在;第一次检查之前是空的。

关掉「设置 › 关于与更新 › 更新 › 自动检查更新」。自动下载也随之停止,之后除非你自己用「检查更新」或「一键下载」,SpaceKnife 不发出任何网络请求。之前检查到的版本仍可能显示徽章。新版本照常发布在 Releases 页面,各种手动升级的方法见安装与升级。

只是不想听到某个系列,用不着关掉检查:在卡片里点「跳过 0.4.x」(见跳过一个系列),其他版本照常提示。

SpaceKnife 不发送任何关于你、你的电脑或你的文件的信息:没有使用统计、没有崩溃报告、没有标识符、没有账户。扫描、快照、标签和设置都留在你的电脑上,位置见数据位置。

全部发往 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)不发出任何网络请求。
  • 窗口和负责扫描的后端之间只用本机连接(回环地址,每次启动换一个随机令牌),其他电脑连不上。
  • 日志文件和日志面板里有文件和文件夹的路径,比如无法读取的文件夹。
  • 「复制诊断信息」(「设置 › 高级」)只复制到剪贴板。复制的内容包括设置文件和日志文件夹的路径,路径里通常有你的用户名;贴出去之前检查一下。
  • 快照文件(.sks)里有扫描到的所有项的名称、大小和时间。分享快照等于分享你的文件夹结构;导出的报告也一样。