Launch dialog on uninstall using WiX - wix

I have created a WiX installer and would like to launch a custom action dialog on uninstall. From this dialog I would like to gather information on why the user is uninstalling my application (well, this means just launching the web-browser).
I have seen some people using the On="uninstall" property, but I am not sure if this is the one to use, and how to use it, for the above action.

Windows doesn't show UI when a product is uninstalled from Add/Remove Programs or Programs and Features.

JakobJ: I wouldn't mess with this uninstall sequence. Any modal dialog that pops up when the installation is run in silent mode (which it is from add/remove) could cause your entire product to be axed in a corporate environment. If your uninstall is invoked from a management system such as SCCM and the uninstall on a lot of machines fails because the uninstall gets stuck on a dialog, this will not soon be forgotten. Trust me.

Related

Wix: Uninstalling lauchnes installer instread

I'm trying to certify a desktop application for Windows 8.1 using Windows App Certification Kit 3.1.
Everything is fine with the exception of the uninstall. I created the MSI file using Wix Toolkit 3.6. When the application installs it creates an entry in Programs and Features as well as a shortcut for uninstalling.
When I trigger the uninstall from either of these locations it works properly and all the files and registry entries get removed.
However, when the WACK launches the uninstall process, the MSI starts the installation process instead.
Is there a specific command from msiexec I need to test that WACK might be using to cause this?
I really do not understand why the Kit will launch the installer again.
Thank you,
Fernando
I found the problem and my solution.
The WACK calls the uninstall process using the Change option instead of Uninstall. You can test this by going to *Programs and Feature*s and clicking Change.
Since my application does not support changing or repairing, I simply set ARPNOREPAIR and ARPNOMODIFY to "Yes" and now WACK only calls uninstall.
The other option is to offer the Change/Repair dialog on your setup project and have the Remove check-mark available.
Hope this helps.
Cheers,
Fernando

Uninstallation dialog doesnt appear when uninstallating from Control Panel

When the setup is run by double-clicking then the setup dialog appears as expected. When I want to un-install by double-clicking the setup, then the setup dialog appears with options to Change, Repair and Remove. However, when I try to uninstall through Control Panel, the dialog doesnt appear and uninstallation kicks off. Same thing happens when I right click on the setup file and choose Uninstall. How do I make the dialog appear every time when an uninstall is invoked?
Nithin when you try to uninstall through Control Panel, the dialog doesn't appear and uninstallation starts with Windows Installer progress bar dialog.
Yes, that's the default behavior of the Add/Remove Programs. It always
uninstalls MSI packages in basic mode after prompting.
The only place you can author UI during an uninstall is a "change" or "maintenance" UI.
But there are some tricks to achieve it.
1> Bootstrapper which calls your MSI with the desired UILevel rather than allowing ARP call your MSI directly.
2> Set ARPNOREMOVE property to force a user to use maintenance mode. But this would actually remove the option to Uninstall your product from both Control Panel and its Maintenance Dialog box.
so redefine Maintenance Dialog while enabling the Remove button forcefully using Condition element can do your work.
Farrukh Waheed Tutorial How to force GUI uninstall using ARPNOREMOVE property can help you with same.

How can I get Explorer to restart when using Burn

In an msi, we use the following to get explorer to restart so that it loads our shell extension.
<util:RestartResource Path="[WindowsFolder]explorer.exe"/>
However, now that I've wrapped this msi up with its dependencies in an installer created with burn, the restart of Explorer no longer occurs.
How can I get the restart to still occur?
Thanks.
The msi normally displays some UI asking the user to reboot. This UI is hidden when wrapped in a burn/bundle exe. I thought perhaps the burn engine would issue callbacks allowing a custom bootstrapper to display the relevant UI. I tried overridding OnExecuteMsiMessage in a custom bootstrapper application, but don't see any message that would appear to give me an opportunity to display the UI that's required for the Explorer.exe restart.

WiX Uninstall cannot stop application unless elevated

I've created an installer using WiX and if the user tries to uninstall my application whilst it is still open, they should get the dialog which gives them the option to have the uninstaller close the application automatically or leave it running but a restart will be required.
It seems though that with User Account Control on, I need to elevate by running the package with msiexec from an elevated command prompt before this will happen. If the user is not elevated, the uninstaller will run, they click the Remove icon (which prompts for elevation), but the setup then simply says:
"The setup must update files or services that cannot be updated while the system is running. If you choose to continue, a reboot will be required to complete the setup."
I'd like them to have the option to close the app even when just uninstalling without having to manually elevate first
My best guess is that your MSI does not have a FilesInUse dialog box nor a MsiRMFilesInUse dialog box. Those are "well-known" dialog boxes that the Windows Installer will populate with information when it detects files in use. The WiX toolset should give you those dialogs automatically if you use one of the standard UIs. Alternatively, you can create your own dialogs.

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.