TiddlyInstall

TiddlyInstall 用单个 HTML 文件构建 Windows、Linux 和 macOS 安装程序,无需服务器或打包器。

中文
复制

01 这是什么

直接从 GitHub 仓库构建 Windows、Linux 和 macOS 的真实安装程序。

不冻结代码,也没有会出问题的打包器。我们把项目真正的运行时和依赖装进一个独立文件夹,再基于它们安装你的项目。Windows 安装程序用 NSIS 构建,Linux 和 macOS 上则是一个 POSIX shell 脚本,不需要安装任何框架。

制作安装程序 编写应用

输出.exe · .run · .zip 语言13 种,外加你自己的运行时 最旧支持目标Windows XP · glibc 2.17 Linux · macOS 10.9 本页一个 HTML 文件,无服务器,无网络

02 与众不同之处

一个文件,就像 TiddlyWiki

TiddlyInstall 是单个 HTML 文件。本页承载了安装程序、运行时目录,以及制作、编辑和签名它们的全部代码。

完全不需要服务器 你可以在这里写代码,也可以用包,或者用固定到某个 commit 的 GitHub 仓库。它能编辑任何未签名的安装程序,把运行时打包进去以支持没有网络的机器,并用你自己的密钥签名。保存到本地磁盘的副本除了运行时镜像之外不向网络请求任何东西,所以 GitHub 分支必须给出该分支上的某个 commit。 服务器提供什么 两件事。它给安装脚本签名,这样安装程序就能验证脚本来自我们且传输途中未被改动。另外,由 我们 签名的安装程序将来会在那里构建——前提是有证书可用;目前还没有,所以这个选项是关闭的。 上面其余的一切都由本页自己完成。

约 6 MB,这就是整个产品

03 工作原理

三步,没有意外

第一步

指向一个仓库

给我们一个 GitHub 仓库,以及分支、标签或 commit。我们会克隆真正的源代码。

第二步

依赖自动处理

安装时会挑选符合你版本范围、且能在该电脑上运行的最新运行时,然后把它装进应用自己的文件夹。

第三步

为每个平台构建

一个用 NSIS 构建的 Windows 普通 .exe,外加 Linux 的 .run 和 macOS 的 .zip——三个真正的安装程序。

04 隔离

每个应用都有自己的文件夹

每个应用都拿到自己那份依赖副本,放在名字经过哈希缩短的文件夹里。什么都不共享,所以一个应用永远搞不坏另一个,卸载也只是删掉该应用的文件夹。磁盘空间便宜,装坏的安装不便宜。

Windows C:\ti\k3m9q2x7v4p8\ the app
 C:\ti\tjfq5rqwnnrx\ its Python 3.12.4
 C:\ti\a7d2hx9q4mbe\ its git 2.46.0
Linux /opt/ti/tjfq5rqwnnrx/
macOS /Library/Application Support/ti/tjfq5rqwnnrx/

05 还没有仓库

在这里写应用

选 Python、JavaScript(Node.js)或 Ruby,再选一个模板——脚本、窗口应用、窗口里的网页或托盘应用——然后在浏览器里写代码、运行,再到 New installer 页面用同一条流水线把它做成安装程序。 写一个应用

06 复用

一个安装程序,指向你的应用

我们写了一个安装程序——base installer——这里构建的每个安装程序都是同一个程序加上你的设置。比如 install_python_x.exe 就是那个程序,设置里写着“安装 Python 包 x”。每一份副本里的代码都完全相同,变的只有设置,所以这个程序本身只需要测试、加固和签名一次,而不是每个应用各来一遍。

install_python_requests.exe -> installs the "requests" package
install_python_black.exe -> installs the "black" package
install_node_prettier.exe -> installs the "prettier" package

07 签名

三种发布方式

这里的签名签的是安装程序——我们写的那个,每一份副本都一模一样——从来不是它安装的软件。它的作用就像浏览器上的签名:它说明浏览器是谁写的、这份副本未被改动,与你访问的网站毫无关系。安装时向你索取信任的程序是我们的,且未被改动,所以它给你看的那个界面可以相信。

模式 A

我们给安装程序签名

安全警告最少。设置写在文件名里,所以改个文件名就能让它指向另一个包——签名依然有效,因为它从来就不是对安装内容的声明。

模式 B

你给安装程序签名

安装程序上是你的名字和图标,用你自己的证书、你自己的信誉。

模式 C

无人签名

完全可编辑。直接在浏览器里修改它安装的内容、名称和图标,无需上传文件。

08 承诺

没有隐藏

每个安装器,无论由谁签名,都会在改动任何东西之前,先展示它将安装什么、来自哪里、会下载什么、文件装到哪、以及安装器文件由谁签名。 那个界面——本页顶部那个——不是我们事后写的摘要。 它读的是安装器自己的设置块,安装器遵循的也是同一个块,所以它不可能和接下来发生的事不一致。 那个界面能证明什么、不能证明什么,值得单独用一页来讲: 哪些部分由我们签名,哪些是发布者的说法,以及安装器在没有联网的机器上如何验证其中任何一项。 你在信任什么,以及为什么

来源: robertsdotpm.github.io← 返回首页