DTF, part of WiX, includes a complete MSI .NET library with support for external UI handlers.
-----Original Message----- From: Wilson, Phil [mailto:phil.wil...@wonderware.com] Sent: Wednesday, August 12, 2009 9:46 AM To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] External Installer App with UI quietly controlling MSIinstallation There are plenty of .NET libraries out there. The "worst" ones use MSI.DLL as a COM reference and it's often unreliable because those interfaces are basically intended for late-binding using the installer's scripting model. The best ones (like Richard's) are just C# source code with P/Invoke to the Msi** Win32 API calls. The Win32 API has all you need, it's a just a matter of getting the P/Invoke calls right. The approach I've worked on is to use Windows .NET forms to wrap one or MSI (silent) installs and make it look like one product in Add/Remove Programs. The entire thing is driven with an Xml file that lists the forms you want to show, the MSI files to install, and the feature tree you want to see with some info about which MSI file the feature is in. The point is to be able to manage a collection of MSIs as if it's one product. Somewhere in MSDN there's a C++ example showing use of MsiSetExternalUIRecord to do an install and collect records to show in your UI, also an example with MsiSetExternalUI. Phil Wilson -----Original Message----- From: Nick Ball [mailto:nick.b...@grantadesign.com] Sent: Wednesday, August 12, 2009 8:17 AM To: wix-users@lists.sourceforge.net Subject: Re: [WiX-users] External Installer App with UI quietly controlling MSIinstallation I'd be interested to hear how other do this too. I've been investigating this a bit, and I believe that certain installers, such as MS Expression and MS Office, I think, use WiX to generate MSI's and then hook it together with their own UI. I think Expression's installation UI is written in WPF. Is there a .Net library out there to hook into Msi calls? That would be very handy indeed. -Nick Hi, I'm planning to move all my installation UI from MSI into a Delphi application (because of custom controls, better feature selection presentation, custom driver installation, etc.) and I'm trying to find out, how to enumerate list of features available in the MSI and then how to install only features selected by the user (and optionally to custom folders). In MSDN article "Installing an Application" http://msdn.microsoft.com/en-us/library/aa369508(VS.85).aspx <http://msdn.microsoft.com/en-us/library/aa369508%28VS.85%29.aspx> there are only two steps: 1) call MsiInstallProduct("pathToMsi", "property1=value property2=value") 2) call MsiConfigureProduct("???", INSTALLLEVEL_DEFAULT, INSTALLSTATE_LOCAL) And I'd like to have better control over what is happening during the installation. My problems: 1) How can I get list of available features from the MSI package? (MsiEnumFeatures requires szProduct and not hProduct obtained from MsiOpenPackage) 2) How can I get szProduct parameter for MsiConfigureProduct? For MSI creation I'm using automatically generated GUIDs by WiX. 3) Is there any better way how to set installation parameters then using many properties on the "command line" parameter of MsiInstallProduct? Especially I would like to set the Feature states (about 20 modules x 10 languages) and target directories. 4) How can I implement installation modification? Using MsiConfigureFeature or MsiSetFeatureState? The uninstallation will be completely handled by MSI with no UI. Thank you for any advice Ondrej Zarevucky ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users