Changes to Gen Build Tool GUI MSI Assemble
search cancel

Changes to Gen Build Tool GUI MSI Assemble

book

Article ID: 276275

calendar_today

Updated On:

Products

Gen Gen - Run Time Distributed Gen - Workstation Toolset

Issue/Introduction

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.

Environment

Gen Build Tool and any deployable C GUI application using either Visual Studio 2015, 2017, 2019 or 2022.

Cause

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.

Resolution

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:

 

OPT.EULAFILE

OPT.PRODUCTICONFILE

 

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:

 

OPT.EULAFILE

OPT.PRODUCTICONFILE

OPT.READMEFILE

OPT.SPLASHBITMAPFILE

OPT.BANNERBITMAPFILE

OPT.DIALOGBITMAPFILE

OPT.COPYRRIGHTWARNING

OPT.WELCOMETEXT

OPT.UPDATETEXT

 

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:

 

OPT.SUPPORTURL

OPT.SUPPORTPHONE

OPT.MANUFACTURERURL

OPT.PRODUCTDESCRIPTION

Additional Information

Gen 8.6 Solutions & Patches

Redistributing components by using merge modules