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