Lately, I’ve been fighting with InstallShield (because there is no other better way to put it) to manage some basic installer functinoality. Actually, I’ve been learning all the various different facets of the software off and on over the past few months. I know that its used by a lot of different companies and seems to be powerful to do lots of different things, but I have to say that the experience has left me kind of sour.
I have to admit that a lot of the problems I have dealt with have been my own making. But there were others that were clearly a fault of InstallShield itself. Now bear in mind that I was using InstallShield 2009 Premier and not the latest version, so some of this may not apply to the newest version. An upgrade to 2012 is in the works but these issues are only in regards to 2009.
First of all, let me mention the project file format. It is a combination of binary and plain text. This makes it virtually impossible to do change revision on the project files. It makes it difficult for users to see what changes were made and how to undo those changes. I am dealing with Basic MSI projects and sometimes I can see XML based rules and sometimes I cannot. I haven’t been able to figure out why this is the case, but its very annoying.
Second, I’d like the mention the horrible user interface. I get the fact that they are trying to make it look like an IDE (and * have no problem with that). The tree node navigation is a little non-standard but I guess it is somewhat consistent. I am wondering what’s with the tabs though. Sometimes they are on the top and sometimes on the bottom. You also have the same tables (like string tables) represented in multiple ways in the application. The Features and Setup nodes mostly represent the same information except one allows you to manage components and one does not.
Next there is the issue of error reporting. Many of the errors can be cryptic such as when you have a file path which is too long. Sorry InstallShield, excuse me for having a long path on my development drive. It’s not like InstallShield creates long paths itself… oh wait a minute, it does! I had a particularly nasty error message while creating a chained installation package that read “build error 6151 (Cannot save target database)”. After days of research, I found out this error occurs when the installer package name is longer than 9 characters in length. Gee, InstallShield could have just limited the name in the IDE to just 9 characters but instead I get this cryptic message. (FYI: this has been fixed as of IS 2010).
There are a lot more flaws I could mention here, but I’ll save most of those for another post. One last point, when trying to build a release, if you have Windows Explorer or a command prompt open to one of the directories under the release folder, InstallShield shows you an error that reads “Cannot rename folder because it is currently in use”. If programs like Visual Studio can create builds when the folders are open, I don’t understand why InstallShield can’t.
As an aside, I’ve invested time in learning Nullsoft installer and WiX installer. My preference is to convert everything over to the WiX installer. WiX is fairly simple, straightforward, and all files are text-based and can easily be version controlled. Plus, an added bonus is that I don’t have to worry about licensing issues so multiple people can work on the same project at the same time (and the software is totally free). For now, I am stuck with InstallShield but I hope to be leaving soon.