In the past we have used the native .NET installer projects to distribute our
projects, but these have some limitations, and require an arkane understanding
of MSI files, and ORCAS if you want to do more complex things. So it was time to
look at some 3rd party tools to simplify our lives.
Windows Installer 6
I downloaded the eval copy of the Professional
version, and was somewhat suprised at the interface when I fired it up. Yes it
has lots of bells and whistles, but it’s not at all intuitive. Not starting out
well. The project I was working with is the first iteration of a simple
.NET 2.0 client-server app. No ArcObjects. No COM. About as simple as it’s ever
going to get. Ideally, I wanted to create two installs – one for the
client application, and a second that would install SQLExpress and build out the
database with tables and stored procs. I started with the client
application. Since it’s just .NET 2.0 – no third party controls etc, I
had expected this to be a 2 minute task. The only wrinkle was that it needed to
update the connection string in the app.config file during the install. After
some digging I found that Wise has a SQL connection dialog, and puzzled out how
to get that into the config file. Great! Next, we just need to add a
launch condition that states that the .NET Framework 2.0 is installed. Simple.
Not quite. Somehow Wise simply left this out. You can create a condition for 1.0
or 1.1 but not 2.0. I was stunned. Do they live in a cave?
.NET 2.0 has been out for
5 months now, and has been in public beta for how long? Did they just assume
nobody would switch over?
From an evaluatin standpoint, this sort of issue is pretty good as you get an
idea of what their community is like. From the launch page of the Wise interface, I followed a link to their “newsgroups”. Turns out, they no longer have newsgroups, but forums. Even better. But the page they send me to simply says the forums have moved.
Turns out I’m not the first person to
notice this particular problem. And yes there is a hack to get it to work (set 1.1 as the launch
condition, then go into the “tables” – recall that an MSI is a database – and
change the value to the 2.0 value), however it never worked for me. Nor did a
slew of other hacks. Either the package always thought .NET 2.0 was installed, or it
never thought it was. Not very useful.
on the launch condition, and simply sent out the installer to the client and
told them they need .NET 2.0 installed first. The really ironic part is that with .NET 2.0, you can create a click-one
deployment in about 3 seconds, and it handles the launch condition flawlessly,
and automatically installs the framework. I did not even try to create the
second deployment to install SQL Express – I just wrote up the steps in a
document, and moved on. Summary:
While I’m sure you can do some really
cool complex installs with Wise for Windows Installer, it appears that you can’t
do simple things easily. And since the whole reason I’m considering a 3rd party
installer is to make my life easier, Wise is not for me. Next up: InstallShield. If that can’t simplify things, then maybe we’ll just get burly and use Windows Xml Installer, which is complex, but you can do just about anything, and its open source. Had any great installer experiences? I’d love to hear comments…