Packaging Adobe Reader DC

Recently Adobe has released their latest version of their free PDF utility (formerly Adobe Reader) calling it Adobe Acrobat Reader 2015 DC. DC stands for Document Cloud, which points to the fact that with this version Adobe lets the users connect to their cloud to store documents and leverage all of the features available in their cloud. Adobe has also with this new version released two update tracks, Continuous Update and Classic Update. The Continuous Update track is aimed more at home users that want to leverage all of the features with this new version of Adobe Acrobat Reader and get the latest version installed silently and automatically. For an enterprise, who are used to deploy Adobe Reader in a more controlled fashion, the Classic Update track is the way to go. The Classic Update track workflow is the same as for deploying Adobe Reader X and XI, only with a few slight improvements.

Download the DC executable from

ftp://ftp.adobe.com/pub/adobe/reader/win/Acrobat2015/1500630033/AcroRdr20151500630033_MUI.exe

Download the Adobe Customization tool from

ftp://ftp.adobe.com/pub/adobe/acrobat/win/AcrobatDC/misc/

Download the latest patch from

ftp://ftp.adobe.com/pub/adobe/reader/win/Acrobat2015/1500630119/

Use 7zip to extract the msi and files from the install executable to your working folder.

1

1. Start the Acrobat Customization Wizard DC, click File – Open Package and browse to your working folder to select the AcroRead.msi.
2. On the Personalization Options page, select to suppress displaying the EULA.

2

Installation Options:

3

Shortcuts page, right click the shortcut that’s created on the Desktop and select Remove.

4

Security. Turn off protected view as this will cause issue with App-V apps opening pdf’s.

5

For WebMail Profiles, I’d disable this setting although there’s no real way for us to prevent a user to take the actual PDF file and send it through any web mail service manually, but I like to turn of this feature so that it’s not available directly inside of the application.

6

Online Services and Features: Disable Updates

7

Registry:

Make the following changes

1.There is a new dialogue box on first launch….

“This release makes your document productivity tasks easier and faster by enabling connected tool access and preference management with your Adobe ID. Starting with this release you have the option to share information with Adobe about how you use the application, This option is turned on by default This information is anonymous and will help us improve product quality and features. You can change the setting anytime in the Preferences under Usage Information.”

This can be suppressed by adding/editing this HKCU reg key:

[HKEY_CURRENT_USER\Software\Adobe\CommonFiles\Usage\Reader 2015]
“OptIn”=dword:00000000

8

2. There is a blue box, from the initial dialogue, add this HKCU key to suppress it:

[HKEY_CURRENT_USER\Software\Adobe\Acrobat Reader\2015\AVGeneral]
“bHideUnreadMsgAtLaunch”=dword:00000001

9

3.To remove the welcome screen, add the following registry dword value:

HKLM\Software\Policies\Adobe\Acrobat Reader\2015\FeatureLockDown
bUsageMeasurement=0

10
  1. To remove the “add account” button

Add the following registry dword value:

HKLM\Software\Policies\Adobe\Acrobat Reader\2015\FeatureLockDown\cSharePoint (the button is used for sharepoint accounts) bDisableSharePointFeatures=1

11

5. Disable the “Check for update” button

Add the following registry dword value:

HKLM\Software\Adobe\Acrobat Reader\2015\Installer
DisableMaintenance=1

Installation

Install the package with the following batch file:

msiexec.exe /i “%~DP0acroread.msi” TRANSFORMS=”%~DP0acroread.mst” /update “%~dp0AcroRdr2015Upd1500630119_MUI.msp” /qn /l*v c:\windows\debug\ARDC15.log

Uninstalling old Reader 10/11

Found  Here: Thanks to Nickolaj Anderson for this great script.

Create an uninstall application

In some cases you may want to have a little more control when it comes to superseding other versions of an application. A great example for this is Java Runtime Environment, where the installer for the latest version simply installs a new application and doesn’t remove the previous installed version. Adobe Reader has been known to remove any previous version, but in some scenarios it might fail, or you’d like to close all open instances of AcroRd32.exe. This part of the post is not required to deploy Adobe Acrobat Reader 2015 DC, but it might give you some extra tools to perform a successful deployment throughout your environment.

Use the following VBscript to uninstall Adobe Reader X (10.x) and Adobe Reader XI (11.x). It can easily be extended to your needs, you’d just have to add your own code if you e.g. want to prompt the user or anything. You can use this script for what I call an Adobe Reader Uninstaller application. This application will be used for supersedence on the new Adobe Acrobat Reader 2015 DC application.

Us the following VBscript to uninstall earlier Reader installs

[box style=”1″]

‘//—————————————————————————-

‘// Global Constants

‘//—————————————————————————-

Option Explicit

Const HKEY_LOCAL_MACHINE = &H80000002

Const ForWriting = 2

Const ForAppending = 8

Const SeverityInformation = 1

Const SeverityWarning = 2

Const SeverityError = 3

Const DoIndent = 1

Const NoIndent = 0

‘//—————————————————————————-

‘// Declare objects

‘//—————————————————————————-

Dim WshShell, objFSO, objWMIService, objRegistry, objExecute, objLog

Dim strComputer, strRegistryKey, strSearchItem, strDisplayName, strUninstallString, strGetDisplayName

Dim strGetUninstallString, strLogMessage, strIndent, strLogFile, strSeverity, strWriteMethod

Dim arrDisplayName, arrItem, arrSubKeys, arrSubKeyItem

Dim colItems, colItem

‘//—————————————————————————-

‘// Define variables

‘//—————————————————————————-

 arrDisplayName = Array(“Adobe Reader”)

strComputer = “.”

‘//—————————————————————————-

‘// Define objects

‘//—————————————————————————-

Set WshShell = CreateObject(“WScript.Shell”)

Set objFSO = CreateObject(“Scripting.FileSystemObject”)

Set objWMIService = GetObject(“winmgmts:{impersonationLevel=impersonate}!\\” & strComputer & “\root\cimv2”)

Set colItems = objWMIService.ExecQuery(“Select * from Win32_ComputerSystem”)

‘//—————————————————————————-

‘// Main routine

‘//—————————————————————————-

‘ Create logfile

strLogFile = WshShell.ExpandEnvironmentStrings(“%WinDir%”) & “\CCM\Logs\AppUninstall.log”

If Not objFSO.FileExists (strLogFile) Then

   Set objLog = objFSO.CreateTextFile(strLogFile, True)

   objLog.Close

End If

 

‘ Determine architecture

For Each colItem in colItems

   If UCase(colItem.SystemType) = “X64-BASED PC” Then

       strRegistryKey = “SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\”

   ElseIf UCase(colItem.SystemType) = “X86-BASED PC” Then

       strRegistryKey = “SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\”

   Else

      WScript.Quit 0

   End If

Next

‘ Enumerate through all items in DisplayName array

WriteLogFile “Launching script engine”, NoIndent, SeverityInformation, ForAppending

For Each arrItem in arrDisplayName

   UninstallApplication arrItem

Next

WriteLogFile “Ending script engine”, NoIndent, SeverityInformation, ForAppending

 

‘//—————————————————————————-

‘// Sub routines

‘//—————————————————————————-

 

Sub UninstallApplication (strSearchItem)

   ‘ Connect to Registry provider

   Set objRegistry = GetObject(“winmgmts://” & strComputer & “/root/default:StdRegProv”)

   WriteLogFile “Connected to registry provider, start enumerating sub keys for:”, NoIndent, SeverityInformation, ForAppending

   WriteLogFile “HKLM\” & strRegistryKey, DoIndent, SeverityInformation, ForAppending

   objRegistry.EnumKey HKEY_LOCAL_MACHINE, strRegistryKey, arrSubKeys

   ‘ Enumerate through all sub keys

   For Each arrSubKeyItem in arrSubKeys

       ‘ Get DisplayName and UninstallString

       strGetDisplayName = objRegistry.GetStringValue(HKEY_LOCAL_MACHINE, strRegistryKey & arrSubKeyItem, “DisplayName”, strDisplayName)

       strGetUninstallString = objRegistry.GetStringValue(HKEY_LOCAL_MACHINE, strRegistryKey & arrSubKeyItem, “UninstallString”, strUninstallString)

       ‘ Check if search string is in DisplayName

       If inStr(1, strDisplayName, strSearchItem, 1) Then

           WriteLogFile “Found Adobe Reader version eligable for uninstall:”, NoIndent, SeverityInformation, ForAppending

           WriteLogFile strDisplayName, DoIndent, SeverityInformation, ForAppending

           strUninstallString = UCase(strUninstallString)

           If inStr(strUninstallString, “MSIEXEC”) Then

               ‘ Replace MsiExec command line parameters for uninstall

               strUninstallString = Replace(strUninstallString, “MSIEXEC.EXE /I”, “/X “)

               strUninstallString = Replace(strUninstallString, “MSIEXEC.EXE /X”, “/X “)

               ‘ Uninstall application

               WriteLogFile “Preparing to uninstall product ” & strDisplayName, NoIndent, SeverityInformation, ForAppending

               Set objExecute = WshShell.Exec(WshSHell.ExpandEnvironmentStrings(“%WinDir%”) & “\system32\” & “msiexec.exe ” & strUninstallString & ” /qn REBOOT=ReallySuppress”)

               WriteLogFile “Executing command:”, NoIndent, SeverityInformation, ForAppending

               WriteLogFile (WshSHell.ExpandEnvironmentStrings(“%WinDir%”) & “\system32\” & “msiexec.exe ” & strUninstallString & ” /qn REBOOT=ReallySuppress”), DoIndent, SeverityInformation, ForAppending

               ‘Wait for uninstall to complete

               Do While objExecute.Status = 0

                  Wscript.Sleep 3000

               Loop

               WriteLogFile “Successfully uninstalled product ” & strDisplayName, NoIndent, SeverityInformation, ForAppending

           End If

       End If

   Next

End Sub

 

Sub WriteLogFile (strLogMessage, strIndent, strSeverity, strWriteMethod)

   Set objLog = objFSO.OpenTextFile(strLogFile, strWriteMethod)

   If strIndent = 1 Then

       objLog.WriteLine “<![LOG[   ” & strLogMessage & “]LOG]!>” & “<time=” & Chr(34) & Time & “.000+0″ & Chr(34) & ” date=” & Chr(34) & Month(Now) & “-” & Day(Now) & “-” & Year(Now) & Chr(34) & ” component=” & Chr(34) & WScript.ScriptName & Chr(34) & ” context=” & Chr(34) & Chr(34) & ” type=” & Chr(34) & strSeverity & Chr(34) & ” thread=” & Chr(34) & Chr(34) & ” file=” & Chr(34) & WScript.ScriptFullName & Chr(34) & “>”

   Else

       objLog.WriteLine “<![LOG[” & strLogMessage & “]LOG]!>” & “<time=” & Chr(34) & Time & “.000+0″ & Chr(34) & ” date=” & Chr(34) & Month(Now) & “-” & Day(Now) & “-” & Year(Now) & Chr(34) & ” component=” & Chr(34) & WScript.ScriptName & Chr(34) & ” context=” & Chr(34) & Chr(34) & ” type=” & Chr(34) & strSeverity & Chr(34) & ” thread=” & Chr(34) & Chr(34) & ” file=” & Chr(34) & WScript.ScriptFullName & Chr(34) & “>”    

   End If

   objLog.Close

End Sub

[/box]

 1. Open the SCCM ConfigMgr console and navigate to Software Library. Expand Application Management, right-click on Applications and select Create Application.

2. On the General page, select to Manually specify application information and click Next.

3. Name the application Adobe Reader Uninstaller and give it a Software version of 1.0. Select Date published and click Next.

4. On the Application Catalog page, click Next. 5. Click Add on the Deployment Type page. 6. Select Script Installer and click Next.

5. Name the Deployment Type Adobe Reader Uninstaller 1.0 and click Next.

6. On the Content page, specify the content source location for where you’ve stored the UninstallAdobeReader.vbs script file. Enter a dummy installation program, e.g. cscript.exe dummy.vbs and for the uninstall program enter cscript.exe UninstallAdobeReader.vbs. When ready click Next.

7. On the Detection Method page we’re gonna add detection methods for Adobe Reader 11 and 10. If you have older version in your environment, follow the same process described below to add support for those as well. Click Add clause and enter the following settings:

Setting Type: Registry Hive: HKEY_LOCAL_MACHINE Key: SOFTWARE\Adobe\Acrobat Reader\10.0

Click OK.

9. Click Add clause again and enter the following settings:

Setting Type: Registry Hive: HKEY_LOCAL_MACHINE Key: SOFTWARE\Adobe\Acrobat Reader\10.0 This registry key is associated with a 32-bit application on 64-bit systems: Checked

Click OK.

10. Change the Connector to OR.

Now perform the same steps to add support for Adobe Reader 11, but use this key instead:

Key: SOFTWARE\Adobe\Acrobat Reader\11.0

Make sure that all connectors are set to OR. Click Next.

11. On the User Experience page, configure accordingly:

Installation behavior: Install for system Logon requirement: Whether or not a user is logged on Installation program visibility: Normal Maximum allowed runtime (minutes): 20

Click Next.

12. Click Next on the Requirements page.

14. Click Next on the Dependencies page.

15. On the Summary page, click Next.

16.Click Close on the Completion page.

17. Back in the Create Application Wizard, click Next.

18. On the Summary page, click Next.

19. On the Completion page, click Close.

20. Distribute the new application to your Distribution Points.

3 responses to “Packaging Adobe Reader DC”

  1. froberg Avatar

    Figured I’d share my method with you: http://froberg.me/index.php/deploying-adobe-reader-dc-via-sccm/
    Hopefully it’s of use to you. It’s not as sexy with the lack of scripts upon scripts, but it’s very simple and it works.

    1. Peter Sabourin Avatar

      Thanks for your input! Although your recipe is simpler, it leaves out many of the steps you need to take in the Customization Tool, like stopping automatic updates and pop ups. Also, in corporate environments you really should use the Classic track rather than the consumer Continuous track version. The vbs uninstall script I’ve added is great for cleanly uninstalling previous versions, especially if you’ve parachuted into a role at a new company where their previous deployments weren’t documented.

      1. froberg Avatar

        Yeah some assembly required 😉 We have a hefty testing system in place for reader updates, and this option was really simple to manage.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.