Can I move installed programs to another location in Windows?

27

5

Note about the suggested duplicate: I'm not looking for a global change of the installs location. I want to move the programs on a per program base to different locations.


Some software installers don't let you choose where the program will be installed, which I find pretty annoying.

Is there a way which lets you move the already installed program to another location, preferably making the necessary changes in the Registry automatically?

update following the answers so far:
I don't want to access the program from a different location, I want it to be physically there. So, while I appreciate your suggestions, links won't do.

Joris Groosman

Posted 2015-12-27T14:55:30.113

Reputation: 554

1If the SW is annoyingly bad enough to not allow you to choose an install location, it might also be annoyingly bad enough to have some "C:" path hard-coded somewhere. The only safe enough way to fool such SW is something like Jonno's answer, where it still "thinks" it is installed in its default location. It may happen though that it is fooled "too much" e.g. regarding available space on "its" drive. – Hagen von Eitzen – 2015-12-28T13:46:19.807

1

Exact duplicate of Forcing programs to be installed to another drive

– AStopher – 2015-12-29T10:17:54.360

@Downvoter Why the downvote? Because it's a duplicate? I explained why it isn't. – Joris Groosman – 2015-12-29T10:31:18.507

@JorisGroosman You can use symlinks on the same drive, it doesn't matter where the files are located- you can even do it on a per-program basis. You can move the program folder to another location on your drive (or another drive entirely), then symlink it so that the original location points to the new location. This means that your question is a duplicate. – AStopher – 2015-12-29T10:41:01.937

@cybermonkey Symbolic links only explain that I still can access the program after it has been moved, but not how to move it. Particularly fixing registry entries. – Joris Groosman – 2015-12-29T11:12:35.900

@JorisGroosman Moving & linking programs in this fashion wouldn't require you to do anything else, such as tinkering with the registry (as covered in the linked duplicate target). – AStopher – 2015-12-29T11:27:39.947

3Totally not a duplicate. And in theory there may be a built in way. Closevotes feel bogus to me. – Journeyman Geek – 2015-12-29T12:14:39.917

@JourneymanGeek Totally a duplicate, I even edited the target to make it clearer of the intent. Both questions ask 'How do I move installed programs to another location?' (the duplicate target was actually originally asking that, but apparently it wasn't clear enough so I edited it to make it clearer). – AStopher – 2015-12-29T12:25:33.917

I don't want to access the program from a different location, I want it to be physically there. The answer below per Jonno actually does point to physically moved programs to another location, & then creates the link to trick Windows into thinking its in the original location so this meets your needs and should warrant as the accepted answer. If it is located in C:\Program File\<Program> & you move it to D:\Program Files\<Program> and then create the link, that'll make Windows point to C:\Program FIles\<Program> & redirect it to the new location - since the install does not allow this. – Pimp Juice IT – 2015-12-30T03:36:40.783

I don't want to access the program from a different location, I want it to be physically there.. This means YOU can access it from the DIFFERENT location physically by clicking where Windows processes will not since the registry entries, etc. per the installation process point to the C:\Path\~. Your question is to move them to a different location which you can do and then create the link, and YOU can access it from the DIFFERENT / NEW location. – Pimp Juice IT – 2015-12-30T03:39:33.590

@JorisGroosman Just spotted your comment of "Particularly fixing registry entries" - with the symlink method you don't need to change anything else. Cut and paste the program folder wherever you want it to be, create a symlink from the old location to the new. Every registry key stays the same and all old paths are still intact, but the program is now in a new place. Registry keys have absolutely no defined structure to them from program to program, I could create a program that stored it's registry keys under Microsoft if I wanted. No software can trace every key to it's relevant program. – Jonno – 2016-01-11T17:40:44.980

Answers

43

If you're not too worried about the actual folder structure existing, you can move the folder anywhere you want and use a directory symbolic link to point to the new location (for example, if you have limited space on your system drive). The typical command line for this would be

mklink /d C:\Path\Of\Original\Folder D:\Path\Of\New\Folder

I am not aware of any tools that will actually move the folders and re-route and links and registry keys, as there are so many programs with constantly updating versions it would be very difficult to maintain.

EDIT: A request was made to add how to correctly delete the directory symbolic link. You do need to be careful with this as the wrong command could wipe the folder you have linked to.

The best methods are either:

  • Delete the directory symbolic link through Windows Explorer. This will keep the target folder intact and only remove the symbolic link.

or

  • Use the command rmdir C:\Path\To\Symbolic\Link

Do not use the del command on the location of your directory symbolic link, as the del command is used to remove files. Doing this will follow the path to the destination directory, wiping out any files matching your criteria!

Jonno

Posted 2015-12-27T14:55:30.113

Reputation: 18 756

5This requires that the partitions be NTFS (which they probably are). FAT32 does not support symbolic links. – Sydius – 2015-12-27T23:49:24.410

9

Building on Jonno's answer, If space is your concern, the symlink is your friend. there is a piece of software from back in the days when steam didn't let you install games outside the steam installation folder called steammover that automates the symlink creation, you point it to the folders containing programs you want moved (e.g. C:/Program Files) and a destination (e.g. D:/programs) and you can move specific files.

Aaron Ladd

Posted 2015-12-27T14:55:30.113

Reputation: 459

7

Moving/Installing those applications to another location can have unintended consequences.

There can be an entire set of assumptions the developers use that break if you move the program. For example, a application that installs itself on the user profile would expect full write access to it's install folder, or even worse use relative paths based of where it expects to be installed.

So the easiest solution (like others have said) is to just use a junction point to move the files wile letting the application thinking it's still in it's originally installed location (it will leave a "ghost" folder behind).

Anything more then that would require a per application analysis to see if anything breaks from moving it around, there's tools to help that analysis like the Windows ADK (Assessment and Deployment Kit) but it's not automated.

daf

Posted 2015-12-27T14:55:30.113

Reputation: 142

5

The easiest way I've found to do this is to use Link Shell Extension. It's an explorer shell extension that lets you manage symbolic and hard links without dropping to the command line.

In your case, you'd locate the folder that the installer forced you to use, move the files to the location you want them, right click the new location and choose "Pick Link Source", then go back to the original location and choose "Drop Link As..." and pick Junction (or Symbolic Link, though I usually use "Junction" because some applications will not follow the Symbolic Link).

I've used it for many of these kinds of scenarios -- often an application will impose a forced location for config and cache files (like %appdata%\MyProgram). On an SSD, if these files are written to constantly, it can reduce the life of that drive so I'll use this to move those cache files to a spindle drive, reducing performance slightly, but reducing wear on the SSD.

mdip

Posted 2015-12-27T14:55:30.113

Reputation: 184

1

There is no universally guaranteed with to do this. There are multiple ways that different programs, particularly programs written in different languages, can check where the executable file is stored. Things like Symlinks may commonly be effective, but always know that there may be some exceptions that will break. If you move a file (such as the executable, but possibly some other file), some programs may expect to find a file in a specific location, and may behave differently (perhaps especially likely to just break entirely) if things are not as the program expects.

This is true for multiple operating systems.

TOOGAM

Posted 2015-12-27T14:55:30.113

Reputation: 12 651