Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

On the Windows platform, most large applications come with their own installer which sets up folders under C:\Program Files, possibly some other places, and perhaps adding some registry keys, etc.

But there's still quite a few tools around that consist of just an .exe or maybe also a README and a .dll or two.

How should I install such tools? Directly in C:\Program Files? All in one subfolder under C:\Program Files? Somewhere under C:\Users\Me? Somewhere totally different?

Or maybe different approaches for the tools with just an .exe to those that also have other files, or maybe only the ones with .dlls need to be treated differenty ...

Is there any standard accepted way to do this? A "best practice"? If the answer depends on the Windows version, I'm using Windows 7.

EDIT

I forgot to mention when asking this question that I had just tried to manually create new subfolders under C:\Program Files like I thought I had done before, but Windows put up a dialog Destination Folder Access Denied. This caused me to think twice rather than just blindly click Continue.

Destination Folder Access Denied

share|improve this question
1  
I have such a little project, 2 exe, 1 hlp and 2 ascii textfiles, registry is not written to. I give it away as zip and let them extract to the directory they want to. –  ott-- Jan 11 '13 at 9:33
1  
What point of view are you asking this question from? Specifically, is this an application that you're writing, or are you trying to install somebody else's application(s)? –  Harry Johnston Jan 14 '13 at 1:28
1  
@HarryJohnston: It's for installing other people's applications. I downloaded several programs designed to view or edit very large files the other day and a couple didn't have installers. But the same applies for most command-line tools on Windows too, of which I have several. –  hippietrail Jan 14 '13 at 6:22
add comment

3 Answers

As far as I know there is no best practises. It is really up to you individually to decide how you want to handle it.

I tend to follow the same standard as any application with an installer. If it is an executable or library I would place in either in \Program Files\ if it is 64Bit and Program Files (x86)\ if it's 32Bit.

Data files I tend to store in my Users folders since they are normally specific to a user.

There are also applications like Google Chrome and Click-Once Applications that deploy to Users\AppData\, however these are not normally available to multiple profiles.

I prefer the first method because if I need to log in on another profile or as administrator I can still access the applications.

With regards to the permission warning. It is exactly that, a warning. It is simply to warn you from using the folder for the wrong reasons, however it doesn't prevent you from using it.

share|improve this answer
1  
I recommend not manually installing applications in the Program Files folder, because applications without installers are often either elderly or ports from other operating systems, so they don't always cope well with the space in the path. YMMV. –  Harry Johnston Jan 14 '13 at 1:31
add comment

I agree with already given answers to some point. But for really small programs (utils) I tend to put them to bin folder (in my case E:\bin). These programs are usually single exe file or my own python scripts. I add this folder to PATH variable so I can use these program from command line (which I tend to use quite a lot).

share|improve this answer
    
I did also consider making a generic C:\Program Files\bin for these types of tools and utilities. Thanks for the feedback. –  hippietrail Jan 11 '13 at 9:51
add comment

There's more than one approach, it depends on how your app reacts:

Considering that you'll install a small portable app, you should consider that the app's configuration xml/ini file may use the current \Program Files\MyApp\ folder, then, any standard user may not have the elevated rights to write to this folder. If you take this approach, you may save each user's config xml/ini to his \appdata\roaming\MyApp\ folder. To my knowledge, any user-specific portable app should be deployed to a user\appdata\roaming\MyApp\ folder, where the current user has elevated rights.

However, if your app uses the registry for its configuration settings, you could use \Program files\MyApp\ or \Program files (x86)\MyApp. Or better, if you deploy many small tools of your own, you could use a collective folder like \Program Files\HippieTrail Studios\My App1\ etc.

Personally i take the \Program files\MyApp\ approach with extra care to save any .xml/.ini/.sqlite/.txt to the app's \roaming\ folder.

share|improve this answer
1  
After some clarifications and comments, i'd say you should go with the classic C:\Toolbox\ approach (probably with elevated permissions). My answer above stands mainly for complete portable apps rather than command-line tools and standalone utilities. Also, if you want to bypass the nagging security window you may change permissions of specific folders to give more rights to standard users. However, this is not recommended neither by security guidelines nor for every tool in the bag, cause the system will eventually become "swiss cheese". –  liquidplace Jan 14 '13 at 8:42
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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