(keeping the thread on the list so future generations can benefit)

The source list is described here: 
http://msdn.microsoft.com/library/aa369795.aspx and here: 
http://msdn.microsoft.com/library/aa371859.aspx along with a few other places. 
It is the list of directories that Windows Installer will search to find the 
non-stripped version of the MSI for each installed product whenever it needs it 
(you get a ResolveSource prompt when that search fails). The list contains just 
the directories: the MSI's name is separately stored and can't be changed. When 
a product is uninstalled, the associated source list is automatically removed 
(along with all other metadata related to that product). The content of that 
source list, however, is not (so you would need to remove your cached MSI when 
your product is removed).

A component is Windows Installer's atomic unit of installation: it consists of 
resource(s) (files, registry values, etc.) that assume one identity (the 
keypath of the component) and one name (a GUID for cross-package use and an 
identifier for use within a given database) and the identity is used to 
determine the entire component's "health" and status: for that reason it is 
generally encouraged that you have only one file per component. Search for 
"Component Rules" to get a feeling for what you "need to know" to avoid 
creating packages that can't be upgraded/serviced/cleanly removed.

A feature is the fundamental user selection "grouping" of what is or isn't 
installed (in MSWord, for instance, a spell-check for any arbitrary language 
dictionary is a feature, as the program can run with or without it). That 
appears analogous to your use of the term "component" in your first email in 
this thread.

A product is a collection of features and components (any given component may 
be a member of more than one feature but must be a member of at least one or it 
could never be installed, removed, or even maintained) that can exist 
independently of any other product, is instanced such that only one can be on 
any given computer at a time. Products can be tied together in a family via an 
UpgradeCode which is typically used to remove old versions and prevent 
downgrading (overwriting a newer version by replacing it with an older one). 
Products are supplied via a package (an MSI database file) which provides the 
complete definition of an arbitrary instance of a product.

MSI can copy or move files (which includes renames) but typically it moves them 
after overwriting them. You can extend MSI via custom actions which you can use 
to rename your .ini files. WiX provides for the use of just about every feature 
available in Windows Installer (in fact, if one were so inclined, you could 
reauthor every other MSI file in WiX).

-----Original Message-----
From: i...@roadrunner.com [mailto:i...@roadrunner.com] 
Sent: Friday, June 18, 2010 12:11 PM
To: Blair
Subject: RE: [WiX-users] Can this be done with WiX?


---- Blair <os...@live.com> wrote: 
> > Windows Installer caches a copy of your MSI but it strips out any embedded 
> > cabinets. You'll need the original > source for repairs. I'll let somebody 
> > with more knowledge provide advice.
> 
> > I have heard mentioned that Windows Installer requires that the MSI package 
> > filename does not change
> >  (probably for Repair scenarios). You may want to make sure the 
> > bootstrapper EXE extracts the MSI packages
> >  using consistent naming every time.
> 
> Burn and some other bootstrappers deal with this. Another solution I have 
> seen is a custom action that caches the original MSI during the installation 
> and adds the cached location to the "Source List".

I'll check out Burn. But I would prefer to write my own bootstrapper. So I just 
need to know where to put the MSIs, how do I name them, and will the 
uninstaller know to delete them in the end? Where can I read more about that 
"Source List"?


> 
> > If I remember correctly, Visual Studio setup projects only allow a single 
> > Feature. Features and Components
> >  are a Windows Installer concepts. ComponentGroups and FeatureGroups are 
> > WiX concepts to help organization.
> > Make sure to follow the Component Rules.
> 
> Just to add to this: Most of the time, you want a single file per component. 
> You want to group your components into your features. You can select features 
> to install via either the command-line or the UI.

Silly terminology question - I know what a file is, I'm guessing a "feature" is 
something that the user can select/deselect, but then what's a "component"? Can 
I have features, with files inside?


> You could possibly "read" the customizations from the INI files and write 
> those out to the new INI files using built-in support in Windows Installer 
> for writing INI files (the built in support for reading INI files applies 
> only to INI files in the windows system directory) and a custom action that 
> reads the customizations from the previous INI files that you will apply to 
> the upgrades.

It is not that simple. At the moment the format of the ini files is not that 
stable and I want to keep the it open for me to change it as I see between 
versions. It will be very tricky to extract the customizations from one version 
of the ini files and apply to the next. So for now the only practical solution 
is to let the users worry about that. That's why I want to keep the old files 
around, so they can use them as a reference (not as an exact replacement). I'm 
not proud of the current system, but I don't have the resources to do something 
smarter.


------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to