Click here to Skip to main content
15,902,445 members

Survey Results

What do you use for authoring installations?   [Edit]

Survey period: 23 Feb 2004 to 29 Feb 2004

Writing the application is sometimes only half the battle. (Sent in by Gavin Greig)

OptionVotes% 
InstallShield (scripted)1239.99
InstallShield (MSI)17814.46
Wise (scripted)504.06
Wise (MSI)534.31
Visual Studio (MSI)29423.88
Installer VISE70.57
InnoSetup17514.22
NSIS13510.97
XCopy383.09
We don't need no steenkin' installers12910.48

View optional text answers (66 answers)


 
GeneralControl or magic Pin
Anonymous18-Mar-04 3:05
Anonymous18-Mar-04 3:05 
GeneralInstallation woes (InstallShield *does* suck) Pin
Daniel Olivier5-Mar-04 20:43
Daniel Olivier5-Mar-04 20:43 
OK. This is a good subject.

Part of my work, with my former employer involved packaging and deployment (I was the "build" guy).

A colleague had already created a package with InstallShield (v.7-ish), investing 2-3 months.

Mistake #1: I decided that I didn't really want to learn a new scripting language and that I would rather convert the project to basic MSI. Unfortunately, the payoff was very minimal... I think that the whole thing was a bit more streamlined and compact, but in the eyes of my employer, the payoff was not tangible... learning InstallShield and then delving into MSI took me something like two months... <cough> (shame).

With the InstallShield scripting, there was some weird logic implemented in order to "remember" the order in which the dialogs were being presented to the user (I think because we had to present different dialogs based on user choices)... just so that the Back button would work correctly (so there was an incentive for me to clean it up).
But even with MSI, you're pretty much stuck with the same problem. If, for instance, you wish to change the order in which dialogs are presented, you must modify the behavior of both the Next and the Back buttons of all the dialogs that are linked to the change, either at the source or destination. This problem is compounded if, for instance, there are multiple dialogs that may be invoked depending upon a condition. You wouldn't expect it to be so complicated since conceptually, it's so simple (the discrepancy is huge).

So I'm glad I got rid of the weird scripting, but now I'm also stuck with a few little custom actions that are necessary to populate an XML configuration file (values drawn from the user's choices). Simple. I must have used either JScript or VBScript (not my favorite, but...). For another task, I had to write a C wrapper around the C++ interface, and then call it from a custom action, ensuring that the signature and values carefully entered (i.e. pain).

And this is only the tip of the iceberg.

I think at one point, I needed to invoke a "deferred execution custom action" ('cause you can't invoke the DLL function until the DLL has actually been copied to the target)... there was some magic involved there. And then there were problems propagating the information (property value) to the DLL (had to do with the CustomActionData). (i.e. more pain)

Don't even get me started about "sequences".

Due to this and other problems, I was ultimately fired (I accept my part of the responsibility). This is my recommendation (for those who like their work)... gleaned from what I think I would have done differently:

1. I'm not ready to dump MSI entirely, but the only thing preventing me is that I think it's necessary if you require logo certification (not a bad thing even if you don't need it). I'm not even sure I understand the logic of why they (MS) developed it. Sure, if you put the data in the tables and if there are enough tables to describe all the data, you can write an engine that scans the data (and you can write ICEs, internal consistency evaluators, to validate), and then turns around and calls an API. I'm not persuaded that this is so much better than just providing the API, letting developers call it directly (works for all the other APIs).
During my investigations for the build system, I was impressed by Ant. One of the tasks developed for NAnt, the "MSITask" seemed to duplicate all the installers, but allowing the data to be described in XML format, which I thought was kind of cool. This provides an analogous method, which I didn't see enumerated as part of the choices of this survey. But even for Ant, the above logic is applicable: what is the difference between copying a file whose name is parsed from an XML data file or compiled into a program?

2. So I sold my sold my soul to Bill and I think that if I'm going to start programming in C# and DotNet, that I want to do everything with it (sure, when you get a hammer, everything starts to look like a nail...). The idea here is that, even though dialogs and other program resources are commonly described in resource files, that the MSI database approach is nowhere nearly as flexible and powerful as even the most primitive RC (resource compiler), such that, even if you elect to continue using MSI, you can still write your interface using your traditional (form-based) development methods. I think this is basically what is being suggested by ("Windows Installer for Game Developers", Dave Bartolomeo, October 14, 2003). My own solution, had I been smarter, would have been to write the UI in C# with forms, and (as is described somewhere) bootstrap the DotNet installation with the custom UI program and the final MSI installation (whose duties are now relinquished to just copying files and a few registration scripts and what not). No MSI UI!

Even if your installation procedure requires extensive configuration, this is best handled in-house. A custom UI allows you to put your best foot forward during the very critical initial phase of customer acceptance... for very little cost. After all, it's only a couple of screens and it probably won't be worse than the rest of the application.

Microsoft must dump MSI in favor of XCopy deployment (or one-click is good too) as soon as possible. I don't think they can pull it off, but in the mean time, perhaps VSI will keep things hidden well enough. Problem is... doesn't XCopy entail that every application will then duplicate all the common DLLs, making them run side-by-side, preventing them from being shared across processes (sure memory is cheap, but isn't this a cornerstone?). Also: InstallShield must die.

Disclaimer: you may have gathered… there are still a lot of areas where my knowledge of MSI/InstallShield is lacking, despite having studied them for some time (patching and upgrade scenarios, for instance). Take my advise for what it’s worth… and nothing more.


Suspicious | :suss:
GeneralMy own installer Pin
Galo Vinueza S.26-Feb-04 5:23
Galo Vinueza S.26-Feb-04 5:23 
GeneralRe: My own installer Pin
heXor27-Feb-04 6:53
heXor27-Feb-04 6:53 
GeneralDepends if the end user has admin rights Pin
Stephane Rodriguez.25-Feb-04 9:54
Stephane Rodriguez.25-Feb-04 9:54 
GeneralBest general purpose answer thus far Pin
Gary Wheeler25-Feb-04 6:31
Gary Wheeler25-Feb-04 6:31 
GeneralRe: Best general purpose answer thus far Pin
WillemM27-Feb-04 3:29
WillemM27-Feb-04 3:29 
GeneralWinZip self extractor Pin
Ravi Bhavnani25-Feb-04 5:34
professionalRavi Bhavnani25-Feb-04 5:34 
GeneralAny other way to install ? Pin
Bamaco225-Feb-04 5:27
Bamaco225-Feb-04 5:27 
GeneralMSI Pin
Michael P Butler24-Feb-04 23:18
Michael P Butler24-Feb-04 23:18 
GeneralRe: MSI Pin
Marc Scheuner25-Feb-04 2:17
professionalMarc Scheuner25-Feb-04 2:17 
GeneralRe: MSI Pin
Navin25-Feb-04 2:44
Navin25-Feb-04 2:44 
Generalwhat's wrong with .zip files? Pin
.dan.g.24-Feb-04 18:54
professional.dan.g.24-Feb-04 18:54 
GeneralRe: what's wrong with .zip files? Pin
Navin25-Feb-04 2:42
Navin25-Feb-04 2:42 
GeneralRe: what's wrong with .zip files? Pin
Daniel 'Tak' M.29-Feb-04 11:07
Daniel 'Tak' M.29-Feb-04 11:07 
GeneralWrote our own.. Pin
Navin24-Feb-04 10:03
Navin24-Feb-04 10:03 
GeneralRe: Wrote our own.. Pin
Gary Wheeler25-Feb-04 6:25
Gary Wheeler25-Feb-04 6:25 
GeneralRe: Wrote our own.. Pin
Navin25-Feb-04 6:51
Navin25-Feb-04 6:51 
GeneralWhy InnoSetup? Pin
Joshua Quick24-Feb-04 7:42
Joshua Quick24-Feb-04 7:42 
GeneralRe: Why InnoSetup? Pin
Kippesoep24-Feb-04 9:17
Kippesoep24-Feb-04 9:17 
GeneralRe: Why InnoSetup? Pin
Marc Scheuner25-Feb-04 2:14
professionalMarc Scheuner25-Feb-04 2:14 
GeneralRe: Why InnoSetup? Pin
Joshua Quick25-Feb-04 8:41
Joshua Quick25-Feb-04 8:41 
GeneralSuper PIMPin' Pin
Shog925-Feb-04 12:57
sitebuilderShog925-Feb-04 12:57 
GeneralRe: Super PIMPin' Pin
Gavin Greig25-Feb-04 23:08
Gavin Greig25-Feb-04 23:08 
GeneralRe: Super PIMPin' Pin
heXor26-Feb-04 0:18
heXor26-Feb-04 0:18 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.