Microsoft has deprecated the use of merge modules for Visual C++ Redistributables. This deprecation has resulted in a change in what is created as a result of a Gen Build Tool GUI MSI Assemble.
This article will provide details on this change.
Gen Build Tool and any deployable C GUI application using either Visual Studio 2015, 2017, 2019 or 2022.
In Visual Studio 2019 and later, merge modules for Visual C++ Redistributables are deprecated. The lack of merge modules impacts the creation of Gen GUI MSI used for deployment.
PTFs BTN86304 and RTN86315, along with providing support for VS 2022, modify the way Gen GUI MSIs are assembled.
Instead of inserting merge modules for Visual C++ Redistributables into the generated GUI MSI, the GUI MSI is now bundled together with Visual C++ Redistributables into a single executable. Within the Build Tool, the assemble process remains the same: the only difference is in the final deployable entity. Besides generating the GUI MSI, the deploy folder will contain the bundled executable.
As an example, this is the deploy folder after an assembly of GUI application W900:
Directory of c:\models86\mymodel.ief\c\deploy
10/18/2023 07:19 PM 5,605,067 W900.msi
10/18/2023 07:19 PM 19,210,972 W900_Bundle.exe
2 File(s) 24,816,039 bytes
2 Dir(s) 75,775,606,784 bytes free
The *.msi file resembles the prior MSI file that was created prior to applying PTF BTN86304, minus the merge modules for Visual C++ Redistributables.
The *_Bundle.exe file essentially is a bundling of the *.msi file and the Visual C++ Redistributables. When the _*Bundle.exe is executed, both the GUI application and the Visual C++ Redistributables are installed.
Although the *_Bundle.exe is created to combine the GUI application with the Visual C++ Redistributables, the generated *.msi can still be used to deploy the GUI application. This would be the case if the Visual C++ Redistributables have already been installed on the target system. Also note that newly generated GUI MSI is smaller in size since it no longer is embedded with the merge modules.
For those that are familiar with the MSI Option tokens in the Build Tool, the bundled executable (*_Bundle.exe) can only utilize the following subset of tokens:
If you plan on only using the generated MSI for deployment (since you don’t want to distribute the Visual C++ Redistributables) the following subset of MSI option tokens are still available:
The following MSI option tokens are obsolete since Microsoft no longer supports their usage and they will be removed from the Build Tool in a future PTF: