Tell me more ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am building an application that will, hopefully, be used by developers.

To be appealing to developers I want it to be lightweight, small in size, and with no installation (for example, XCOPY deployment). I trust more an application without installation to not put garbage in my registry, to be lightweight, etc.

My friend thinks the opposite: An installer puts shortcuts on the desktop / menu for me, it ensures cleanup via the uninstaller, and seems more official.

What is the better way?

share|improve this question
6  
I don't really care how it's installed so long as it does the job – David Heffernan Jun 20 '11 at 20:50
68  
Without getting into this rather pointless discussion, your friend is missing two vital points: 1: with no installation, there is no cleanup to be done, and so the uninstaller isn't necessary, and 2: I can't remember the last time I saw an installer that actually uninstalled everything correctly, without leaving garbage files, registry entries or whatever else around – jalf Jun 20 '11 at 20:51
16  
jalf. You are incorrect, no installation does not imply no uninstallation required. The software can easily create registry entries, config files or data files (not in the Program Files directory) that the user would need to search for to delete. A good uninstall should delete these for you. – Craig Jun 20 '11 at 23:54
2  
No installation is generally nice. – user1249 Jun 21 '11 at 7:50
3  
Explicitly mentioning an OS might a good idea here (although I can infer that you're talking about Windows). Not all OS' have these problems. ;-) – deceze Jun 22 '11 at 12:38
show 3 more comments

migrated from stackoverflow.com Jun 20 '11 at 20:51

16 Answers

up vote 69 down vote accepted

I think keeping your application contained in a single directory, if possible, is a great thing to do. If that's the path you're going down (which it sounds like it is), you can do what Notepad++ does. They offer a ZIP/7-Zip file download that allows the programmer to install the application as they see fit. They also offer an installer package that will create shortcuts and whatnot for you, if you prefer that method.

Offering a choice on this will make your download page a little more confusing, but could potentially keep more people happy (as evidenced by the opposing answers you're receiving).

share|improve this answer
2  
offering two choices is good, but that also means two choices have to be maintained. – FrustratedWithFormsDesigner Jun 20 '11 at 20:58
19  
Agreed, but automating a build to a zip file should be trivial. – Chris Breish Jun 20 '11 at 20:59
2  
@FrustratedWithFormsDesigner: If you're already automating your build process, how is it difficult to add "zip file" and "installer" packages to the existing process? – greyfade Jun 20 '11 at 23:22
1  
+1 for best of both worlds, and yes your packaging process should be automated such that producing both of these should be trivial. (the first time setting this up might be nontrivial) – Chris Marisic Jun 21 '11 at 12:28
show 1 more comment

You say you're targeting developers. I'm a developer.

I lost interest in constantly hacking the same trivial nonsense over and over again a long time ago. I'd rather use a thing than have to spend a bunch of time figuring out how to install it.

This computer is not mine, it gets replaced whether I like it or not every year or so.

No matter what you do, practically every computer that exists is going to spontaneously explode in a failure cascade some day and require a complete reinstall. With automatic updates it can happen over the weekend. My favorite Monday mornings are when I come stumbling into the office, half asleep, push "ON" and watch the system self-destruct in front of me.

So, I don't care if your installer leaves crap behind. Everything else I use does. What I do care about is not having to waste my time doing a bunch of crap that should be automated...like copying files from point A to point B and creating registry entries, shortcuts, etc...

share|improve this answer
19  
I would prefer that software don't leave crap behind. I buy computers with 3 year warranties, and I take good care of my Windows installations. I don't like having to reinstall or restore backups. When I uninstall something, I want it gone. – Rei Miyasaka Jun 20 '11 at 21:09
4  
@Rei - OK, that's good for you I guess. I'm just saying I have more important/interesting things to worry about than messing with something that could have been automated and no real incentive to try. I don't even like working without an installer with my own creations. – Crazy Eddie Jun 20 '11 at 21:19
2  
Solution to the blowup and reinstall issue: Develop in a vm, take occasional backups, keep the host machine relatively lean as far as what you put on it (chrome, skype, editpad pro, winpslit revolution, clipx, keepass, and digsby for chat are mostly it for me) – George Mauer Jun 20 '11 at 21:37
1  
@Eddie @Shadur I don't mind installers; my point is that I want them to be good installers that clean up after themselves. – Rei Miyasaka Jun 21 '11 at 7:56
4  
<smug>And this is one of the reasons we don't use Windows any more. – Tom Anderson Jun 21 '11 at 10:12
show 6 more comments

I think if your target is other developers, I would absolutely go the "no install" route. I can make all the "shortcuts" I need. There is so much garbage for the Windows platform that spews files and keys all over the place, that I would be far more likely to try something that, like the blessed PuTTY, you just put in one place and go.

share|improve this answer
show 1 more comment

Absolutely yes! Exists in the wild in many flavors, but Eclipse is a great example. There is so much joy for both you (writing documentation) and your users when the complete installation instructions are:

  1. Unzip/decompress the download
  2. Open up the resulting folder and run "awesomeprogram"

And the complete uninstall instructions are:

  1. Delete folder

Feel free to copy that text, I won't charge you for it :)

This approach also is one with all that is right and natural in the universe because it is very normal for computer users to apply the following concept (it works for every spreadsheet/.doc/.pdf/.jpg/.mp3 they've ever worked on):

"If I want something, I copy it from someplace and put it on my computer. If I want to get rid of something, I delete it."

You might want to do an "export settings" for people who want to uninstall/reinstall (who the heck does that on a regular basis for a single user anyway?) if you have preference files. But then again, if someone is uninstalling, they probably don't give a rip about ever using the software again, no? :)

share|improve this answer

Just a minor two cents: installing software via Group Policy is much much easier if you go ahead and conform to Microsoft's .MSI format.

It's not something that programmers commonly think about, but having to roll your own MSI for someone's random binary is a pain for system administrator, and might get your application skipped for one in more friendly packaging.

share|improve this answer
7  
If developers are the target audience, the software is most likely not installed centrally. – user1249 Jun 21 '11 at 7:52
show 4 more comments

I think it depends on the tool. One of the nice things about no installation is that the software can be used on multiple computers off of a USB drive which is great and super useful in certain situations (e.g I'm trying to see if there is an easy solution to get cygwin to run on a USB drive without modifying the registry). On the other hand, if it is a program that requires a lot of configuration, then I think it is more user friendly to handle that through an installer instead of having to make people figure it out in the settings of the application.

share|improve this answer

ClickOnce might be a good compromise in your case: configurable automatic updates via website, no registry entries or other system-wide alterations etc., no UAC prompt, installations go under \users\rei folder rather than \program files. It's a lot more non-invasive than an installer.

share|improve this answer
show 1 more comment

I am always more suspicious of installers. Wizards are annoying and I can create a shortcut myself thank you and it probably won't go where you think it's going to go. That being said, an installer that details exactly what it does and maybe even leaves behind a README so that I can undo stuff manually later is not that bad.

share|improve this answer

It's very difficult to get your mind around the idea that many users are literally incapable of installing software of any kind on their own computer. You can forget about asking those people to do an XCopy.

Which is easier, deploying software that requires an installation on 100 computers, one computer at a time, or deploying a web application to one computer, and letting all of the users hit it with a web browser?

share|improve this answer
6  
I think the assumption here is that developers are smarter than the average user and can use the command line. Having watched 90% of my classmates at college freak the hell out when asked to use java instead of visual studio....I have to say this is probably a poor assumption to make. Was a long while ago and I'm still disturbed by it. – Crazy Eddie Jun 20 '11 at 21:04
show 1 more comment

They both have pros and cons. It depends on what you want to do, and the image you want your product to have.

It's not like you have to do one or the other to be successful. Eclipse and Visual Studio are both successful, although they take different approaches (also, IntelliJ IDEA).

Conclusion: It depends on what you are trying to achieve, and the image your want your product to take on.

share|improve this answer
3  
Vauge answer much? – bdonlan Jun 20 '11 at 20:51
2  
Also some things are nouns and you can do verbs with them. – George Mauer Jun 20 '11 at 20:57
show 4 more comments

No install is fine for technical people (like the developers you are targeting) as they should know know to create shortcuts themsleves.

The times you need an installer is when you need to:

  1. Create registry entries - in some cases normal users cannot create registry entries so you can prevent the installer from running unless it has admin rights (or elevated privileges)
  2. Register components (OCXs need regsvr32 to run, .NET assemblies may require registration to install into the GAC)
  3. Install fonts
  4. Install IIS
  5. Plus a whole host of other complex stuff (these are just some examples)

These can't be done with XCOPY deployment.

share|improve this answer

For small projects (Notepad2 and SqlDbx come to mind) unzipping is the way to go.

It provides a great way to try out your app. And if I find myself using it a lot I can unzip it to my programs folder.

share|improve this answer

For a single-executable command line developer tool (Fossil leaps to mind) installation can be as simple as asking the developer to manually copy it to a folder on their path. A developer that uses the command line already, must have a folder on their path where they customarily drop home-grown utilities, perl scripts, batch files, and the like.

However, the moment there is a requirement for a specific supporting platform (aka JVM or .NET) or dependencies on other tools, or lots of files that need to be kept in a specific arrangement of subfolders, then not providing an installer is just asking for trouble down the road.

Note that the GnuWin32 project providing native Windows ports of many common Gnu/Unix command line tools always provides an installer. All of the individual utilities install into a common folder in Program Files, with subfolders named bin, lib, src, and so forth. Each of the installers takes responsibility for making sure that the bin folder is still on the path, and is careful to not put it on the path a second time.

share|improve this answer

I like a zip file I can just unzip and use, as that allows more than one version of the software to be used with ease on the same computer.

There is no reason a MSI file could not be included in the zip file – the complete process of creating the MSI file and the ZIP file can be automated by your build process, so once scripted is not a big overhead.

share|improve this answer

I prefer no installation. It takes the control away from the installer and lets me do it my way. I can decide to place small utility programs in a folder in the path or wherever. That being said, I hate portable applications that more or less "plant" themselves in their location by producing all sorts of configuration files and intermediate output files in the same directory.

share|improve this answer

As pointed out by many, no-install is an awesome thing to have. Programmers can just download, extract and verify if the tool is useful. Just like we do for Eclipse. But keeping apart the fast adoptation part having an installer has its own advantages.

  1. Packaging your dependency together (that is, .NET 4.0 or .NET 2.0 or local JVM).
  2. Asking user inputs (like how much RAM do you want the tool to use).
  3. Versioning (which is an important state for any product life cycle).
  4. File extension association.

There can be more, but I guess I made my point. Maybe try an alternate approach (like PuTTY) give both a copy-paste and installer version.

share|improve this answer
show 3 more comments

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.