The Application Model in the real world: installing multiple Installers as part of one application.

January 7, 2015 at 2:41 pm in CM12, CM12 R2, ConfigMgr, SCCM by Kurt Depre

Hi All,

A second post about the Application Model in ConfigMgr 2012. This time I will cover the scenario where multiple components needs to be installed as part of the application, a good example is Visual C++ Runtime 2013. On x86 machines only the x86 version is needed but on x64 commonly both x86 and x64 versions are installed. One way to solve this is 2 applications with requirement rules to define on which architecture they get installed but that means 2 Applications to maintain and 2 deployments. Another approach which I prefer is creating a single application with 2 DTs and working with requirement rules & dependencies as show in the example below.

First off the flow of how things are evaluated & installed in a scenario with dependencies

DependencyandRequirementEval

Step-By-Step Example

1. Get the sources and put them on your source share

The one I use in this example can be found here: http://www.microsoft.com/en-us/download/details.aspx?id=40784

2. Create the application with a first DT (x86) with the following parameters:

Name: Microsoft Visual C++ 2013 Runtime
Publisher: Microsoft
Software Version: 2013
Deployment Type Install Method: Script Installer
DT Name: Microsoft Visual C++ 2013 Runtime (x86)
Content Location: <YourServer>\<YourShare>\<YourVisualC++2013RuntimeFolder>
Installation Program: “vcredist_x86.exe” /Install /passive /quiet /norestart /log %windir%\temp\vc2013x86.log
Uninstall Program: “vcredist_x86.exe” /Install /passive /quiet /norestart /log %windir%\temp\vc2013x86.log
Detection Method: The Product key {13A4EE12-23EA-3371-91EE-EFB36DDFFF3E} or whatever you find out when manually installing the product
Install Behavior: Install for System
Logon Requirement: Whether or not a user is logged on.
Requirements: Device –>Operating System –> Select all OSes except Windows RT & Embedded

3. Save the application

4. Create a new deployment type in the newly created application with the following parameters:

Deployment Type Install Method: Script Installer
DT Name: Microsoft Visual C++ 2013 Runtime (x64)
Content Location: <YourServer>\<YourShare>\<YourVisualC++2013RuntimeFolder>
Installation Program: “vcredist_x64.exe” /Install /passive /quiet /norestart /log %windir%\temp\vc2013x64.log
Uninstall Program: “vcredist_x64.exe” /Install /passive /quiet /norestart /log %windir%\temp\vc2013x64.log
Detection Method: The Product key {A749D8E6-B613-3BE3-8F5F-045C84EBA29B}
or whatever you find out when manually installing the product
Install Behavior: Install for System
Logon Requirement: Whether or not a user is logged on.
Requirements: Device -> Operating System -> Select all 64 bit Oses

5. Edit the x64 Deployment Type

C  27Bis

6. Go to the dependency tab and click add.

C  29Bis

7. Enter the name for the dependency group (Microsoft Visual C++ 2013 Runtime x86 in my case) and click add

DependencyGroup

8. Search for the application your just created (Microsoft Visual C++ 2013 Runtime) select the x86 DT and click ok

C  30

9. Click OK to create your dependency group

C  31

10. Click Ok to save the changes to the DT.

C  32

11. Select the x64 Deployment type and click increase priority to pass it to Priority 1

C  27Tris

12. Click OK to save your changes

C  28Bis

13. Create a deployment for your application

14. Watch how both versions are deployed using 1 Application

Note: this also works inside task sequences

Till next time

Kurt