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.
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.
| When | What happens |
|---|---|
| Installed 5.2 for everyone | The one who installs gets their part at once. The entry says version 5,2,0,0. |
| Anna signs in | She hasn't had it: her keys are written, her commands run. |
| Anna signs in again | Same version: nothing runs. |
| Updated to 5.3 | The entry says 5,3,0,0. |
| Anna and Boris sign in | 5.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.
| Field | What it is |
|---|---|
| Name | What the command does, for you and for the log. |
| Program | One of the installed programs (.exe, .cmd, .bat); it starts in the install folder. |
| Arguments | Values in them are the user's: --data "{LocalAppData}\Ledger" --market {Variant}. |
| When | After 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:
- The product's Active Setup entry goes, so nobody gets it again.
- Every user's part goes too: their keys, the keys above them left empty, and Windows' record of what they had. For the users signed in at that moment it is removed from their registry; for the others, from their profile's registry file, opened for a moment.
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.