Suppress Acrobat 9 Pro Self-Heal

From AFP548 Wiki
Jump to navigation Jump to search

For Acrobat Pro 9 and Acrobat Distiller 9

The sed method[edit]

To bypass the Self-heal check and repair phase, apply the following two one-liners using the command line, ARD UNIX command or a payload-free package:

sed -i .bak 's/\<string\>AcroEFGPro90SelfHeal\.xml\<\/string\>//g' /Applications/Adobe\ Acrobat\ 9\ Pro/Adobe\ Acrobat\ Pro.app/Contents/MacOS/SHInit.xml

sed -i .bak 's/\<string\>AcroEFGDist90SelfHeal\.xml\<\/string\>//g' /Applications/Adobe\ Acrobat\ 9\ Pro/Acrobat\ Distiller.app/Contents/MacOS/SHInit.xml

This can also be applied to the files before being packaged up (instead of /Applications/Adobe... Instead, it would be pointed at the temp located for the package app being used).

What this does is it empties out the "selfhealingfilename" key in the "/Applications/Adobe Acrobat 9 Pro/Adobe Acrobat Pro.app/Contents/MacOS/SHInit.xml" file (and its Distiller equivalent) which controls the entire Self-heal process, effectively causing it to skip all actions. Removing the key entirely causes Acrobat Pro/Distiller to throw an error on launch, so emptying the entry out is the only safe method.

It has been verified by others that the contents of SHInit.xml have not changed since Acrobat Pro 9.0 so it would also be safe to simply push a package containing the modified contents with the empty key present. Munki or Puppet could be used to ensure the edited file remains in place.

MCX Method[edit]

Another method to suppressing self heal is to trick Acrobat into thinking it has already self healed. The advantage to this method, is that your not modifying adobe acrobat 9.0. Which means automatic download & update from adobe continue to work without issue. The downside to this method, is if adobe release another update, you may need to add additional plist entries.
to do this add ~/Library/Preferences/com.adobe.acrobat.90.sh to your MCX (local or Open Directory). to the MCX com.adobe.acrobat.90.sh add under "often":
"NoViewerSelfHealNeeded Apr 3 2010", boolean, true
"NoViewerSelfHealNeeded Aug 13 2010", boolean, true
"NoViewerSelfHealNeeded Jan 30 2011", boolean, true
"NoViewerSelfHealNeeded Jun 12 2008", boolean, true
"NoViewerSelfHealNeeded Jun 19 2010," boolean, true
"NoViewerSelfHealNeeded Oct 3 2009", boolean, true
"NoViewerSelfHealNeeded Sep 22 2010", boolean, true