Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Add Visual C++ 2012 Redestribution (x86) as a prerequisite (Custom Prerequisites)

I need to add Visual C++ 2012 Redestribution (x86) as a prerequisite to an installer that I have created using VS 2016. But in order to do that I have to create product.xml along with package.xml in bootsrapper folder. Many posts suggest that to use Bootstrapper Manifest Generator to generate these xml files. But Microsoft has now archived that tool hence I don't have the tool for generating files.

Is there any way that I can make Visual C++ 2012 Redestribution (x86) a prerequisite for my installer?

like image 548
Janitha Tennakoon Avatar asked Mar 13 '23 14:03

Janitha Tennakoon


1 Answers

I've already answered a similar question Add prerequisites to visual studio 2015. But I'll post the answer again in case the other question is deleted or the link will not be available.

I'll explain the step used by me to add Microsoft C++ 2013 x86 into Visual Studio 2015 folder (the steps in your case would be similar).

First navigate to C:\Program Files (x86)\Microsoft Visual Studio 14.0\SDK\Bootstrapper\Packages\ folder (for previous versions of Visual Studio or custom paths this can be different).

Once located the Packages folder you can start by creating a new folder called vc_redist_2013_x86 (in your case vc_redist_2010_x86). Download the Redistribution package from Microsoft site and place it in this folder. You can download the 2013 version from here and 2010 x86 from here.

Now copy the files from the vcredist_x86 to your folder (it should be a product.xml file and a en folder with a package.xml file). Now remove them the read-only flag and open in any text editor.

In case of the product.xml you should replace the following:

  • ProductCode to: "Microsoft.Visual.C++.12.0.x86" (you will have C++.10.0.x86)
  • PackageFile Name="vcredist_x86.exe" will be named as the executable file that you've downloaded from Microsoft site.
  • PublicKey needs to be changed according to the one of the exe file. In order to find it you have to do the following steps:
    • right click the exe-file (in my case vcredist.exe)
    • choose 'properties'
    • select 'digital-signatures'
    • select the top signature (sha1)
    • press 'Details'
    • press 'View Certificate'
    • select 'Details tab'
    • select 'Public Key'
    • copy value from below and after removing spaces you have the searched value
  • MsiProductCheck Product needs to be changed to the one for your version. I was able to find this answer with the desired value. For 2013 x86 your Product is {f65db027-aff3-4070-886a-0d87064aabb1} and for 2010 x86 is {1D5E3C0FEDA1E123187686FED06E995A}.

Save file and move to the package.xml file. Here you have to replace the 'Visual C++ "14"' to your used version. I replaced it with 'Microsoft Visual C++ 2013 Redistributable (x86)'.

Once this steps done. You should be able to see the Microsoft Visual C++ 2013 Redistributable (x86) under the Prerequisites list in your Visual Studio 2015.

I'll post the two files below in case you need a model on which to work on.

Product.xml

<Product xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper" ProductCode="Microsoft.Visual.C++.12.0.x86">

  <!-- Defines list of files to be copied on build -->
  <PackageFiles CopyAllPackageFiles="false">
    <PackageFile Name="vcredist_x86.exe" HomeSite="VCRedistExe" PublicKey="3082010a028201010096715ded0646fa84cb9d5bb746c7b0e1b4113903adb11573609ceba7b66e1a3c3fff65e334f1a6a5215e56996c58e492a10a5cc2d3dc522f0c659a20614053319c6c8f217dbaf9fe13505260953a5bb958a5746141a994e0ad264e4ca1977049275e7c67ca4f1e718446bc1d4bb6e20fc5c627c907e67a0aa51700194c7045382d81b450aac567d1fa79bcc5cca1729bf4253498f854df123938122fa46ba59a7ec762d1dccfed3d34f8b9df3530baec7932a9e1a9ac554d4c7f4c56c3130b76f107f9cc47acfb88d552a51e28fa3d2dcfcf849886716511cf85c9094486e16fe7b1fcac4044a5a98b233f82499dd596595013591873ff430cad2bd47f3040670203010001" />
  </PackageFiles>

  <InstallChecks>
    <MsiProductCheck Property="VCRedistInstalled" Product="{f65db027-aff3-4070-886a-0d87064aabb1}"/>
  </InstallChecks>

  <!-- Defines how to invoke the setup for the Visual C++ 14.0 redist -->
  <Commands Reboot="Defer">
    <Command PackageFile="vcredist_x86.exe" Arguments=' /q:a '>

      <!-- These checks determine whether the package is to be installed -->
      <InstallConditions>
        <BypassIf Property="VCRedistInstalled" Compare="ValueGreaterThanOrEqualTo" Value="3"/>
        <!-- Block install if user does not have admin privileges -->
        <FailIf Property="AdminUser" Compare="ValueEqualTo" Value="false" String="AdminRequired"/>
        <!-- Block install on Win95 -->
        <FailIf Property="Version9X" Compare="VersionLessThan" Value="4.10" String="InvalidPlatformWin9x"/>
        <!-- Block install on Vista or below -->
        <FailIf Property="VersionNT" Compare="VersionLessThan" Value="6.00" String="InvalidPlatformWinNT"/>
      </InstallConditions>

      <ExitCodes>
        <ExitCode Value="0" Result="Success"/>
        <ExitCode Value="3010" Result="SuccessReboot"/>
        <DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" />
      </ExitCodes>

    </Command>
  </Commands>
</Product>

Package.xml

<Package
    xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"
    Name="DisplayName"
    Culture="Culture"
    >

    <!-- Defines a localizable string table for error messages-->
    <Strings>
        <String Name="DisplayName">Microsoft Visual C++ 2013 Redistributable (x86)</String>
        <String Name="Culture">en</String>
        <String Name="AdminRequired">You do not have the permissions required to install Microsoft Visual C++ 2013 Redistributable (x86). Please contact your administrator.</String>
        <String Name="InvalidPlatformWin9x">Installation of Microsoft Visual C++ 2013 Redistributable (x86) is not supported on Windows 95. Contact your application vendor.</String>
        <String Name="InvalidPlatformWinNT">Installation of Microsoft Visual C++ 2013 Redistributable (x86) is not supported on Windows NT 4.0. Contact your application vendor.</String>
        <String Name="GeneralFailure">A failure occurred attempting to install Microsoft Visual C++ 2013 Redistributable (x86).</String>
        <String Name="VCRedistExe">http://go.microsoft.com/fwlink/?LinkID=800028&amp;clcid=0x409</String>
    </Strings>

</Package>

Hope it helps and it is easy to follow this long process.

like image 81
Adrian C. Avatar answered May 16 '23 03:05

Adrian C.