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

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.