- The installer comes as an executable created by NSIS (#5 above). This installer basically acts as a zip file, which extracts the contents to the user's application folder and runs the bootstrapper.
- The bootstrapper checks for the proper version of Windows, and .NET
- If the requirements .NET aren't met, the .NET redistributable installer can be run from the directory.
- When everything is good, a custom GUI setup program runs.
- The program gathers necessary information, injecting it into the MSI installer which is actually the same one created by Visual Studio.
- Then, any number of MSI installers can be run.
Sunday, December 14, 2008
Windows Installer Dilemma
My current task is to create an installer. The dilemma: Visual Studio doesn't provide a very robust Setup and Deployment project.
The options?
1. Create a WiX Project
2. Write a bootstrapper/custom GUI/etc. and P/Invoke msi.dll
3. InstallShield ($$$)
4. Wise ($$$)
5. Nullsoft Scriptable Install System
Here's what I've run into. WiX is pretty straight-forward and configurable. It is also open source, so you are able to rewrite the user-interfaces to fit your needs. The only thing is that the whole project is in XML, which means creating a dialog means setting values for buttons, labels, and textboxes manually. I've thought about writing a short program to create the dialogs for me, which I may still do. The problem I've found with WiX: I can't figure out how to refer to code (Assembly Info). I have found two possibilities: replace WiX version via PowerShell script and using MSBuild tasks. However, my development team wants to make the project as simple as possible. Using WiX already means that everyone will have to install WiX in order to build the file properly. This will only be a problem until the next version of Visual Studio, which is supposed to ship with WiX installed.
Option 2 is one that I got from Rick Brewster, of Paint.NET fame. Well, not directly from him. Scott Hanselman has an excellent podcast which details the Paint.NET installer. It is beautiful in it's simplicity. I'll leave a few things out, to tailor it to my discussion.
I'll start from the outside-in.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment