# TigerSetup privacy statement
This statement describes what TigerSetup does with information on your
computer and what it sends over the network. It covers the release of
TigerSetup for Windows it is published with: each release carries its own copy
of this statement (see *Changes to this statement*).
TigerSetup is published by **IT Tiger** (). Questions
about this statement can be asked at
; a security concern is
reported privately as [`SECURITY.md`](SECURITY.md) describes.
## In short
- TigerSetup has **no telemetry, no analytics, no crash reporting, no
advertising, no accounts, no licence activation, no update checks and no
self-update**. IT Tiger receives nothing from it.
- Everything TigerSetup records stays on your computer, in the places listed
below, and a successful uninstall removes all of it.
- TigerSetup contacts the network only to obtain a **prerequisite a package
declares and the computer lacks** — from the WinGet catalog, or from the
download address the package declares — as described below, and never for
TigerSetup's own installation.
## What this statement covers
TigerSetup is a tool for building installers. This statement covers:
- **TigerSetup itself**: the `tiger-setup` builder, the installer engine and
loader it installs, the installed help, and the installer that installs
TigerSetup;
- **the TigerSetup code inside every `Setup.exe` built with it**: the loader,
the engine and the uninstaller copy it leaves for Add/Remove Programs.
An application installed by a `Setup.exe` built with TigerSetup is its own
publisher's software, with its own privacy terms; so are any programs or
scripts that publisher's package runs during installation. This statement
describes only what TigerSetup's own code does.
## Building installers (`tiger-setup`)
`tiger-setup build`, `metadata`, `inspect`, `verify` and `winget` work on
files you name. They read the `TigerSetup.toml` manifest and the files it
names — the application's files, icons, licence text, prerequisite
installers, custom-action programs — and, where the manifest takes product
metadata from them, the version information of an executable. They write the
`Setup.exe` you asked for, and the WinGet manifests or exported files you
asked for, where you asked for them.
A built `Setup.exe` contains the application's files and the package
description resolved from the manifest. File locations in it are relative to
the installation folder; the build machine's own folders are not recorded.
- **MSBuild metadata (optional).** A manifest that takes product metadata
from an MSBuild project makes `tiger-setup` run `dotnet msbuild` on that
project, which needs the .NET SDK. The .NET SDK is Microsoft's software and
behaves according to its own settings and terms, including the .NET SDK's
own telemetry (which `DOTNET_CLI_TELEMETRY_OPTOUT` controls). TigerSetup
does not change those settings and does not send anything itself.
- **`tiger-setup shell`** opens a command prompt; it changes nothing on the
computer.
- **While it resolves a WinGet prerequisite** (see *Network access*),
`tiger-setup build` keeps the downloaded catalog index in a folder of its
own under `%TEMP%` and removes it when the build ends.
## Installing, repairing and uninstalling
When TigerSetup's installer — or any `Setup.exe` built with TigerSetup —
installs, upgrades, repairs or uninstalls a product, it keeps the following on
the computer, for that product only:
- **The state directory**: `%LOCALAPPDATA%\TigerSetup\\` for a
per-user installation, `%ProgramData%\TigerSetup\\` for an
all-users installation (writable by administrators only). It holds:
- the **state database** (`state.db`): the product's identifier, version
and scope; the installation folder; every file, folder, registry value,
PATH entry, shortcut and other resource the installation added, by path
or name; the installer options chosen; a fingerprint (SHA-256) of the
licence text accepted in the wizard, if one was accepted; the record of
the transaction in progress; the prerequisites considered, with the
version, download address and SHA-256 of any that were downloaded; and
the custom actions run, with their exit codes;
- the **uninstaller** (`uninstall.exe`) that Add/Remove Programs runs, and
copies of the product's uninstall-time programs, if it declares any;
- **logs** of each install and repair (`logs\`).
- **Logs** record what each run did: the time, the product and version, the
scope, the installation folder, each file or resource changed, prerequisites
considered, and — when files are in use — the names and process IDs of the
applications Windows' Restart Manager reported holding them, and whether
they were closed and restarted. Output that a package's custom actions
print is recorded too. Paths in logs and in the database can include your
Windows account name, because that is part of your profile folder's path.
- **While a run is in progress** TigerSetup uses temporary files of its own:
the engine the loader extracts (under `%TEMP%\TigerSetup\`, or a protected
folder under `%SystemRoot%\Temp\` for an administrator's run), downloaded
prerequisite installers (in the state directory), and, for an uninstall, the
temporary uninstaller copy and the uninstall's log. They are removed when
the run ends.
- **Copy log path.** The wizard's completion page offers a *Copy log path*
link. Only when you choose it does TigerSetup put the log's path on the
clipboard. TigerSetup never reads the clipboard.
TigerSetup records only what it needs to upgrade, repair, verify and remove
the installation. It reads nothing else of yours: no documents, no browser
data, no credentials.
### Retention and deletion
The state directory and its logs are kept while the product is installed, so
that upgrade, repair, verification and uninstall work from what is really
installed. **A successful uninstall removes everything TigerSetup added**: the
product's files and resources, the state database, the logs, the uninstaller,
the Start Menu entries, the PATH entry and the Add/Remove Programs entry, the
uninstall's own temporary files and log, and the `TigerSetup` folders when no
other product's state is left in them. Something that existed before the
installation — a PATH entry, a folder with your own files in it — is left as
it was, and so is an installed file you changed afterwards, which the
uninstall reports rather than deletes.
A run that fails keeps its log, and the state the next run needs to finish or
roll back the interrupted change, so that the problem can be diagnosed. A log
written to a path you choose with `--log` is yours, and TigerSetup does not
remove it.
## Network access
TigerSetup's own installer declares no prerequisites, so installing,
repairing or uninstalling TigerSetup makes **no network request at all**.
The network is used only to obtain a **prerequisite a package declares** —
for example the .NET Desktop Runtime or the WebView2 Runtime — in one of two
ways the package chooses:
- **From the WinGet community catalog** (the default for a prerequisite with
a WinGet identity). When `tiger-setup build` runs for such a package, it
reads the catalog to find the prerequisite's current installer and records
that installer's download address and SHA-256 in the `Setup.exe`.
`tiger-setup build --offline` makes no network request; the installer then
resolves the prerequisite itself when it needs it.
- **From a download address the package declares**, with the SHA-256 the
installer must have. The catalog is not involved.
**When a built `Setup.exe` runs** on a computer where a declared prerequisite
is missing, it downloads that prerequisite's installer: from the address
recorded at build time while that record is fresh (two weeks by default), and
otherwise — or when that download fails — from the address the WinGet catalog
names now, after reading the catalog again. A prerequisite the package carries
inside the `Setup.exe` is never downloaded. If the prerequisite is already
present, nothing is downloaded at all. `Setup.exe install
--no-dependency-install` never downloads: it fails with `dependency_missing`
instead.
What these requests send:
- The catalog is read over HTTPS from Microsoft's WinGet content servers
(`cdn.winget.microsoft.com`): the catalog index, then the version list and
the manifest of the prerequisite. The request names the prerequisite's
WinGet package identifier.
- A prerequisite's installer is downloaded from the address the catalog names
for it — that prerequisite's publisher's server, for example Microsoft's
download servers — or from the address the package's publisher declared.
- Every request carries the `User-Agent` `TigerSetup`. Like any download, it
reveals your computer's IP address to the server it goes to, and goes
through Windows' proxy settings. No identifier of you, your computer or the
product being installed is added, and no cookie is stored. Those servers
are operated by their owners, under their own privacy terms.
The downloaded catalog is accepted only when it carries Microsoft's
signature, and a downloaded installer only when its SHA-256 matches the one
recorded for it — by the catalog, or by the package. A package's custom
actions may contact the network themselves; they are that package's
publisher's programs.
## Changes to this statement
This statement changes when TigerSetup's behaviour changes, in the same
release. The statement that applies to a release is frozen with it: it is
attached to that release on GitHub as `PRIVACY.md`, at
`https://github.com/rkozlowski/TigerSetup/releases/download/v/PRIVACY.md`,
which is the address TigerSetup's WinGet manifests give for that version, and
a later release does not change it. The statement for the release being
developed next is at
.