Ok, now I'd like to share my experience with InstallShield automation. This no doubt get's me in trouble since people don't like being called out but here goes anyways:
I've done extensive ( e.g. C# Linq to XML NAnt tasks that parse WiX fragments and build up InstallShield projects and working as part of a build team that does over 100,000 automated builds per year) work in this area and the main problems I find are:
1) The Automation interface is based on COM and isn't very easy to use with C#. It doesn't feel like the .NET base class libraries, it's clearly something from a decade ago.
2) The way it's set up, there is no easy way ( short of reflection ) to write code that will work with multiple versions of the automation interface. You can't just call into a factory and ask for the implementation for any given version of InstallShield. They show examples in VBScript where you just change the ProgID but any build engineer writing automation in VBScript should be summarily fired.
3) If you spend any amount of time using the automation interface you'll find that it has feature gaps galore. At this point you are stuck manipulating the XML directly or saving it in Binary format and using an MSI interop to directly update the tables.
4) Another annoyance is that Product Configurations and Release names are case sensitive and that if you pass in an invalid PC/Rel it won't throw an error, it'll just instantiate it for you and then build with incorrect results.
5) I've never been able to get the TFS SCC integration to work correctly. I always get a C++ ChatterAbstractionLayer error ( or something like that. ) Also, as of the last time I tried, InstallShield doesn't handle more then a handful of ISM/ISPROJ's in a single solution. In order to have dozens of merge modules build in a single solution I had to author the SLN file by hand and pass it off to msbuild. Opening it in VS would fail with an error. This isn't a huge deal to me as I've never really liked the new Visual Studio style UI over the old DevStudio style UI but I think it's worth noting.
Finally, I'd like to say if you read this far you should give yourself a pat on the back for caring about build automation. My observations from over the years lead me to believe that far to many IS
I've also had huge issues using IS automation. I ended up having to use VBScript to do a decent portion of it (I hope no one fires me!) or it just wouldn't work properly.
Maybe they've fixed some of these issues, but after the horrible support and yanking the SAB license I don't think our company is going to give a dime to IS ever again. I have a feeling we'll be going to WiX once we decide that IS is too outdated.
Post a Comment