An installer holds what the app needs to work on the new PC, and as little else as possible. This page lists each kind of thing, how it is found, how the two options change it, and what is always left out.
The app uses three kinds of evidence, in this order of trust:
- What the app's setup recorded. Most setups leave a record of what they installed: MSI keeps a database, Inno Setup keeps a log, and NSIS sometimes does. Where there is a record, the app reads it.
- What points at the app's files. A service, a file type, a firewall rule, or a shortcut belongs to the app if what it runs or opens is one of the app's files. Its name says nothing.
-
Exact names. Folders and registry keys named exactly for the app, such as
C:\ProgramData\Fabrikam Data SyncorSoftware\Fabrikam\Data Sync. A name that only contains the app's name does not count, soGitnever takesGitHub.
What is close to a name, but not exact, is offered for you to tick, under Might Also Be Part of It. See Near matches.
| What | Goes in? | Notes |
|---|---|---|
| Program Files | Yes, unless you untick a folder | Found through install records, App Paths, and folders named exactly for the app. What holds the main program, and what it cannot start without, always goes in. Empty folders come along too, up to 10,000. |
| Registry settings | Yes | The app's own machine-wide keys. With User Data off, an account's own keys go only where Windows itself looks for an app, plus a value saying where the app is. |
| Services | Yes, unless you untick one | With their arguments, settings, and built-in account. One set to start by itself is started after the install has checked its files. A custom account's password cannot be moved, so that service is set up as LocalService, and the installer says so. |
| Drivers | Yes, unless you untick one | Only drivers the app owns, which are registered again on the new PC. No test has loaded one. Drivers that belong to Windows or another company are named instead, for you to reinstall from their maker. |
| Scheduled Tasks | Yes, unless you untick one | A task that ran as a person runs as whoever installs it. With User Data off, one told to work on something in someone's folders stays behind. |
| Startup items | Yes, unless you untick one | Run values and Startup folder shortcuts that run the app's own programs |
| Shortcuts | Yes, unless you untick one | They go to the Desktop and Start menu of the new PC. With User Data off, a shortcut in your own folders goes only if it just opens the app. |
| Environment variables | Yes, unless you untick that kind | Only those that hold the app's path. A captured Path holds only the app's entries, and is added to the new PC's, never put in place of it. |
| COM classes | Yes, unless you untick that kind | With their type libraries, interfaces, and AppIDs, when their program is one of the app's files |
| File types and link types | Yes, unless you untick that kind | When what opens them is the app. On a type that is someone else's, only the app's own menu commands go. |
| Menu commands and shell extensions | Yes, unless you untick that kind | When what they run or load is one of the app's files |
| Default apps entries | Yes, unless you untick that kind | So you can choose the app in Default apps. Nothing is made the default by it. |
| Firewall rules | Yes, unless you untick that kind | Only for a program of the app's, one program per rule |
| Fonts | Yes, unless you untick that kind | Only a font file of the app's. One in C:\Windows\Fonts comes only if a machine-wide install record names it, and it goes in the install folder, not Windows' folder. |
| ODBC drivers and data sources | Yes, unless you untick that kind | A driver whose files are the app's. A data source that uses one of those, or has the app's exact name. Its password is left out. |
| Event log sources | Yes, unless you untick that kind | When its messages come from the app's files |
| Compatibility settings | Yes, unless you untick that kind | Settings Windows applies when starting one of the app's programs |
| Runtimes | Always | Read from the main program and up to 64 others, nearest the top of its folder first. If there are more, the screen says how many were not looked at. Visual C++ 2005 and later, and .NET 6 to 10, go inside the installer if they can be downloaded when you build. See Runtimes. |
| License data | Only with License and Activation Data on | License files and stores, and license values in your account's part of the registry. A license value in the machine-wide registry or under the publisher's own key, and a store tied to the hardware, is only named, even with the option on. With the option off, none of it is captured. Only the names are noted. |
| User Data | Only with User Data on | See below. |
| Certificates | Never | The ones the app seems to rely on are named. Whether to trust one is for you to decide. |
| Credentials | Never | Values and files whose names, or a few shapes of text, say they are passwords, tokens, or private keys are left out and named. They cannot be ticked. One kept under a plain name, or inside an app's own files, is not recognised. |
| Near matches | Only if you tick them | Up to 200 are offered. Once ticked, each goes through the same checks as everything else. |
| The app's entry in Settings | Yes, changed | It goes with this project's uninstaller in place of the old one. What was only true on the old PC is dropped. |
With User Data on, these come along, for one account:
- what that account keeps for the app in the registry: settings, recent files, saved sessions, and the like;
- the app's folders in that account's AppData (Roaming, Local, and LocalLow);
- the app's folders in ProgramData and Public Documents, which are shared by everyone on the PC;
- the app's folders in Documents, including
My Games, and in Saved Games; - what Windows kept aside for the app in that account's VirtualStore. It goes into the app's own folder and registry key, in place of what the app came with, so the app finds it there. Apps made for Windows XP often kept their settings this way. A program found there is left out and named.
Files that OneDrive keeps online only are listed but not copied, so a build never downloads them, or fails on them. To bring them, make them available offline in OneDrive before you build. Folders of temporary files, caches, crash dumps, and logs inside data folders are skipped too.
An installer holds one account's data. If more than one account has data for the app, you choose whose with Whose Data. On the new PC it goes to whoever is signed in.
This is the default. Beyond leaving out the data folders above:
- What the app remembers for you stays behind. Its key under your part of the registry is where it remembers recent files, saved sessions, the servers you connected to, and so on. None of that goes. What does go is what Windows itself looks in for an app, such as its file types, its startup items, and its entry in Settings, plus a plainly named value that only says where the app's folder is.
- Your PC's name, and whose data it was, stay out of what the installer says about itself. Your name, profile folder, and SID are taken out of its warnings and lists, and of who wrote a scheduled task and what account a service ran as. Paths are not changed: an app installed for your account alone is in your profile folder, so its paths name that folder, with your account's name in it. The last look reports that.
- Personal shortcuts stay behind. A shortcut in your own folders goes only if it just opens the app. One with its own arguments, which you may have set up, stays.
- A scheduled task that works on your files stays behind, as does anything else that names a place in someone's folders.
- An account's environment variable goes only if all it says is where the app is.
- The build takes a last look for your account and PC names in what it wrote about the app: its list of files and settings, and its services, tasks, shortcuts, variables, and reports. It says on the done screen where it found any. It does not look in the app's own files, or in license files. See Privacy and security.
So the app should start on the new PC much as it would for someone new, except for what it keeps among its own program files and machine-wide settings, which go as they are.
This is the default. License files, license values, license stores, and license settings of services, command lines, and variables are not captured at all. A serial number typed into the app's setup counts as license data too. Only their names are noted, under Left Out, and Why, and in the installer.
With it on, license files and stores go in, and so do license values in your account's part of the registry. A license value in the machine-wide registry, such as a serial number a setup saved for everyone, is only named, so have it ready to enter again. Credentials still do not go in. A license in a folder you unticked still goes in, because licenses follow this option only. The screen says so.
WinAppMigrator never decrypts license data and never gets around activation. A license tied to the old PC may need activating again. See Privacy and security.
| What | Why |
|---|---|
| Anything that looks like a credential | Passwords, tokens, keys, and files such as .env, id_rsa, credentials.json, *.pfx, *.kdbx, *.ovpn, or a .pem holding a private key. They are named, never captured. You may have to enter them again on the new PC. |
| Certificates | They are named. Adding one to a trust store is a decision for you. |
| Drivers that belong to Windows or another company | They cannot be passed on. Reinstall them from their maker. |
| Another account's data | An installer holds one account's data. Another account's folders are left out, however a setting came to name them. |
| What is on a network share | Looking at a share would connect to it with your account. A Documents folder kept on a share is left out, with a warning. |
| What is through a link in the app's folder, or more than 64 folders deep | Each is named in a warning. What the link points at stays behind. |
| Registry past a limit | 1 MiB for one value, 512 keys and 8 levels under one key, and 100,000 values for an app. Reaching one is a warning. |
A firewall rule with a TTK condition, or with two programs |
Carried over, it could let in more on the new PC, or read as another program's. |
| An ODBC data source that uses Windows' own driver, unless it has the app's exact name | Nothing else says whose it is. |
| A driver file with no service that loads it | It is named, and stays. |
| How the app's own setup would remove it | Its old uninstall command, its Inno Setup log unins000.dat, where an MSI setup was run from, and who it was registered to. None of that would work, or be true, on the new PC. |
| Microsoft Store apps | They are not listed at all. |
An installer runs with full rights, and nothing proves who built a package, so the installer checks everything a package asks for when it installs, not only when it was built. It refuses, and lists:
- registry keys no app install should write, such as those that control how Windows signs in, starts programs, loads code into every program, or trusts certificates;
- a service, shortcut, scheduled task, or startup item that runs anything but a file the package installs;
- a startup item that runs something through a Windows program such as
rundll32; - environment variables that Windows and other programs depend on;
- taking over a service, task, COM class, file type, link type, or anything like it that already belongs to something else on this PC, even with
--force; - a firewall rule for all programs, or one that overrides other rules;
- adding a certificate.
What it refuses is left out, and the rest of the install goes ahead. But if something the package sets up would rely on a refused file, the installer installs nothing rather than have that run whatever is already there.
A list of what is dangerous can never be complete. So any registry values outside the app's own keys, and outside the kinds listed above, are shown as one row of their own, Other Settings, "N settings outside the app's own keys", for a second look. What counts as the app's own goes by the name, publisher, and folder the package gives itself, so a package that calls itself another company can write that company's keys without this row showing them. What is under Software\Classes is not counted here either. See Installing on the new PC.
The full rules are in SECURITY.md. How things are found is in docs/discovery.md.
- A folder or setting under a name nothing like the app's. Only what is close to the name is offered. Check what the screen lists. If it looks wrong, do not rely on that installer.
- An app made of several entries. It only gets its own, unless you tick the rest under Might Also Be Part of It. Another app in the list is never offered: build it by itself.
- What a program does by itself. The screen knows what runs a file, and what is told to use one by its path. A program can still need a folder you unticked.
- A secret with a name that does not say what it is, or one inside the app's own files or database. See Privacy and security.
More are in Limitations.
Last changed 2026-11-11. Describes WinAppMigrator as of its latest release, 0.6.0.