Please read this before you rely on WinAppMigrator, especially for a one-way move off a failing PC. The first few matter most. It follows the README's Limitations and the known gaps in SECURITY.md.
- The app's own setup does not know it moved. Its entry in Settings runs this project's uninstaller. Windows Installer has no record of an MSI app on the new PC, so the app's own updater or repair may treat it as not installed. An Inno Setup app's own uninstaller, if something else runs it, would only say its log is missing.
- It can miss what is kept under another name. Beyond what the setup recorded, folders and registry keys are matched by the app's exact name. What is close to that is offered for you to tick. What is under a name nothing like it stays behind. Check what the screen lists. If it looks wrong, do not rely on that installer.
- Some licenses will not move. Anything tied to the old machine may need activating again. A license value in the machine-wide registry, such as a serial number a setup saved for everyone, is only named, never carried, even with the License option on, so have it ready to enter again.
-
Its windows need Direct3D 12, which an old graphics driver or a virtual machine may not have. An installer can still run with
--apply, and an uninstaller with--quiet, from an administrator's command prompt. The app has no such route. See Command line. - Reading a failing drive can finish it off. Make an image of a failing drive first, and build from the image. See Moving from a connected drive.
- It is only for software you are licensed to move. That part is up to you.
- Try an installer before you rely on it. Testing so far has been on small, well-behaved apps and clean machines. See Requirements and testing.
- An app made of several entries only gets its own, unless you add the rest. For example, a hidden part of an app with its own uninstall entry is offered under Might Also Be Part of It, and goes in only if you tick it. Another app in the list of apps is never offered. Build it by itself.
- What you leave out is up to you. The screen knows what runs a file, and what is told to use one by its path. It cannot know what a program does by itself, so a program can still need a folder you unticked.
- Runtimes stay as they were found. A runtime that only a folder you left out needed still goes in. It only costs room.
- What is on the screen is as of when the app was looked at. A build reads each file then, so a changed file is right, and one that has gone is listed. Something new since then is not in it until you click Look Again.
- A link in an app's folder is not followed, and neither is a folder more than 64 levels down. Each is named in a warning.
- The registry is captured up to 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, and the rest stays behind.
-
Some things stay behind. An ODBC data source that uses Windows' own driver has to have the app's exact name. A firewall rule with a
TTKcondition is not carried, since it could let in more on the new PC. A driver file with no service that loads it is named, and stays. Microsoft Store apps are not listed. - Secrets can be missed. The rules that keep passwords out go by names and a few shapes of text, and do not look inside the app's own files. See Privacy and security.
-
An installer past 4 GiB is two files, an
.exeand a.wamdatafile, which must stay together. See Big apps. - The room a build asks for is the most it could take. It assumes nothing compresses, so it can stop on a drive the installer would have fitted on. Choose an output folder on another drive.
- Building to a FAT32 or exFAT drive needs room on your system drive, because those drives cannot keep the build's working files private. FAT32 also cannot hold a file of 4 GiB, so a build that large stops there.
- Whether an app can run on the new PC goes by what its programs say about themselves. That is what Windows itself holds them to. It does not say what else a program relies on, so an app built on a newer Windows may need something an older one does not have.
-
The install location has to be on a drive of this PC, and not through a link. A network share is refused, and so is a folder that is a link or under one. If a data folder such as
%AppData%is under a link, and there is data to restore there, the install is refused before anything changes, so install without user data and license data. - The installer needs somewhere private to unpack. If there is nowhere only administrators can use, with the room, the install does not go ahead.
-
What another app has on the new PC stays that app's. A link type, a file type, a COM class, an event log source, a font name, or anything like it that already belongs to something else is left alone, even with
--force, and the installer says so. An app that expected to openhttplinks has to be set as the default again, as Windows would have you do anyway. -
An installer leaves out what no app should do, such as a startup item that runs something through
rundll32. If what it sets up relies on a file it left alone, it installs nothing, rather than have that run whatever is already there. - Shortcuts go to this PC's Desktop and Start menu: yours, or everyone's if that is where they were. One from a Desktop folder with an unusual name is left out and reported.
- Hash checks have limits. They catch damage, and changes by anyone who does not also update the hashes. A preview checks only the whole package's hash, and lists only the first 300 changes.
-
A file replaced on another drive is copied aside, which takes longer. Only a file on the same drive as
%ProgramData%can simply be moved. If its permissions cannot be put back with it, the file stays where it is, and the install or uninstall says so. -
A file named like a device, such as
aux.h, cannot be installed before Windows 11. The installer stops and says so, before installing anything. Windows 10 itself has not been run.
-
Files and settings that changed after the install stay, and it says which. A file one of those replaced goes beside it, as
name.before-install, and is never lost. - Files you added stay, with the folders they are in, and so do user data and licenses unless you ask for them to go.
- A runtime it installed stays, because other programs may be using it. That includes after a failed install is put back.
- A service that ran as a custom account does not get its password back, because the password was never in the installer.
- A service that will not stop goes when the PC restarts.
- If part of it is on a drive that is not connected, the entry in Settings stays. Connect the drive and uninstall again.
- The uninstaller's UAC prompt says "Unknown publisher", even for an installer you signed, because it must never be signed. See Privacy and security.
- A connected drive only gives what is on it. Nothing it names off the drive is followed, and no link on it is followed at all. An app or data kept on another of the old PC's drives, or reached through a link, stays behind, and the build says so.
- A build cannot check that a drive is what it says. Build only from a drive you have reason to trust, and read what the screen lists.
- The app does not write to a connected drive, nor to a disk image, which it attaches read-only. Windows itself can still update when files were last opened, and its own records of the drive.
-
A disk image has to be a
.vhdor.vhdx. Windows cannot attach a VMware or VirtualBox disk, so save it as one of those first. A Hyper-V checkpoint,.avhdx, is not read: export the disk instead. An image Windows already has attached is refused, and a volume locked with BitLocker has to be unlocked first. See Pick a disk image.
See Moving from a PC over the network.
- It reads only what the client can: the old PC's Windows drive, as a snapshot. What is on its other drives stays behind, and so does a file that only its own account's permissions let anyone read.
- Data of an app installed for one account, kept outside that account's profile, stays behind. Over the network, the app cannot tell which account owns a folder outside a profile.
- The old PC is found only on the same local network. Across a router, type its address.
- A firewall other than Windows' own has to be told to let the client's ports, TCP 47732 and UDP 47731, through.
- While the client runs, anyone on the local network can reach it. Only the pairing code keeps them out. Stop it when the build is done.
- On a Windows 7 without Microsoft's 2020 root certificate, Windows cannot check the client's signature, and says its publisher is unknown. Save the client from the app to a drive or folder only you can write to. Windows 7 SP1 with none of its later updates lacks that root.
- It has only been tried by hand, with the client on Windows 7 virtual machines and on Windows 11. Windows 8 and 10 as the old PC have not been tried, and neither has a real network between two separate PCs. See Requirements and testing.
See Apps from Windows 7, Vista, 8, or 8.1.
- Some things from then do not work on Windows 11 at all: a 16-bit program, a driver signed in a way Windows 11 refuses with Secure Boot or Memory integrity on, and anything that used Windows 7's Sidebar, Media Center, or Internet Explorer itself.
- The DirectX End-User Runtime needs internet on the new PC, for an app that needs it, and stays after the app is uninstalled. See Runtimes.
- A DLL from the old Windows' own folders that Windows 10 and 11 lack is named, not brought. It is not the app's. Install whatever provided it.
- Installers are made for 64-bit Windows 10 and 11. An app from 32-bit Windows is laid out as 64-bit Windows keeps a 32-bit app, and installers do not run on 32-bit Windows at all.
- It has only been tried by hand, from Windows 7 virtual machines onto Windows 11, not on GitHub's machines, and not from Vista, 8, or 8.1. See Requirements and testing.
- An installer holds one account's data. It is read from whoever is signed in, or from the account you choose, and goes to whoever is signed in where the installer runs, even if another administrator was named at the UAC prompt. If who is signed in cannot be told, per-user data and settings are left out rather than guessed.
-
Documents or Saved Games outside your profile are not written to, because an elevated installer would write wherever those settings point, and anyone can change them. Moved somewhere inside your profile, as OneDrive does, they work as usual. Otherwise those files go under the install folder, in
_external, and the installer says so before it starts.
-
An install location outside a protected folder stays changeable by other programs on the PC. Choose a location under
C:\Program Filesfor anything that installs a service or a driver. - A program already on the PC might, in theory, win a race against the installer's checks on such a folder, during an install or uninstall. It has not been shown to be impossible.
- A program already on the PC could swap an installer's file in the instant before the installer opens it. The window then shows that file's signature, so read the Installer row, not only the UAC prompt.
- A file someone else can write to can be held open to make an undo fail. It is reported and can be tried again. An install that never finished stops the next install until it can be undone.
Open issues are tracked in the project's plan.
Last changed 2026-11-11. Describes WinAppMigrator as of its latest release, 0.6.0.