13

What are the reasons some programs install (by default or even requirement) in C:/ directly, and not, like most, into the C:/Program Files/ folder?

Also, why is it so common that drivers are unzipped here? I've seen a lot of Intel, Nvidia, ATI, and Xerox folders in C:/-drives, even though to me it makes no sense at all to default there, and not onto the desktop or other user-specific folders. The files should not be required system-wide, as they are only temporary.

Thanks!

Edit: This question is not about specific software, but rather the reasons why it makes sense to deviate from the usual way. I thought it could have something to do with servers that should be kept running, but this is just a hunch based on no facts at all, why shouldn't a server program be running from C:/Program Files/, as long as all permissions are set. Same for possibly system-wide required files such as driver installation files.

Obviously this concerns Windows only.

migrated from programmers.stackexchange.com Aug 6 '13 at 18:47

This question came from our site for professionals, academics, and students working within the systems development life cycle.

  • 5
    Software installation is a major part of the development cycle, and if there are specific reasons one would deploy to areas outside of Program Files its certainly something developers may want to know. So I'd say its generally on topic. – GrandmasterB Aug 6 '13 at 18:24
  • I think MS-DOS applications installed themselves into C:\, but of course, Windows 10 isn't MS-DOS. – juniorRubyist Jan 6 at 4:18
10

There is no real technical reason to install something in a folder directly at c:\ or to unzip a driver in c:.
It is even against the Windows software design guides as published by Microsoft.

But:
In case the user needs to be instructed to manually run something in that folder it is convenient to be able to give the user simple instructions.
Like: Open "My Computer", open C:, open [folder] and then open program "setup".
By forcing the path to be fixed like this, it is consistent for all users, which makes life much easier for technical support.
This is very often the case for drivers-downloads. All major manufacturers seem to do it like that.

I have worked 1st-line helpdesk on occasion.
You won't believe how many users download something, unzip it, get a phone-call in between and 15 minutes later can't remember where on their harddisk they put the unzipped files.
Then they call the helpdesk or technical support.
If you are the person handling those calls you very quickly start to appreciate the logic of putting these files directly in C:\

  • 4
    Furthermore "C:\Program Files" is both locale and processor architecture (x86 vs. x64) dependent, whereas "C:\" is not. "% ProgramFiles%" is locale independent, but tends to confuse semi-savvy users, who don't think it looks like a real path, or don't get the percentage signs right. On 64-bit systems, it will still be the wrong path for 32-bit applications. – abstrask Aug 8 '13 at 21:38
  • in that case I think it's easier to extract the files to Desktop than C:\ – phuclv Jan 6 at 8:48
  • @phuclv Not really, especially with Windows 8 and later. The Desktop folder has very tricky filesystem permissions (especially when roaming profiles are used) that may interfere with an installer. It can also be re-directed to somewhere else (possibly a network or Storage Space location). And many virusscanners just don't trust your installer if you try to run it from the Desktop. As of Windows 10 AppLocker is another possible thing that can interfere with running stuff from the Desktop (in many companies it is setup to block running stuff from the Desktop). – Tonny Jan 6 at 10:20
6

What are the reasons some programs install (by default or even requirement) in C:/ directly, and not, like most, into the C:/Program Files/ folder?

Some developers don't follow standard conventions because they're either unaware or too lazy to do things "right." Many amateur developers will also hard-code paths into their software and/or installers rather than querying the environment (e.g., %TEMP%, %APPDATA%, %PROGRAMFILES%).

Also, why is it so common that drivers are unzipped here? I've seen a lot of Intel, Nvidia, ATI, and Xerox folders in C:/-drives, even though to me it makes no sense at all to default there, and not onto the desktop or other user-specific folders. The files should not be required system-wide, as they are only temporary.

As Tonny suggested, this is partly to simplify tech support, but it's also for your own convenience. When you extract the driver files to a location that's easy to find and accessible to all users, it's also easy for the system to locate the files again if you need to reinstall the drivers. Unfortunately, most vendors do not clean up old files, so you can end up with gigabytes of old driver packages that will never be used again. In some cases it may be more appropriate to extract them to %TEMP% or to the "All Users" account, and some vendors do exactly that.

2

Although 'most' software and configuration files can handle long directory paths, mixed capitalization, spaces and 'nonstandard' characters, they don't always and tripping up on this in the middle of your work-flow can be a minor hassle..

That Microsoft moved the Users folder to the root directory for Vista and 7 probably is a good indication of how many people prefer the root directory (default "c:") in practice.

1

Spaces. The reason is spaces.

There's a space in C:/Program Files. If you put that into a shell command as-is it will be interpreted as two separate arguments. C:/Program and Files. This is, of course, very easy to fix by simply quoting it, "C:/Program Files" or C:/Program\ Files, however, some programs manage to screw this up. To work around this problem, or to make it easier for lazy script-writers, programs are sometimes installed into C: directly.

Note that even if the program developer is diligent and escapes all his file paths correctly, it's possible that some library or some external script somewhere in the chain won't. Programs have so many dependencies that sometimes it's easier to just not use spaces than trying to get everyone on board.

  • and Length of the thing. c:\program files that's long to type.. can use tab but not if it's a parameter. And often directories within it tend to be long . C:\Program Files\Microsoft Visual Studio 10.0 infact %PATH% can't really cope with many long directories 'cos it has a limit of 2 or 4 thousand char – barlop Jan 6 at 4:04
0

You state that this concerns Windows only, but the software may be ported to/from other operating systems. Also, there may be differences between Windows versions, e.g. some translated versions of Windows also have this folder name translated, and the user can also change the location (e.g. instead of "C:\Program Files" I used "P:\" for a while). This can all be detected by the software, but it's easier to use a fixed location. Also in the case of drivers it could be necessary to know where the files are at a time that this information is not available from the OS.

0

Some older programs (DOS era, Win 3.1) could not accept spaces or "long" names in the path where they are opened from. This is pretty rare these days though.

Installers are supposed to get settings about the system being installed onto. These settings are supposed to include the location of Program Files directory among other details. Legitimate programs are packaged in installers that hook up to this info and keep track if you change from the defaults they offer.

On the other hand, drivers are designed to be handled by the operating system (Device Manager->Update Drivers) - if they were inside an installer the Device Manager would not be able to access them to install them. They are not flexible about where you put them.

At the consumer level, smart phones and tablets really challenge the idea that these should be end user concerns.

0

Some programs malfunction when they exist in a path with spaces (i.e. "Program Files"), which is why they are installed to the root of C:.

However, I'd bet that many programmers were lazy and just decided to plop their program into C:\ by default, just out of convenience.

0

TLDR; to separate important programs that other programs may depend upon from regular programs like games/browsers/anything else that you installed.

I think another big reason people choose to install to C:\ pertains to why they created the Program Files in the first place: to separate programs from the system files in the same way the Users folder is created to separate user files from program/system files.

So if the developer doesn't want the user uninstalling it because they don't remember what it's for (think packaged development items like audio plugins, or entire languages like python/ruby) then they install the program to the C:\ drive to sort of include it in the "system files" but also not putting in the Windows folder for obvious reasons.

I know this is an old post but its not locked and I had something to add.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.