Suppressing the EULA for Adobe Reader DC 2020

snowfox
Contributor III

Hi all,
I'm wondering how people are suppressing the EULA on Adobe Reader DC 2020? Have you had any problems with this? I can't get it to stop popping up. I'm wondering how others are handling this? I've read through the Adobe Admin guide for Macintosh and it mainly focuses on Acrobat DC, not Reader DC. The Wizard doesn't work for Reader DC, apparently the EULA can't be set via a plist setting and the Adobe_prtk only seems to support products with serial numbers. It used to be a simple case of placing a customized com.adobe.Reader.plist file in the users preferences folder but from my tests on 10.15.5, now that doesn't appear to be working either. Any suggestions would be greatly appreciated as Adobes documentation for customizing Reader is quite poor. Many thanks.

5 REPLIES 5

shaquir
Contributor III

Hi @snowfox,
The EULA is nested within the "DC" dictionary as "EULAAccepted" in ~/Library/Preferences/com.adobe.Reader.plist. It accepts Boolean values.

This will take care of it on your machine.

/usr/libexec/PlistBuddy -c 'Add :DC:EULAAccepted bool true' ~/Library/Preferences/com.adobe.Reader.plist

I put together this script to accept the EULA on a wider scale:

#!/bin/bash
#Script to accept EULA of Adobe Reader for all users
#Shaquir Tannis 7-1-2020

##Fill User Template
#Adds approval to User Template for all future Users
/usr/libexec/PlistBuddy -c 'Add :DC:EULAAccepted bool true' "/System/Library/User Template/Non_localized/Library/Preferences/com.adobe.Reader.plist"
#Modifies permissions to ensure it works for users
/bin/chmod 644 "/System/Library/User Template/Non_localized/Library/Preferences/com.adobe.Reader.plist"


#Determine current users and their home directories
for user in $( /usr/bin/dscl . list /Users Password | awk '$2 != "*" {print $1}' );do 
    homes+=( $(/usr/bin/dscl . read /Users/$user NFSHomeDirectory | /usr/bin/awk '{print $2}' ) ) 
done

#Fill Existing User
for home in ${homes[@]};do
    userName=$( /bin/echo $home | /usr/bin/awk -F '/' '{print$NF}' )
    #Modifies plist for user
    /usr/libexec/PlistBuddy -c 'Add :DC:EULAAccepted bool true' "$home/Library/Preferences/com.adobe.Reader.plist"
    #Changes ownership for the user
    /usr/sbin/chown "$userName" "$home/Library/Preferences/com.adobe.Reader.plist"
    #Modifies permissions to ensure it works for user
    /bin/chmod 644 "$home/Library/Preferences/com.adobe.Reader.plist"
    #/usr/bin/su "$userName" -c "/usr/bin/defaults read $home/Library/Preferences/com.adobe.Reader.plist"
done

snowfox
Contributor III

Thank you @ Shaquir, I will have another go at this using your script.

snowfox
Contributor III

@ Shaquir. That worked :D You saved my bacon on this one. I have a deadline coming up for lab deployments. What tripped me up was all this talk of read only system volumes and that we could no longer customize the default user template. They seem to be making it freely accessible now via the hidden data volume / redirecting it to /Library/User Template. I shall have to look into this further. Thanks again for the info.

shaquir
Contributor III

No worries! I'd be more than happy to break down part of the script if you need.

Edit:
Hindsight it'd probably make more sense to just upload the com.adobe.Reader.plist to Configuration Profiles:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>DC</key>
    <dict>
        <key>EULAAccepted</key>
        <false/>
    </dict>
</dict>
</plist>

petecurtner
New Contributor II

FWIW, your array will return every homedir, even the 'fake' ones from users nobody and daemon etc.

Probably a more elegant way to do this, but I couldn't quite get the array/delete - so instead we could grep out the OS and service accounts:

for user in $( /usr/bin/dscl . list /Users Password | grep -v -e{daemon,nobody,root,jssmanagement,localServiceaccount,anotherServiceAccount} | awk '$2 != "*" {print $1}' ); do
   homes+=( $(/usr/bin/dscl . read /Users/$user NFSHomeDirectory | /usr/bin/awk '{print $2}' ) )
done