Each user at sign-in

A setup installed for everyone runs as one administrator. Whatever it writes for "the current user" — settings in HKEY_CURRENT_USER, a profile, a path to data — goes to that one person only. Other people with their own accounts on the computer don't get it, nor do those who come later. Cobalt Installer gives each of them their part the first time they sign in, and takes it away from each of them when the product is removed.

3 min read
In the app: ? next to the title of At user sign-in opens this page.

How it works

Windows has a mechanism for this, Active Setup. A setup installed for everyone writes an entry for the product in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components. Each time a user signs in, Windows compares its version with the one it remembered for that user. If the user hasn't had it — or the product has been updated since — Windows runs the entry's command once, as that user, before their desktop shows.

WhenWhat happens
Installed 5.2 for everyoneThe one who installs gets their part at once. The entry says version 5,2,0,0.
Anna signs inShe hasn't had it: her keys are written, her commands run.
Anna signs in againSame version: nothing runs.
Updated to 5.3The entry says 5,3,0,0.
Anna and Boris sign in5.3 is newer: their part again, with the new values. Boris signs in for the first time and gets 5.3 straight away.

You don't set any of this up by hand. The entry's command is the product's own uninstaller started with --per-user — it is Cobalt Installer's engine, already in the install folder — and its version is the product's.

Registry keys for every user

A key in Registry whose place is HKCU, in a setup installed for everyone, would reach only the one who installs. The section says so under the key and offers For every user at sign-in. Press it, and the key is written for each user at their sign-in; the key's head says for every user at sign-in.

The values in such a key are each user's own. {LocalAppData}\Ledger is C:\Users\Anna\AppData\Local\Ledger for Anna and C:\Users\Boris\AppData\Local\Ledger for Boris — the administrator who installs can't know those.

A setup installed for one user doesn't need this: the key is written for that user, and nobody else uses that copy.

Commands at sign-in

At user sign-in — a feature to add under What to install — runs a program of yours once for each user: to make their profile, to move their settings over from an older version.

FieldWhat it is
NameWhat the command does, for you and for the log.
ProgramOne of the installed programs (.exe, .cmd, .bat); it starts in the install folder.
ArgumentsValues in them are the user's: --data "{LocalAppData}\Ledger" --market {Variant}.
WhenAfter each version — again at each user's first sign-in after an update. Once for good — only the very first time.

Installed for one user, the commands run for that user right after the install.

Keep it short

While the command runs, the user's desktop doesn't show: Windows waits for it. Cobalt Installer waits for a command up to a minute, then goes on. Show no windows, ask no questions, and finish in a couple of seconds.

What the uninstall takes away

Nothing of the product is left for anyone:

Other installers take away only the Active Setup entry, and the keys stay in every profile for good.

Where to see it

Description shows a line under Who for when there is anything for each user: for every user at sign-in — Registry keys: 2 · Commands: 1.

Check it

After an install for everyone, the entry is in the registry:

Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Active Setup\Installed Components\{product code}"

What happened at a user's sign-in is in their temporary folder: %TEMP%\<product> Sign-in.log.