返回

文章详情

TiddlyInstall:一个通用的、可重用的安装系统

Hacker News2026年9月26日 00:29

01 它是什么 真正的安装程序,适用于Windows、Linux和macOS,直接来自GitHub仓库。没有冻结,没有破坏的打包工具。我们将您项目的真实运行时和依赖项安装到它自己的文件夹中,然后针对它们安装您的项目。Windows安装程序使用NSIS构建,在Linux和macOS上安装程序是一个POSIX Shell脚本,没有框架来安装。 输出文件:.exe · .run · .zip 语言:13种,还有您自己的运行时 最旧的目标:Windows XP · glibc 2.17 Linux · macOS 10.9 本页面 一个HTML文件,没有服务器,没有网络 02 不寻常的部分 一个文件,像TiddlyWiki TiddlyInstall是一个单独的HTML文件。这个页面包含安装程序、运行时目录,以及生成、编辑和签名它们的所有代码。没有任何服务器。 您在这里编写的代码、一个包或固定到提交的GitHub仓库。它编辑任何未被签名的安装程序,将运行时打包到没有互联网的机器内部,并使用您自己的密钥进行签名。保存到您磁盘上的副本除运行时镜像外不需要网络,因此必须提供在GitHub上的分支作为提交。 服务器添加的内容 两件事。它签署安装脚本,以便安装程序可以检查该脚本是否来自我们,并且没有被更改。它也是我们签署的安装程序将要构建的地方,一旦有证书可以用来签名它们 - 现在还没有,因此该选项是关闭的。 上面所有的其他内容都是本页面自己的工作,约6MB,便是整个产品。 03 它是如何工作的 三个步骤,没有惊喜 第一个步骤 指向一个仓库 给我们一个GitHub仓库和一个分支、标签或提交。我们克隆实际的源代码。 第二步 依赖项为您处理 在安装时,它选择匹配您版本范围并在该计算机上运行的最新运行时,然后将其安装到应用程序自己的文件夹中。 第三步 为每个平台构建 一个普通的.exe用于Windows,使用NSIS构建,另加一个.run用于Linux和一个.zip用于macOS - 三个真正的安装程序。 04 隔离 每个应用都有自己的文件夹 每个应用都有其自己的所有依赖项的副本,文件夹名称为短哈希名称。没有任何共享,因此一个应用永远不能破坏另一个应用,卸载只需删除应用的文件夹。磁盘空间便宜;损坏的安装程序不是。 Windows C:\ti\k3m9q2x7v4p8\ 该应用 C:\ti\tjfq5rqwnnrx\ 其Python 3.12.4 C:\ti\a7d2hx9q4mbe\ 其git 2.46.0 Linux /opt/ti/tjfq5rqwnnrx/ macOS /Library/Application Support/ti/tjfq5rqwnnrx/ 05 尚无仓库 在这里编写应用 选择Python、JavaScript(Node.js)或Ruby及一个模板 - 一个脚本、一个窗口应用、一个窗口中的网页或一个托盘应用 - 然后在浏览器中编写您的代码,运行它,并使用相同的管道在新安装程序页面上制作用它创建安装程序。 06 重用 一个安装程序,指向您的应用 我们编写了一个安装程序 - 基础安装程序 - 在这里构建的每个安装程序都是该程序加上您的设置。例如,install_python_x.exe是该程序,其设置为“安装Python包x”。每个副本中的代码是相同的,只有设置不同,这就是为什么程序本身只需测试、加固并签名一次,而不是每个应用都签名一次。 install_python_requests.exe -> 安装“requests”包 install_python_black.exe -> 安装“black”包 install_node_prettier.exe -> 安装“prettier”包 07 签名 三种运输方式 这里的签名是在安装程序上 - 我们编写的安装程序,在每个副本中都是相同的 - 而不是在它安装的软件上。它的工作原理类似于网页浏览器上的签名:它说是谁编写了浏览器,并且这个副本是未修改的,和您访问的网站没有任何关系。安装时要求您信任的程序是我们的且未更改,因此它为您显示的屏幕可以被信赖。 模式A 我们签署安装程序 最少的安全警告。设置位于文件名中,因此重命名文件将其指向不同的包 - 而签名保持有效,因为这不是关于安装什么的声明。 模式B 您签署安装程序 您自己的名字和图标在安装程序本身上,附有您自己的证书和信誉。 模式C 无人签名 完全可编辑。更改它安装的内容、名称及其图标,在您的浏览器中,不需要上传文件。 08 承诺 没有隐藏内容 每个安装程序,无论是谁签署的,都显示它将安装什么、来源、下载内容、文件去向以及谁签署了安装程序文件,在更改任何内容之前。那个屏幕 - 本页面顶部的屏幕 - 并不是我们之后写的摘要。它是从安装程序自己的设置块读取的,该块与安装程序遵循的块相同,因此它无法与接下来发生的事情相矛盾。那个屏幕可以证明什么,以及它不能证明什么,是值得自己单独讨论的内容:哪些部分由我们签署,哪些是发布者的声明,以及安装程序如何在没有互联网连接的机器上检查这些内容。你所信任的内容,以及为什么。

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

☕请我喝杯咖啡