What choices do I have about where to install software on Windows 10?

I am brand new to Windows (been a Unix user all my life), and the first thing I want to do is set up cmder. Following the obvious path has lead to download the mini package from cmder.net. But from there I'm not sure what to do. Apparently I can run the software from right out of the unzipped cmder_mini directory in my Downloads folder. But Downloads certainly is not the proper place for it live.

I tried copying the cmd_mini directory to Program Files, but I was asked to authorize the copy operation as an administrator, which to me is a red flag that I should not do something unless I really know what I'm about.

So where is the best place for me to put cmder? If there are multiple choices, what are the pros and cons of each? Preferably I would like a place that's global, so all users can use cmder.


So where is the best place for me to put cmder?

Windows is extremely flexible in this regard. As a personal preference, I like to create my own folder in the root of my C:\ drive simply labeled Programs (i.e. C:\Programs) and this would be my suggestion to you (creating a custom folder for general programs such as cmder).

If there are multiple choices, what are the pros and cons of each?

As mentioned elsewhere, Program Files, Program Files (x86) and C:\Users\UserName\AppData\Roaming are the typical installation locations for desktop software (non-Microsoft Store applications) in Windows 10 (Apps installed from the store are handled much differently).

  • Program Files is intended for 64-bit applications for general access but installation is restricted to administrators. Programs that try to store information here will likely have that data transparenently routed to a virtual store (the data will look like it's in a given folder to a program but it will actually be stored elsewhere).

  • Program Files (x86) is intended for 32-bit applications for general access but installation is restricted to administrators. Programs that try to store information here will likely have that data transparenently routed to a virtual store (the data will look like it's in a given folder to a program but it will actually be stored elsewhere).

  • C:\Users\YourUsername\AppData\Local is intended for MSI installations for a single user but typically doesn't require Administrative privileges. This folder is normally hidden.

  • Custom Folders may need their permissions changed to have truly "global" access. However, they can be created as paths without spaces, which can be a life saver when using *nix-style software on Windows (i.e. cross-platform or ported utilities). Paths without spaces also often do not require double-quotes to access on the command line (which can be another issue in certain instances).

Note that you should skip putting software in your C:\Windows folder or C:\ProgramData. These are relatively essential Windows folders and aren't meant for common storage. Likewise, while C:\Users\UserName folders function similar to Home directories, the files and folders in them are generally not executables (though they technically can be). The same thing applies to C:\Users\UserName\AppData\Roaming (with this folder being almost exclusively used for application settings).

Preferably I would like a place that's global, so all users can use cmder.

While Program Files or Program Files (x86) should be fine (programs installed in these folders are executable by everyone), I would still lean to a custom folder which Everyone (this is a Windows user group) has permission to access. As one other option, there is a special C:\Users\Public folder which has Everyone added into the permissions automatically whenever a new folder is created under that directory (or a subdirectory).


%ProgramFiles% or %ProgramFiles(x86)% is the 2 most common location in Windows 10 (for software 64 or 32 bit respectively). If your software have an installer component, those 2 locations are the 2 most common location and that folder is restricted to Administrator group so only user that has Admin rights can write to it (but anyone can read / execute from it) - similar to /usr/bin

There is no pros or cons either way, those are just the Windows default location. You can opt to put everything into your own folder structure if you wish (as per AppleOddity's comment above), and make sure only certain people have write access to it (to ensure users don't accidentally deleted them).

For Non-admin installation, it usually goes into your %UserProfile% (C:\Users\yourUsername) or sometimes %LocalAppData% (C:\Users\YourUsername\AppData\Local). And you can have a per-user specific installation (that is not available across the system).
One example of software installing into LocalAppData as default is Python (when doing non-administrative install)

Note: All the stuff that have %name% are variable that should already been preset into your Windows Installation.


Disclaimer: The following procedure is only my personal preference. I am not forcing anyone to do this.

So where is the best place for me to put cmder? If there are multiple choices, what are the pros and cons of each? Preferably I would like a place that's global, so all users can use cmder.

As a Linux-cum-Windows user, I do separate operating system and user files/applications in two (minimum) partitions or two separate drives. You can make a separate partition in HDD/SSD and save all applications in separate folders. Download cmder from it's GitHub release page. cmder is a combination of clink and ComEmu (you may also try these). If you have not separate partition/drive you can use your current log-in user folder i.e. C:\Users\user_name or %UserProfile%. This folder has full permission of that user.

Here I download cmder.7z file. If you've not 7ZIP you can download the zip file and open in File Explorer directly. Extract the 7ZIP file to D:\cmder folder with this command: 7z x -o"D:\cmder" cmder.7z. Change the folder name/path as you want. Now open that folder where you've extracted those files and double click on cmder.exe. cmder saves the clink logs in %LocalAppData%\clink folder. Make shortcut of cmder.exe in desktop/start menu/taskbar with right click on it.

Also you can copy the extracted folder in thumb drive and run cmder from there.