01  What it is

Real installers for Windows, Linux and macOS, straight from a GitHub repo.

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.

Output
.exe · .run · .zip
Languages
13, plus your own runtime
Oldest target
Windows XP · glibc 2.17 Linux · macOS 10.9
This page
One HTML file, no server, no network
02  The unusual part

One file, like TiddlyWiki

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.

With no server at all
Code you write here, a package, or a GitHub repository pinned to a commit. It edits any installer nobody has signed, packs the runtimes inside for machines with no internet, and signs with your own key. A copy saved to your disk asks nothing of the network except the runtime mirror, so a GitHub branch has to be given as a commit there.
What the server adds
Two things. It signs the install script, so an installer can check the script came from us and reached it unaltered. And it is where installers signed by us would be built, once there is a certificate to sign them with - there is not one yet, so that option is off. Everything else above is this page's own work.
about 6 MB, and it is the whole product
03  How it works

Three steps, no surprises

Step one

Point at a repo

Give us a GitHub repository and a branch, tag or commit. We clone the actual source code.

Step two

Dependencies are handled for you

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.

Step three

Build for every platform

An ordinary .exe for Windows, built with NSIS, plus a .run for Linux and a .zip for macOS - three real installers.

04  Isolation

Every app gets its own folder

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.

Write an app

06  Reuse

One installer program, pointed at your app

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.

Mode A

We sign the installer

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.

Mode B

You sign the installer

Your name and icon on the installer itself, with your own certificate and your own reputation.

Mode C

Nobody signs it

Fully editable. Change what it installs, its name and its icon in your browser, without uploading the file.

08  The promise

Nothing hidden

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.

What you are trusting, and why