Edit component selection from HTML user interface

Dec 2, 2011 at 4:40 PM
Edited Dec 4, 2011 at 5:19 AM

Is it possible to control which components are installed from the HTML user interface, without using the component widget?

For example, I want to include SQL Server Express with my bootstrapper as an optional component. If the user already has SQL Server, my HTML interface will ask for the server and database names; if not, then I will install Express with some default settings and instance name.

I'm imagining a user interface that looks something like this: http://jsbin.com/azosiq/7

In the example, if the user selects "Install SQL Server Express", then the component should be enabled; if not, then it shouldn't be. If I were to show the component selection widget after this, I think it would be confusing to the user because I'd be asking them whether they want to install SQL Express twice.

I tried searching this discussion forum, Google, and Stack Overflow but couldn't find a definitive no, so I'm hoping it's there and I can just get a pointer in the right direction.

Dec 11, 2011 at 2:01 PM

Not right now - there's nothing to build a custom UI like this. My recommendation is to do this inside an MSI - for a large project we've built a setup MSI that ran first and asked all the questions, then wrote them to registry. The other components ran silent.

You might also be trying too hard to make an ideal experience. I'd generally leave the SQL Server Express component optional and let the user check it if they don't have a SQL server. Then when you ask for SQL server parameters inside the MSI it doesn't matter whether it's a local one or a remote one - http://msiext.codeplex.com/ does a good job at this btw.

Dec 12, 2011 at 5:16 AM

I thought that might be the case. I'll probably do something like what you're suggesting, and perhaps I'll look into using WiX's Burn to make a better solution later. It's still beta as of this writing, but offers some compelling features.

The only reason I don't want to let them choose the SQL component then enter the connection parameters later is that they might goof up on one step or the other. If I automate the process, then I can be sure the two settings match each other.

If I were at all competent in C++ I'd look into adding this feature myself and contributing it to the project, but alas I have no experience and haven't the time to learn these days.

Thank you for your suggestion and for your great open-source project. I've used it for a number of our internal support utilities, to wrap sets of batch files and tools into a single executable, and for that DNI works famously.