DLLs Get Uninstalled When Upgrading Using a LabVIEW Built Installer

Updated Jun 27, 2023

Reported In

Software

  • LabVIEW

Operating System

  • Windows

Issue Details

When using a specific installer created to upgrade an already existing program, it installs the update but removes some DLLs that should be included in the installation. If the DLLs and other required files are not included, the upgrade installer will install those files as well. If the files already existed from the previous installation, it should just skip over the installation of the already existing source files rather than removing them. If those specific DLLs are removed or hidden in a different folder before the upgrade installer is ran, the upgrade installer will run as expected and install those specific DLLs that are "missing." Are there instances or reasons why certain upgrade installers will install the update and unintentionally remove specific DLLs that should be included?

Solution

The best solution would be to always include the same version or higher of every versioned file in subsequent releases. If that's not possible, then consider some scheme like installing the file under a different name (like filename_temp.dll), then have an executable that is scheduled to run post install to rename it to the desired name.

This issue is an installer design issue going against MSI Component rules. If the MSI installer notices there is an exisiting file, it will check the file's version and only upgrade if the installed version is lower than the installer's version. However, because the installer will skip over those existing files during the installtion, when it uninstalls the previous MSI installer at the end up the upgrade it also removes all the files installed during the previous installation, including the DLL that got skipped over by the upgrade installer. 

Additional Information

The problem that is occuring in this situation is that a later build of a MSI contains a lower version of binary. Shipping a downgraded binary is a special problem for MSIs due to the file versioning logic, and due to the complexity of this corner case and MSIs in general, the LabVIEW installer builder doesn't expose the customization option necessary to solve it.