Attempt to install earlier version of the installed application causes error - wix

I have created a custom UI and provided the standard dialog boxes as required to avoid ICE20 errors. I have included the following line as required:
If I use a WIX UI this works fine. But now I've created my own custom UI I get an "unexpected error" message with error code 2814 and then one with 2869. Does anyone know how to catch the attempted downgrade to produce a dialog box with the correct message?

I am not an MSI dialog expert, but there are a few things I can point out:
You can customize the internal GUI built into an MSI.
You can also make your own GUI for Burn setup.exe launchers.
Burn GUIs can be more modern than the rather ancient MSI GUI.
A Burn launcher can hide the built-in MSI GUI during installation.
I am not sure what GUI you have customized?
Error 2814: The error code 2814: "On the dialog [2] the control [3] names a nonexistent control [4] as the next control." - this seems to indicate that a control on your dialog points to a non-existent control as the next one to go to for the TAB order of the dialog. You need to point to a valid control that exists and it should be visible too.
Custom MSI GUI: Making your own MSI GUI is rarely advisable unless you need something very specific and unusual. You can use existing dialog sets and just inject a new dialog (which might be what you have done). Due to the lack of flexibility for MSI dialogs I would recommend that you make a Burn setup.exe GUI if you really need a lot of flexibility. I have not looked at this a great deal.
WiX MSI Dialog Sample: There is a sample, modified WiX MSI dialog set here: https://github.com/glytzhkof/WiXCustomDialog
Links: I have a few links on MSI dialogs and Burn GUI. This is quite overlapping, please just skim and see what makes sense to you:
WIX Installer with modern look and feel
Changing text color to Wix dialogs
Wix default folder dialog
Removing Default dialogs from MSI
Other Links:
A very clever effort from Stefan Kruger to work around the MSI GUI dialog limitations: http://www.installsite.org/pages/en/msi/articles/MultiListBox/index.htm
Dynamically changing RTF content in the EndDialog after success
https://github.com/frederiksen/Classic-WiX-Burn-Theme
How to add image background to custom MSI dialog?

Related

Wix Installer - Customize MsiRMFilesInUse dialog box

I was trying to change the default MsiRMFilesInUse dialog box provided by restart manager used in wix toolset. Basically I want to localize the default message in the dialog box since it is not getting localized by windows.
I found this answer (https://stackoverflow.com/a/46462452/14162315) which explains the steps of making the custom dialog box instead of normal one. A custom dialog box could help me in localizing the message.
I tried the above steps but I am getting the error - Duplicate symbol 'Property:WixUIRMOption' found. This typically means that an Id is duplicated. Check to make sure all your identifiers of a given type (File, Component, Feature) are unique.
I thought that I have to change the property id of WixUIRMOption also to some custom value to mitigate the error, so I changed it to Custom_WixUIRMOption. It compiled successfully after this change but the dialog box is not coming at all after this change.
link to source code of default MsiRMFilesInUse.wxs - https://github.com/AnalogJ/Wix3.6Toolset/blob/master/RC0-source/wix36-sources/src/ext/UIExtension/wixlib/MsiRMFilesInUse.wxs
you should be fine if you provide a localization for MsiRMFilesInUseText.
<String Id="MsiRMFilesInUseText" Overridable="yes">Translated text</String>
See how the dialog is implemented:
https://github.com/wixtoolset/wix3/blob/develop/src/ext/UIExtension/wixlib/MsiRMFilesInUse.wxs
See how wix ui is translated:
https://github.com/wixtoolset/wix3/blob/develop/src/ext/UIExtension/wixlib/WixUI_en-us.wxl

I need to remove feature selection screen from my wix installer

I have created a setup using wix installer, During installations user must have to install all features from feature tree, So I don't want to display this feature option screen during installation. Is there any way to achieve this.
Dialog Set: You can select a dialog set without this dialog? Default dialog sets. You are probably using Advanced or Mondo?
Mandatory Features: You can set all features to be mandatory? I guess you might already have done so. Then the user can not do any damage from the GUI (maybe they still can from msiexec.exe command line).
Custom Dialogs: You can create your own dialog set and take it out? Some details here.
Minimalistic sample
Zip version of Minimalistic sample

How to hide Title Bar in Wix Installer?

I want to hide the title bar of the dialog in a msi installer.
I don't think Windows Installer supports that (though someone might have a clever way).
The number of dialog style bits in Windows Installer is a reduced and specialized set.
--Dialog Box Overview
Instead, you could bundle your MSI with a WiX Bootstrapper and write your own Bootstrapper Application to present whatever UI you wish. Unless you select otherwise, the UI in MSIs are not shown by the bootstrapper.
The WiX installer itself is a good example of a frameless window. You can consult the source code for that.

Can we localize WIX msi and bundle using language selection UI at runtime?

We have an MSI and Bundle created in Wix. I need to localize both of these in such a way that language selection GUI will be popped-up and language can be selected by the user at run time. Would be really appreciated if anybody can help me on this.
For MSI, i am working on creating another bootstapper for bringing-up with language selection combobox and invoke the tranfomed MSI with the required transform(using command shell). I am still not sure about the feasibilty of this approach. I am facing issue in creating combo box in customized UI of bootstapper and invoking batch command to run this msi in the required language.
For Bundle - I am still working on finding a method. if anybody has any idea/samples for this.
It will be helpful if anybody can help me with this issue or provide me with an another alternative method to meet above requirement.
Thanks,
The recommended method (and for that matter, the method used by most MS products), is as you describe.
Create an MSI localized for each language
pick a base and generate MST's
Package the MSTs, the MSI and the bootstrapper, which will
present the language selection dialog and call MSIEXEC, passing TRANSFORM=language.mst as an argument
After the MSIEXEC process has started, all localization is finalized, so to speak. Any selection must go on outside the MSI system.
See this codeproject article for an example.
I guess this may help you:
creating language selection dialog using WiX.
there is a limitation that custom UI for language selection is created using C# based custom bootstrapper. This may lead to the requirement of .Net framework on host machine.
UI selection for MSI
Create an MSI localized for each language
Pick a base and generate MST's
Package the MSTs, the MSI into a bootstrapper.
Customize the HyperlinkTheme.xml to include radio button for selecting each language.
Use the Variable tag to link radio button from UI to .wxs file
Include the msi property in the msi tag and hard code the path to MST's and InstallCondition attribute to differentiate each selection
Use the latest version of wix for this feature support.
Bundle support only automatic base detection there is no support for UI selection

Wix Localization

I have localized all the strings which I added in the project.
But a "Cancel" button in Error dialog in Wix which comes while uninstall is not localized.
Its showing in English. The text in the dialog is localized.This dialog is default wix dialog.
I have added WixUI_ErrorProgressText library in wxs file.
got a solution..
by changing Edit Summary Information of msi and change Languages to corresponding language code.
Do this using any patch or programming language like vc++ etc.