How to make rich GUI design fow WiX(Windows Installer XML) dialog? - wix

I am using WiX for make installer for any product. But I don't want to use default UI dialog which is using in WiX. How to improvise UI of a installer ? Is there any tool for designing UI for a installer with highly customize ?

Rich GUI is done in bootstrapper (aka. chainer). Chainers are made in tool called Burn (B is for bootstrap). I'm not all that familiar with it, but it was supposed to replace all the GUI available by Windows Installer that you can set in .msi files. This GUI is restrictive, and suitable only for simplest tasks, so the idea is to build .msi only as a database file that is to be consumed by Windows Installer to actually install something, and transfer all the GUI to bootstrapper.

The only thing I've come across is WixEdit, although it seems buggy and may have been abandoned. Still, it allows you to do basic UI design of the WiX dialogs.

I recently came across something called Wix#. It lets you make custom dialogs using a Winforms-like designer.
I know it's 9 years later, but if it helps, great.

Related

WIX Toolset I want the ActionData log to continue to be written as a scroll

If you add ActionData to the Subscribe event in Edit Control on Wix,
the line is written and erased. I want the ActionData log to continue to be written as a scroll.
Burn: WiX Burn allows you to write your own GUI to run your installer. You should be able to implement whatever you want in terms of GUI if you go down that path. However: installers run quicker and quicker as IO becomes better, are you sure this is time well spent? I'd say just use logging and be done with it? See my comments above for your question.
Burn Bootstrapper Appliation: There are not that many samples I know about for Custom WiX Burn Bootstrapper applications. Here are two:
Write your own WiX Burn setup GUI application (advanced)
https://github.com/rstropek/Samples/tree/master/WiXSamples/CustomBurnUI
Documentation: For documentation go online, or better yet open WiX.chm and locate section "Building Installation Package Bundles".
Here are two past answers that I would suggest you at least skim:
Ways to customize your WiX GUI (do read this one for overall understanding of MSI GUI)
Custom GUI - WiX Burn, Installshield Suite Project, Advanced Installer - their options
The Implementation of a custom GUI for an MSI depends on the core MSI API function MsiSetExternalUI function. It allows what Burn is doing - making a custom GUI. Throwing in an SDK sample too:
MSI SDK Sample: Some details on the MsiSetExternalUI function (serverfault answer). Concrete code sample to handle Windows Installer messages: https://learn.microsoft.com/en-us/windows/desktop/Msi/handling-progress-messages-using-msisetexternalui. This is MSI API calls direct - nothing to do with Burn as such, Burn makes use of these calls.
Links: Link overload - as usual - but here is an example of a custom Burn theme - as opposed to a custom bootstrapper application. This changes the look of the standard Burn bundle.
https://github.com/frederiksen/Classic-WiX-Burn-Theme
SQL Server named instance with Visual Studio 2017 Installer project (just for inclusion)
Native Windows Installer UI doesn't support this. You would need to create a custom UI handler to display it the way you want.

Package existing exe and folder with Wix?

I have a folder containing an exe file and a bunch of other files and a couple other folders. I want to be able to either:
A) Package this all into an installer
or
B) Package the exe and the other files into one singular exe file.
From what I've read, I'm not sure how I'd accomplish either of these with WIX, and I'm 99% sure it's not possible with WIX. Before I dismiss the possibility, I'd like to ask experienced people if I'm right or wrong.
If I can't use WIX, Is there a better alternative?
Thanks for all help.
WiX / Burn: WiX / Burn can indeed make MSI installers or setup.exe wrappers, but it is not trivial to use the toolkit for inexperienced people, and if you have never made a setup before there will be a learning curve. WiX quick start tips.
Burn: Burn is the WiX toolkit's bootstrapper / downloader / chainger tool which allows multiple MSI or setup.exe files to be run in sequence. It allows the creation of a setup.exe which wraps all installer components. Not trivial to learn and use.
Commercial Tools: Quick descriptions of commercial tools Advanced Installer, InstallShield, PACE Suite and some other tools can be found here: Brief descriptions of deployment tools.
And a more elaborate presentation: How to create windows installer.
WIX is highly configurable, and therefore requires some overhead to learn, but it is also very well documented, and gives pretty direct access to windows API's, which are also very well documented.
Packing Existing Files
It is 100% possible to package your files + dependencies into an installer with WIX.
There is a tutorial
Building and Packaging
There is also integration with Visual studio, allowing you to build and run WIX as part of your build.
If you are not using visual studio, that is fine, you can package things with WIX directly, here is
Another tutorial
GUI Installer Creators
If you are completely against the idea of creating your own WIX files and learning the tool set, Advanced installer is a pretty vanilla alternative with a nice GUI
If you really are against making any kind of installer, you can also zip everything up and distribute it that way, can possibly automate this using python.

Wix 3.6 bootstrapper to just launch msi

I am working with WIX 3.6, it has some great features to create managed bootstrapper application. I have managed to create a WPF ui for that. But, I dont want to create and handle all the events for the installer, our requirement is only to get an initial parameter like language selection from the user and proceed to the MSI. MSI already handles upgrade / uninstall and install checks.
Bootstrapper.Engine.Plan(LaunchAction.Install);
Is it possible to just launch the MSI without specifying the install / uninstall action codes?
Thanks!
Unfortunately, not today. The interface provided today is very powerful and you can control just about everything. That also means that you need to control a lot to get the core scenarios working. As we progress in the WiX toolset, we'll build up additional abstraction layers so that a custom BA is easier to write. The Burn functionality is still rather new and just needs time to have more code contributed.
If you want to look on the bright side, be glad that you'll be able to accomplish just about any required UI task because the interface provided is so expressive. :)

Why won't Windows Installer use the UI in the .msi file during removal?

Has anyone been able to get Windows Installer to use the InstallUISequence table during removal?
I started with an MSI file produced by the Visual Studio msi builder, decompiled it into WiX source code and handcrafted it, but I cannot get the installer to use my UI during removal. It insists on using a default UI provided by Windows Installer.
I have also analyzed several MSI files, and I have been unable to find one where Windows Installer will use the provided UI during removal.
I captured the msiexec logs during removal, and sure enough, Windows Installer appears to be ignoring the InstallUISequence table.
It seems that msiexec runs with minimal UI during removal. If I specify the /qf switch (use full UI) during removal, then Windows Installer does take the UI from the .msi file. However, this doesn't help the regular user, because she won't do the removal from msiexec.
Does anyone know of a way to convince Windows Installer to use the UI in the MSI file by default?
When removing an application from Add/Remove Programs, this will always run with "basic" UI.
You can't make uninstall run with full UI, the best you can do is prevent removal and force people to 'modify' (which does run with UI) and remove from there.
Whatever you do, there's still no way to prevent someone right clicking on the original MSI and selecting 'Remove', this will always run with basic UI.
The "Why" is basically because Microsoft says so. :-) Can't say I disagree as I get annoyed when ISV's get all cute when I'm just trying to remove a program.

WiX, Windows Installer summary?

I started to write an installer with WiX. I've spent several days reading blogs and studying tutorials. Last night I couldn't sleep, so I sat down in Fireworks and drew the following picture. That's my understanding so far of how Windows Installer / WiX work. Is there anything wrong? Do you have any suggestion to complete this graph?
http://nestorsulikowski.com/index.php/2009/08/windows-installer-wix/
I'm happy to receive feedback and modify the diagram so that it's useful to more people.
Firstly, forget about WiX for now. Your concern is Windows Installer - WiX is simply a tool to define Windows Installer databases (MSI files). WiX is no different than many other products out there, except for the fact that it doesn't try to mask any Windows Installer concepts for you. InstallShield transparently does a bunch of things that Windows Installer doesn't support via custom actions and the like, WiX forces you to think more about the Windows Installer methodology and way of doing stuff. Windows Installer is what you want to understand, WiX comes afterwards.
Second, get a copy of The Definitive Guide to Windows Installer. This book is an invaluable resource for anyone looking to understand how Windows Installer (MSI) works.
Third, start with the first entry in the UAC in MSI blog posts, and you should be able to get a better grip on things. It is the best documentation I ever read in trying to understand elevation, permissions and all the other stuff that goes with UAC.
The image kind of makes sense, but I think think the UAC series describes the sequences a bit better. Very few people use administrative installs, and if your installer is written properly then there shouldn't be any reason to concern yourself with advertised installations either. They'll just work. Build your installation to work with only the InstallExecuteSequence to begin with, and then add the UI later and you'll have a bulletproof installation that works without much effort.