Wix3 Optionally selecting features - wix

In Wix, how can I construct a feature tree such that when the parent feature is selected via "Will be installed on local drive" some of the child features get selected by default?
I see that only when I select "Entire feature will be installed.." option I see that the sub features are also getting selected, but all of them get selected. I want some granular control over that.
Any pointers?
thanks

What you are seeing is related to Windows Installer Advertisement. Be sure to read:
Advertisement (Windows)
With this form of advertisement you can install an advertised shortcut or COM registration and the feature and it's components and files won't be installed until you actually try to invoke said entry point. This was a design requirement from 10 years ago when hard drives were expensive and to me is a somewhat useless feature.
Personally I would Feature#AllowAdvertise="no" and Feature#TypicalDefault="install" on each of your features. This should get your Custom Setup looking the way you want it. If it doesn't, I might have misunderstood the question and we need to discuss the INSTALLLEVEL concept.
WiX V3 Feature Element

Related

Wix - Select MSI features with Burn bootstrapper [duplicate]

I need to install multiple MSIs from a single unified UI.
I also need a 'feature' tree to let the user select which product(s) to install.
Having looked at similar questions, it seems Burn is the way to go.
Looking at this, it seems I must write a custom BA and implement my own feature tree.
Is this correct?
It seems I'll end-up with a custom UI that won't look like the standard UI for MSIs. This seems a pity when IMHO one the great thing about MSIs is that they always present the same UI to users and have been doing so for years.
If that's the way to go, is there a simple example to get started?
Does wix3.6 really not natively support feature tree? ...seems like a pretty basic and useful feature to have IMHO ...
The feature tree is a custom control on MSI and not available for general use. A standard tree control could be used but no one has added that feature to wixstdba. Of course, you could add the feature (start discussion on wix-devs#lists.sourceforge.net) or implement your own BA. The wixstdba code is in src\ext\BalExtension\wixstdba or for managed example there is src\Setup\WixBA. Both are reasonable places to start.

How to do Dynamic Named Instance with Wix+Burn

I have a requirement to create an installer that will allow users to install multiple named instances of our services and application (i.e. Sql Server style).
I have seen that a product called AdvancedInstaller does this and from what I have read this would be achieved through a Bootstrapper capturing the information and streaming it to the MSI. I am assuming here that a Custom UI Burn implementation should be able to do the same, however I cannot find any samples of doing this exactly or on how to do the 'stream' to the MSI.
If I wanted to go this route would I still need to specify instances in my MSI's?
Currently there are separate MSI's for the Windows Services, Application and then a Bundle Bootstrapper EXE that allows the selection of the services to install.
Thanks
MSI has the concept of multiple instance installations using product code changing transforms. These transforms can (but don't have to be) embedded in the MSI. Here's some background reading.
http://blog.iswix.com/search?q=multiple+instance
Read the IS12 then the IS2009. Expect many broken links as Microsoft destroyed their sites. Here are 2020 links.
https://learn.microsoft.com/en-us/windows/win32/msi/installing-multiple-instances-of-products-and-patches
https://learn.microsoft.com/en-us/windows/win32/msi/authoring-multiple-instances-with-instance-transforms
https://learn.microsoft.com/en-us/windows/win32/msi/installing-multiple-instances-with-instance-transforms
When using embedded transforms you are limited to whatever ProductNames you choose when you built them. You could also dynamically generate transforms and apply them.
WiX's standard bootstrapper application doesn't really have much in the way of supporting all the scenarios I talked about in my blog articles. Other tools such as InstallShield and AdvancedInstaller have more.
As much as I like WiX, and MSI for that matter, this is really advanced stuff that takes a long time to understand, develop and test solutions for. You might want to look at using a tool such as InstallShield or Advanced Installer or simply creating a normal straight up MSI that installs a template of an application and then create your own custom instance management tool that allows the user to spin up multiple instances of your application.
I'm an WiX/MSI/InstallShield/DevOps consultant. To be honest, this would not be an inexpensive project if I was to quote it out for a customer.

How do you build conditional logic and user options in WiX?

Having been happy with ClickOnce for a long time, I've been thrust into the weird and wacky world of windows installers. It appears to be a world very short on documentation, unless I don't know what I'm searching for.
I'm aware there's lots of options for building an installer, including Visual Studio setup projects and WiX. Given that I'm looking at a fairly complex scenario, I suspect I'll be going with the latter. What I'm struggling with is doing something like this:
Two things to note about this.
First, it already knows what versions of SQL Server I've got installed. Second, the user can select which options to install and which to skip.
I don't know if there's a particular label for these functions that will help me search for them. But I can't find any details on how to start building this sort of logic into an installer, preferably with WiX.
Can anyone get me started?
This installer UI is WixUI_FeatureTree and it selected by UI reference.
Each line in the UI is a feature.
Each feature can be nested under other feature.
The name of the feature is a property that is set by searching the registry.
To choose if the feature should be enable, expanded etc. check the Feature Element.
Hope it will get you started...

Windows 8 Start Screen Pinning

I know when I install most legacy installers I seem to get a boat load of shortcuts that I then have to unpin. However I recently tried using the util:InternetShortcut element and I got the opposite. I had to search the start screen to find the items to pin. Strangely the Bing1 showed up and I was able to pin it but the Bing2 shortcut did not show up as available. (Edit: Bing2 is showing up now. Weird)
This is kind of a broad question... but what do I need to know here in a Windows 8 world? I'm working in an enterprise IT environment currently and I'm being asked to come up with a strategy of managing the start screen for users and one of the tools I was researching was MSI based installers.
One of the high level requirements I have is to be able to create shortcuts to websites and configure the icon for the shortcut. This seems to be supported by .url files but not supported by util:InternetShortcut. (Edit: The shortcut seems to auto-sync with the target webpage.)
<util:InternetShortcut Id="test1" Directory="ProgramMenuFolder" Name="Bing1" Target="http://www.bing.com" Type="url"/>
<util:InternetShortcut Id="test2" Directory="ProgramMenuFolder" Name="Bing2" Target="http://www.bing.com" Type="link"/>
Explicitly setting the icon and other pieces of a URL shortcut isn't supported by InternetShortcut today. It would be possible but the WiX custom action code just doesn't implement it today. Probably wouldn't take much effort.
As for default pinning, I expect it's a difference between the way the shortcuts are being created in the WiX custom action vs the way the Windows Installer creates shortcuts. The WiX CA is very, very simple and isn't initializing data in the IPropertyStore which is probably why it is ignored by the Start Screen. Again, not to hard to implement but not available today.

How to create/Where to get Wix Bootstrapper for Multiple Instances

I'm currently learning how to create msi installers using WiX and it seems I've hit a wall.
All is well when I create an MSI containing everything needed for a single environment.
I have features, and components, and can install my MSI.
Now I'm at the stage where I want to convert this in a SQL Server-style installer, where you have multiple instances support.
At the start I want to user to get a screen which allows him to create a new instance, or manage already existing instances. (to update/remove them)
I've spend 2 full days looking everywhere for a solution, without much luck.
I've found the following resources with some info on it, but either they're limited in the number of instances, or don't describe how to such a bootstrapper which gives a user the option described above.
Multiple Instance MSI's and InstallShield 12
Multiple Instance Transforms Walkthrough
Multiple instance installations and patching
Has anyone achieved this already using WiX? Or can anyone point me towards some working examples on how this is achieved?
I know Installshield 2009 can do this, but since this is just a hobby, I don't have the money to buy that. Also I'd like to do it in WiX, since the upcoming Visual Studio 2010 will improve support for it.
Creating multiple instances is pretty easy with WiX v3. You just use the InstanceTransform and Instance elements to create everything. Now, the bootstrapper problem requires something outside of the WiX toolset since we don't have burn, yet. I'm not sure we'll get this functionality in WiX v3.5 (with burn) but it is on our list for burn post v3.5.
Although I've never created a multi-instance setup, I also noticed that Acresso announced MI support in IS 2009. We have IS 2009 but didnt use this feature.
However, Installshield often simply makes use of new MSI features by offering an "intuitive" frontend to them (like for chaining multiple MSIs together into one). So you might want to look for general information on how to achieve that by using the MSI SDK.
Here are some useful links that might point you to the right direction:
Authoring Multiple Instances with Instance Transforms
Multiple Instance Transforms Walkthrough, Proposed Simple Addition to WiX to Make Them Easier