Based on the information provided below, you'll likely want to look into
using the WixIIsExtension, WixSQLExtension, and WixUtilExtension (for some
additional service configuration and xml manipulation custom actions).
You'll need to decide to use either WiX 2.0 or 3.0. We're currently only
encouraging adoption of 3.0 for groups shipping in 2007 or later. This is
because 3.0 is under active development and you'll avoid the intermediate
bugs and schema changes associated with that if you stick with 2.0.
If you use WiX 3.0, you'll get some help with creating the initial
installation by using a tool called heat.exe. It can create WiX authoring
from type libraries, self-reg dlls, directories, web sites (partial support
- no app pools yet), and assembly RegistrationServices. A tool in WiX 2.0
performs similar functions - it's called tallow.exe. It does not support
type libraries or web sites (it was the predecessor to heat).
There has been a bit of a debate raging here lately about the Installer
classes. WiX and MSI actually have no formal interaction with the installer
classes and the WiX team advises against using them because they do not
provide a complete rollback experience in the case of installation failures.
Full disclosure however: there are some people that prefer them because they
are easy, but you'll often find that going the easy route in setup is a bit
more dangerous (as is the case here). Ideally we need to add some
additional logic to heat.exe to convert Installer operations into simple
Registry and File operations since that is the most robust and declarative
installation method possible with MSI.
Your plan for the upgrade sounds good. You would likely need some sort of
executable "bootstrapper" to save off the config settings, perform the
uninstall, and install the new MSI file.
Derek
_____
From: Rick Glos [mailto:***@gwi.com]
Sent: Friday, July 28, 2006 10:41 AM
To: ***@users.sourceforge.net; wix-***@lists.sourceforge.net;
***@quixotecorp.com; ***@bobs.org
Subject: RE: [WiX-users] Question: Migrating Existing Installer to
WindowsInstaller
First off. Thanks for the warm welcome.
Second. Thanks for the quick response and ideas by all three of you (Derek,
Richard, and Bob).
Answers to your questions Derek:
1. I've been told we usually release on a quarterly cycle although that
isn't set in stone (I just started working here in Feb '06 and assisted with
the release in Mar 06. Then rolled the Jul '06 release myself - the
complexity and difficulty is what led me to WiX, knowing that there's got to
be a better way than this spaghetti, procedural code.) Our next release is
targeted for end of November '06.
2. Our product is a help desk/support, task, and issue tracking
solution. The Visual Studio solution file actually consists of 14 projects
(any code is C# fyi). We install 2 services, 4 libraries, 3 websites and 4
sql server databases (as well as a couple unit test and database projects).
We interact with SQL, IIS, and Services.
3. I've done some investigation into the System.Configuration.Installer
classes and it looked promising. Not sure how that integrates with WiX
though (?). Our current installer is basically a custom rolled C# Windows
Application that looks like an installer. Using a wizard like interface, it
prompts the user for a series of configuration values (virtual directory
names, user name, password, sql server name, etc) and then runs an install
or upgrade method to do the work. It has to do things like create/upgrade
SQL databases, install aspx files, configure IIS (create an app pool, create
3 virtual directories), it also creates a user account (to run the app pool
under), joins it to a group, modifies the permissions on some files and
folders, installs and starts 2 services, modifies the web.config to store
and encrypt connection strings and so on... :-) [I know you mentioned in
your article that you are interested in this stuff]. It doesn't use
installer classes yet although I'm thinking that perhaps it should but I'm
not sure I understand how that integrates with the Windows Installer. Sorry
this paragraph is so long.
Based on what the 3 of you have said, it sounds like perhaps what I should
consider for the upgrade is save off the current settings/data (web.config,
sql databases, and any custom files they've added to the web sites) then
perform an uninstall. Then let the windows installer do an install and then
restore those settings/data and then they'd be go to go for future upgrades
using the windows installer. Does this sound reasonable? Would I be able
to do this within the context of the windows installer (msi)? Or would I
have our customers run a 'Setting Saver' app. Run the uninstall app. Then
run the new windows installer (msi) and then run a 'Setting Restorer' app.
That seems like a lot of steps but I'm thinking aloud here. Perhaps this
could all be handled within the context of the msi.
Anyway. Thanks for reading this far if you made it and thanks for the
advice. Hope to keep the discussion going.
Rick
_____
From: Derek Cicerone [mailto:***@winisp.net]
Sent: Thursday, July 27, 2006 11:52 PM
To: Rick Glos; wix-***@lists.sourceforge.net
Subject: RE: [WiX-users] Question: Migrating Existing Installer to
WindowsInstaller
First off, welcome!
There's some information that can help guide our answers for you:
1. When does your product ship?
2. What is your product (just curious)? More specifically, what does
it interact with (COM, services, MSMQ, IIS, SQL, etc.)?
3. How does the C# installer install things? Does it use the Installer
classes or manually set registry keys and copy files?
To answer some of your questions:
I'm not sure how the upgrade story would work - it all depends on how you
currently handle uninstall and upgrade scenarios. Is there something you'd
need to run to perform an uninstall on the previous version (would it be
managed code)? Once you get all customers on an MSI deployed setup it
should be easy to have them all use the same technology after that point.
Thanks,
Derek
_____
From: wix-users-***@lists.sourceforge.net
[mailto:wix-users-***@lists.sourceforge.net] On Behalf Of Rick Glos
Sent: Thursday, July 27, 2006 12:09 PM
To: wix-***@lists.sourceforge.net
Subject: [WiX-users] Question: Migrating Existing Installer to
WindowsInstaller
Hello,
I've spent the last two days getting familiar with WiX, the windows
installer, and going through the great tutorial on WiX
(http://www.tramontana.co.hu/wix/). I especially liked the article posted a
year ago
(http://msdn.microsoft.com/smartclient/default.aspx?pull=/library/en-us/dnwi
ngen/html/wixsetup.asp) that talks about doing the installer during the
development cycle and not at the end of it. We are badly in need of doing
this.
I have a question however. How do we migrate from our current installer to
the Windows Installer for existing customers?
We just released version 5.0 of our product. Spending 6 weeks updating our
installer (we have a custom C# installer). I can see our new customers
instead using a new .msi for later versions (5.5, 6.0, etc). What do I do
about our existing customers when they wish to upgrade? They've never
installed originally with a Windows Installer. How do I get them on the
same track?
Thanks for any advice,
Rick Glos