TiddlyInstall: A universal, reusable, install system
No freezing and no bundlers that break. We install your project's real
以下正文同步自 Hacker News,版权归原站所有,已转换为易读排版。
No freezing and no bundlers that break. We install your project's real runtime and dependencies into a folder of its own, then install your project against them. Windows installers are built with NSIS, and on Linux and macOS the installer is one POSIX shell script with no framework to install.
Every file the installer names is checked against a checksum in it, and refused if it differs. The last two are not among them: the source archive is identified by its commit and fetched over HTTPS, and what pip fetches is decided while you install.
TiddlyInstall is a single HTML file. This page carries the installer programs, the runtime catalogue, and all the code that makes, edits and signs them.
Give us a GitHub repository and a branch, tag or commit. We clone the actual source code.
At install time it picks the newest runtime that matches your version range and runs on that computer, then installs it into the app's own folder.
An ordinary .exe for Windows, built with NSIS, plus a .run for Linux and a .zip for macOS - three real installers.
Each app gets its own copy of every dependency, in folders with short hashed names. Nothing is shared, so one app can never break another, and uninstalling just deletes the app's folders. Disk space is cheap; broken installs are not.
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 No repo yet Write the app here
Pick Python, JavaScript (Node.js) or Ruby and a template - a script, a window app, a web page in a window or a tray app - then write your code in the browser, run it, and make an installer from it with the same pipeline, on the New installer page.
We wrote one installer program - the base installer - and every installer built here is that same program plus your settings. For example, install_python_x.exe is that program, with settings that say "install the Python package x". The code is identical in every copy and only the settings change, which is why the program itself only has to be tested, hardened and signed once rather than once per app.
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 Signing Three ways to ship
A signature here is on the installer program - the one we wrote, identical in every copy - and never on the software it installs. It works like the signature on a web browser: it says who wrote the browser and that this copy is unmodified, and nothing about the sites you visit. The program that asks for your trust at install time is ours and unaltered, so the screen it shows you can be believed.
The fewest security warnings. Settings live in the file name, so renaming the file points it at a different package - and the signature stays valid, because it was never a claim about what gets installed.
Your name and icon on the installer itself, with your own certificate and your own reputation.
Fully editable. Change what it installs, its name and its icon in your browser, without uploading the file.
Every installer, whoever signed it, shows what it will install, where it comes from, what it downloads, where the files go and who signed the installer file, before it changes anything. That screen - the one at the top of this page - is not a summary we wrote afterwards. It is read from the installer's own settings block, which is the same block the installer follows, so it cannot disagree with what happens next.
What that screen can prove, and what it cannot, is worth its own page: which parts are signed by us, which are the publisher's word, and how an installer checks any of it on a machine with no internet connection.
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。