The Problem: LabVIEW-built applications need to be able to clean up after themselves during uninstallation
When creating installers for built LabVIEW applications, there's a useful feature that lets you run an executable at the end of installation, but it's sorely lacking the ability run an executable before uninstallation (see screenshot below).
Here are a couple concrete examples why this is needed:
1) Removing a device driver when uninstalling an application that uses it
An application we built for a customer requires a specific USB device driver. To make things easy for our customer's end users, we bundle the driver alongside our application and run its installer automatically. When the user later uninstalls our application, we don't want the device driver left behind; it needs to be uninstalled along with everything else. LabVIEW's installer builder gives us no way to automatically uninstall this device driver. If LabVIEW supported "Run executable at beginning of uninstallation" it would solve the problem.
2) Cleaning up the Windows Registry when uninstalling an application
VI Package Manager makes several modifications to the Windows Registry. Some of these happen at install time, but for technical reasons are done by a tool that runs separately from the VIPM installer. Others happen at run time, such as registering new Windows File Explorer context menu commands when a user activates VIPM Professional or VIPM Enterprise. Just like above, if the user later uninstalls VIPM, LabVIEW's installer builder gives us no way of undoing these Window Registry changes. Here, too, if we could "Run executable at beginning of uninstallation" we could do exactly what we need to do.
Do these problems sound familiar? Join the discussion!
Have you encountered situations like these? Do you know how to work around them? If so, please let us know. You can post a comment, below, or join the discussion on the LabVIEW Idea Exchange.
If this idea gets enough votes, National Instruments will seriously consider adding it as a feature in a future LabVIEW version. To cast your vote, click on the Up Arrow button (or just click this link).
Thank you for listening to my rant, and for your help making LabVIEW better :)