Discussion:
[WiX-users] Question: Migrating Existing Installer to Windows Installer
Rick Glos
2006-07-27 19:09:02 UTC
Permalink
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/
dnwingen/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
Derek Cicerone
2006-07-28 06:52:27 UTC
Permalink
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
Rob Hamflett
2006-07-28 08:24:54 UTC
Permalink
When we moved over to MSI we had to deal with existing InstallShield installs. I got round the
problem by looking in the registry for the key InstallShield writes under
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
using a RegistrySearch. I then used the set property as the condition for a custom error telling
the user to uninstall the existing version. This might seem crude, but it does the job and each
customer only has to do it once.

Rob
Post by Rick Glos
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/dnwingen/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
------------------------------------------------------------------------
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
------------------------------------------------------------------------
_______________________________________________
WiX-users mailing list
https://lists.sourceforge.net/lists/listinfo/wix-users
Joe Kaplan
2006-07-29 02:25:14 UTC
Permalink
I used a similar approach to deal with migration of an app that was
originally built with non-MSI WISE and then did the same basic thing again
when my first MSI version was (mistakenly) installed per-user instead of
per-machine. AppSearch for traces of the old stuff and LaunchCondition that
prevents install until the old stuff is gone. Sad (especially the per-user
goof!), but basically functional.

Joe K.
----- Original Message -----
From: "Rob Hamflett" <***@snsys.com>
To: <wix-***@lists.sourceforge.net>
Sent: Friday, July 28, 2006 3:24 AM
Subject: Re: [WiX-users] Question: Migrating Existing Installer to
WindowsInstaller


When we moved over to MSI we had to deal with existing InstallShield
installs. I got round the
problem by looking in the registry for the key InstallShield writes under
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
using a RegistrySearch. I then used the set property as the condition for a
custom error telling
the user to uninstall the existing version. This might seem crude, but it
does the job and each
customer only has to do it once.

Rob
Post by Rick Glos
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/dnwingen/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
------------------------------------------------------------------------
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
------------------------------------------------------------------------
_______________________________________________
WiX-users mailing list
https://lists.sourceforge.net/lists/listinfo/wix-users
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
Rick Glos
2006-07-28 17:41:25 UTC
Permalink
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/
dnwingen/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
Derek Cicerone
2006-07-28 19:59:01 UTC
Permalink
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
Foster, Richard - PAL
2006-07-28 14:00:54 UTC
Permalink
Rick,

This is all completely off-the-cuff, so it may not be appropriate.

Presumably, your current installer puts appropriate entries in the
registry so you can do removal etc. You could use a RegistrySearch to
locate one of these keys and determine that the previous version is
installed. Based on that finding, you then execute appropriate "upgrade"
tasks, some of which may need to be handled by custom actions.

Personally, I think I would probably "uninstall" the previous version
(preserving the settings as necessary), then install the new one. That
way the upgraded installation would be fully managed by Microsoft
Installer, making it easier to do additional updates in the future.

Just my $.02. Hope it gives you an idea or two.

Regards,
Richard

________________________________

From: wix-users-***@lists.sourceforge.net
[mailto:wix-users-***@lists.sourceforge.net] On Behalf Of Rick Glos
Sent: Thursday, July 27, 2006 15:09
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/
dnwingen/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



* C O N F I D E N T I A L I T Y N O T I C E *
-----------------------------------------------------------
The content of this e-mail is intended solely for the use of the individual or entity to whom it is addressed. If you have received this communication in error, be aware that forwarding it, copying it, or in any way disclosing its content to any other person, is strictly prohibited. Peek Traffic Corporation is neither liable for the contents, nor for the proper, complete and timely transmission of (the information contained in) this communication. If you have received this communication in error, please notify the author by replying to this e-mail immediately and delete the material from any computer.
Bob Arnson
2006-07-28 14:38:55 UTC
Permalink
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
<title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
Rick Glos wrote:
<blockquote
cite="***@gwi-external.gwi.com"
type="cite">
<meta http-equiv="Content-Type" content="text/html; ">
<meta name="Generator" content="Microsoft Word 11 (filtered medium)">
<style>
<!--
/* Font Definitions */
@font-face
{font-family:Verdana;
panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
{font-family:"Arial Narrow";
panose-1:2 11 5 6 2 2 2 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin-top:0in;
margin-right:0in;
margin-bottom:6.0pt;
margin-left:0in;
font-size:8.0pt;
font-family:Verdana;}
h1
{margin-top:0in;
margin-right:0in;
margin-bottom:6.0pt;
margin-left:0in;
page-break-after:avoid;
border:none;
padding:0in;
font-size:20.0pt;
font-family:Arial;}
h2
{margin-top:6.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
page-break-after:avoid;
background:#DFDFDF;
font-size:8.0pt;
font-family:"Arial Narrow";}
h3
{margin-top:0in;
margin-right:0in;
margin-bottom:6.0pt;
margin-left:0in;
page-break-after:avoid;
font-size:8.0pt;
font-family:Verdana;}
a:link, span.MsoHyperlink
{color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{color:purple;
text-decoration:underline;}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:Arial;
color:windowtext;}
@page Section1
{size:8.5in 11.0in;
margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
{page:Section1;}
-->
</style>
<div class="Section1">
<p class="MsoNormal"><font face="Arial" size="2"><span
style="font-size: 10pt; font-family: Arial;">We just released version
5.0 of our product.&nbsp; Spending
6 weeks updating our installer (we have a custom C# installer).&nbsp; I can
see
our <b><span style="font-weight: bold;">new</span></b> customers
instead using a
new .msi for later versions (5.5, 6.0, etc).&nbsp; What do I do about our
existing customers when they wish to upgrade?&nbsp; They&#8217;ve never
installed originally with a Windows Installer.&nbsp; How do I get them on
the
same track?<o:p></o:p></span></font></p>
</div>
</blockquote>
MSI has support for automatically upgrading other MSI installations to
later versions. You won't be able to use that with your custom
installer but you can fake it. For example, use RegistrySearch or
FileSearch to locate old installations, then provide UI that prompts
them to uninstall first.<br>
<pre class="moz-signature" cols="72">--
sig://boB
<a class="moz-txt-link-freetext" href="http://bobs.org">http://bobs.org</a></pre>
</body>
</html>
Loading...