I discovered the other day that Visual Studio.NET 2003 comes with project wizards to help build installation packages for your applications: you can create MSI packages right from the IDE. I’ve made two new installs to handle SharpKeys 1.1 and SharpMT 2.2; it looks like the SharpKeys install is about 600KB smaller and SharpMT is about 500KB smaller. Hey, whatever makes for faster downloads, right? Read on for some specifics with this…
I’ve worked with installation procedures for over a decade now [I just heard all the engineers that read this moan in empathy] and install crap is always the most painful process of software development. Of all the code that you will ever write, installation will be the module that should be flawless in execution but it’s also the module that is most prone to disaster: you simply never know the exact configuration of the machine you’ll be installing on.
Newer tools like MSI packages and VS.NET wizards help this process; as a frame of reference, the old install was based of a working script I wrote in 1998, because I didn’t want to start from scratch – it’s that painful. One thing that I did add to the old script was an active check to see if the .NET Framework was installed before allowing my install to run. I did a check on XP to see if the MSI files did the same thing and it does, so I’m happy. What happens on a Windows 98 machine that doesn’t support MSI? I dunno, so they can download the EXE install version of SharpMT (SharpKeys requires Win2K or higher anyway) but if you’re running 98 or Millennium, it’s time to upgrade to XP. Windows has shipped with support for MSI file for a while now, and 98 is now at least six years old and it’s time to move onwards and upwards.
If everything goes well with the MSI script, that will replace the EXE install type, because the MSI is much easier to work with and makes smaller files to download; if you feel adventurous, please feel free to download the MSI versions of both applications… you’ll find them on the download pages of SharpMT and SharpKeys.