For the actual install, my external UI just does the MsiInstallProduct in 
silent mode after calling MsiSetInternalUI and gets the messages with 
MsiSetExternalUIRecord, and it just works. So in that sense there's no need to 
explicitly drive it. It's more accurate to say that the install drives you. The 
following design ideas seem to work fine here, so maybe they're useful to 
mention. 

Costing is as described, MsiDoAction on those standard actions, but it's my 
experience that you don't need to do the InstallValidate to get costing done 
(it turned out to be expensive and slowed the initialization too much) to show 
features costs in the UI feature dialog with MsiGetFeatureCost. 

I decided to make prerequisites separate from the MSI file. There's a separate 
prerequisites program that users put entries in to say what they need. The 
prevents launch conditions from triggering a silent failure - they're not in 
the MSI at all. It's just an ini file with sections that describe how to find 
what you're looking for, and what to say (or run) if it's not there. It's a 
data driven prerequisites program like some others. 

The forms shown are dynamic - there's a library of standard forms in an 
assembly, and the Xml lists the ones you want to show. Users can add their own 
if they like. They're loaded using reflection. I made the feature tree virtual. 
The Xml file describes what features you want and which MSI file they're in. 
The point of this was that some products are several MSI files, so presenting 
one UI, one feature tree, one progress bar, and one entry in Add/Remove 
Programs is what you end up with. 

I process the upgrade table in the MSI file(s) I'm installing to see if any of 
them are going to upgrade, so the UI can say it's an upgrade before the MSI 
installs start. Multiple MSI files get installed as a single transaction, that 
seems to work fine. One advantage of having a framework around all this is that 
you can always make an MSI log file! 

As you can see, it's possible to take an external UI a long way, so it's going 
to be about how much you want to put into it! 

Phil Wilson 


-----Original Message-----
From: Christopher Painter [mailto:chr...@deploymentengineering.com] 
Sent: Friday, January 29, 2010 1:42 PM
To: General discussion for Windows Installer XML toolset.; Wilson, Phil
Subject: RE: [WiX-users] External UI

I've always done basic msi / internal ui so maybe this is a silly question due 
to me never having done this before.

It's my (mis?)understanding that with an external UI handler I'm not in the 
execute sequence until I say go and that I have to drive the UI myself.   

What if in my UI sequence I want to gather registry data, evaluate launch 
conditions,  costing which features and components are going to be installed 
and then show my custom WPF dialogs  with  blocking messages or pretty feature 
trees showing what will be installed.

What is the pattern for that?  Sure, AppSearch and Costing is in the execute, 
is that what I somehow leverage?

Thanks in advance Phil!

Chris

Christopher Painter, Author of Deployment Engineering Blog
Have a hot tip, know a secret or read a really good thread that deserves 
attention? E-Mail Me


--- On Fri, 1/29/10, Wilson, Phil <phil.wil...@wonderware.com> wrote:

> From: Wilson, Phil <phil.wil...@wonderware.com>
> Subject: RE: [WiX-users] External UI
> To: "chr...@deploymentengineering.com" <chr...@deploymentengineering.com>, 
> "General discussion for Windows Installer XML toolset." 
> <wix-users@lists.sourceforge.net>
> Date: Friday, January 29, 2010, 11:31 AM
> Those actions are duplicated in the
> Execute sequence anyway, but I'm sure you know that so I
> must be missing something. What are you trying to do? 
> 
> Phil Wilson 
> 
> -----Original Message-----
> From: Christopher Painter [mailto:chr...@deploymentengineering.com]
> 
> Sent: Thursday, January 28, 2010 7:57 PM
> To: wix-users@lists.sourceforge.net
> Subject: [WiX-users] External UI
> 
> I'm playing with the DTF / WPF embeddedUI sample. 
> Being new at writing external UI's, something has me
> puzzled.
> 
> I've read before that when you run with an external UI that
> you basically have to drive the whole ui sequence
> yourself.  That said, what if I want to leverage say
> AppSearch?   I tried calling session.doaction
> but it says the handle is in an invalid state. I am able to
> get properties and query tables though.
> 
> I could understand that you might lose LaunchConditions but
> how do you go about doing all of the normal things like
> searches and costing?
> 
> 
> 
>       
> 
> ------------------------------------------------------------------------------
> The Planet: dedicated and managed hosting, cloud storage,
> colocation
> Stay online with enterprise data centers and the best
> network in the business
> Choose flexible plans and management services without
> long-term contracts
> Personal 24x7 support from experience hosting pros just a
> phone call away.
> http://p.sf.net/sfu/theplanet-com
> _______________________________________________
> WiX-users mailing list
> WiX-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wix-users
> 
> 
> 
> *** Confidentiality Notice: This e-mail, including any
> associated or attached files, is intended solely for the
> individual or entity to which it is addressed. This e-mail
> is confidential and may well also be legally privileged. If
> you have received it in error, you are on notice of its
> status. Please notify the sender immediately by reply e-mail
> and then delete this message from your system. Please do not
> copy it or use it for any purposes, or disclose its contents
> to any other person. This email comes from a division of the
> Invensys Group, owned by Invensys plc, which is a company
> registered in England and Wales with its registered office
> at Portland House, Bressenden Place, London, SW1E 5BF
> (Registered number 166023). For a list of European legal
> entities within the Invensys Group, please go to 
> http://www.invensys.com/legal/default.asp?top_nav_id=77&nav_id=80&prev_id=77.
> You may contact Invensys plc on +44 (0)20 7821 3848 or
> e-mail inet.hqhelpd...@invensys.com.
> This e-mail and any attachments thereto may be subject to
> the terms of any agreements between Invensys (and/or its
> subsidiaries and affiliates) and the recipient (and/or its
> subsidiaries and affiliates).
> 
> 
> 


      



*** Confidentiality Notice: This e-mail, including any associated or attached 
files, is intended solely for the individual or entity to which it is 
addressed. This e-mail is confidential and may well also be legally privileged. 
If you have received it in error, you are on notice of its status. Please 
notify the sender immediately by reply e-mail and then delete this message from 
your system. Please do not copy it or use it for any purposes, or disclose its 
contents to any other person. This email comes from a division of the Invensys 
Group, owned by Invensys plc, which is a company registered in England and 
Wales with its registered office at Portland House, Bressenden Place, London, 
SW1E 5BF (Registered number 166023). For a list of European legal entities 
within the Invensys Group, please go to 
http://www.invensys.com/legal/default.asp?top_nav_id=77&nav_id=80&prev_id=77. 
You may contact Invensys plc on +44 (0)20 7821 3848 or e-mail 
inet.hqhelpd...@invensys.com. This e-mail and any attachments thereto may be 
subject to the terms of any agreements between Invensys (and/or its 
subsidiaries and affiliates) and the recipient (and/or its subsidiaries and 
affiliates).



------------------------------------------------------------------------------
The Planet: dedicated and managed hosting, cloud storage, colocation
Stay online with enterprise data centers and the best network in the business
Choose flexible plans and management services without long-term contracts
Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to