Thanks, Bob.

I still don't really understand why the Class table is being
de-emphasised. I suppose it's possible that if you advertise a Class -
say for a feature that is installed on first use - that that feature
will be installed if some third-party program references it, which could
surprise the user.

Worked example: say Word provides its automation object model through
the Class table. The user decides to select Word to be installed on
first use. They then install some other program which can optionally
automate Word. That program checks which version of Word is installed at
startup. On starting the program, it loads Word's automation object
model. If the class wasn't advertised, this would simply fail. However,
since it _is_ advertised, Windows Installer gets invoked to install Word
- but the user didn't actually want to use Word at all, and whatever
task they did want to do gets delayed due to the installer being
invoked. Potentially, worst case, the user will be asked to find source
for the feature that needs to be installed and if they can't, whatever
task they did want to do would fail.

(I actually have nearly this experience with Visual Studio's deployment
projects - when I try to build the installer I'm looking to move to WiX,
I get Windows Installer trying to install/repair SQL Server 2005 Client
Tools, then it fails and complains because I'm running as a limited user
and it can't write to Program Files or HKLM, though thankfully at that
point the build does continue.)

For shared components you have to pick one Feature to be installed when
the Class is invoked through an advertised shortcut, and that might lead
to further user surprise, which is never a good thing.

Is this a plausible scenario or have I misunderstood something?

-- 
Mike Dimmick

-----Original Message-----
From: Bob Arnson [mailto:[EMAIL PROTECTED] 
Sent: 25 September 2006 18:05
To: Mike Dimmick
Cc: Johan Appelgren; wix-users@lists.sourceforge.net
Subject: Re: [WiX-users] Installing COM components

Mike Dimmick wrote:
> You can use the Class table to take away some of the pain of creating 
> the registry entries, although Rob Mensching has some reservations 
> with this apparently. I'm not quite sure why. The SDK currently calls 
> out the Typelib table as having problems with rollback. Using the 
> Class table creates an _advertised_ class, which I believe will 
> potentially run repair when instantiated if the component's 
> dependencies are the wrong versions (it also allows an administrator 
> to advertise the package; when the class is instantiated it will be 
> installed if only advertised, not yet installed -
install-on-first-use).
>   
It's important to note that you can use the WiX strongly-typed elements
(e.g., Class, ProgId) to create both COM advertisements and plain ol' 
Registry table entries.

--
sig://boB
http://bobs.org



-------------------------------------------------------------------------
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
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to