When did installing software become so damn complicated. It used to be all you had to do was copy these files to this place and be done with it. Actually for the most part that’s all you still have to do. Of course Microsoft had to make it complicated in their MSI format. I’ve been trying to move from NSIS to MSI using WiX and I still can’t get the whole put this file there thing working.
With NSIS it’s pretty easy to do, but that’s about it. The “programming language” that NSIS uses is so primitive that it’s damn near impossible to do anything else. You have to find someone who wrote a DLL that does what you want and then you have to piece together 20 lines of code just to call a function. I know damn well the VM in NSIS is complete enough to support an actual language instead of that bastardized assembly like thing they use. It’s all way too much work to do something really simple, something that would be just a few lines of C code.
An installer will inevitably have to call other installers to install it’s dependancies. With NSIS you can at least do this, it’s not even possible with MSI. Apparently the shit will hit the fan and all hell will break loose if you try to install an MSI file from within another MSI file. Of course this was a feature Microsoft once touted then being able to do with MSI, and then they realized that it never worked right and caused all sorts of problems and forbade it’s use. Just like most everything in the Win32 API that has a DWORD reserved parameter that must be NULL for NT but 42 for 9x.
The newest version of MSI will let you chain MSI files which is nice if all of your install stuff is strait MSI, which is never the case. No-one distributes a plain MSI file; there’s always either a setup program with an embedded MSI file that you can’t get to, at least not without angering the computer gods, or there’s an MSI file with a bootstrapper. So many MSI developers had to use a bootstrapper that they gave it a name and formal definition. And why does one need a bootstrapper. Because MSI can’t run other installers and therefore install dependancies, so you have to do it in an external program.
Wow, four whole paragraphs and I haven’t even gotten to what started this rant. I’m trying to make an installer with WiX. Don’t get me wrong though, I have a lot of respect for the WiX guys, and the NSIS guys as well. But it’s bit a huge pain in the ass. WiX exposes you to the soft squishy underbelly of MSI; which is as great as it is terrible. If you’ve ever used a Windows box for more than just web surfing you’ll realize eventually that the soft squishy underbelly of anything that Microsoft does is a complicated mess. And MSI is no exception. I get the feeling if I were to sneeze too hard around MSI it would fall apart, cats and dogs would rain from the sky, start mating, and give birth to creatures God never intended to exist and for good reason. Then my eyes would pop out, dangle there for a second, and then explode. Not sure exactly why, maybe I left them open when I sneezed.
But, I digress; again. The problem of the hour is that my WiX files are generating warnings like:
warning: L407: you forget to snarfle the garflonk
So I look up L407 and if I’m lucky enough it tells me how to snarfle the garflonk, else I google till my eyes bleed. Eventually I manage to snarfle the garflonk. And then I get this:
error: L408: you snarfled the garflonk
So I can never get it to compile without errors or warnings. It seems that most of the files I have that compile with no errors, but with warnings go from anywhere between not installing properly to to failing horribly. Meanwhile the files that compile with errors and a few warnings in there for good measure seem to work just fine.
Just great. I think the compiler is just garbage in, garbage out and will only fail if something horrendous happens. Which isn’t an unreasonable thing to do. Then they rely on the ICE validation scheme to produce all the errors and warnings. But their implementation of ICE validation is teh suck.
Alright, I’m done. You can go away now.