Adobe Creative Cloud and integration (and the challenge with AppV)

Adobe Creative Cloud is the latest way that Adobe will now offer software on a subscription model (or software as a service, or the cloud, or… well whats the new buzzword?). This allows customers to pick and select what software they want to use, download the media and then install the software they desire.

The installers are quite hefty and if you download almost all software within a suite you end up with a big-bundle of software in a rock-solid 16gb installation package. Even splitting up everything into an installation package per software (such as Photoshop..) the installation itself usually weigh in at 1-2gb.

Usually the software are standalone applications, however two pieces within the suite offer integration across applications. Adobe Bridge and Extendscript Toolkit seem to integrate into just about any piece of software.

Lets run through a few examples;

Any software allows the immediate jump to Adobe Bridge;

image

Adobe Bridge has the ability to execute startup scripts and each software installed will provide their own set;

image

Extendscript Toolkit will list all software (and the objects they are using);

image

It seems that the ability to integrate between these different pieces of software is a mixture of feature enablement and simple listing of folders.

The startup-scripts for Adobe Bridge for example seem to directly correlate to the amount of folders listed within the Startupscripts CC folder;

image

The ability to directly see different pieces of software through Extendscript Toolkit and the ability to invoke Adobe Bridge doesn’t seem to be related to the enumeration of any folder.

After reviewing procmon activity for quite a while there seems to only be single processing of a file that I didn’t fully explain. Now, this seems “easy to identify”, right? Keep in mind that I stated that there is _one_ file which is processed during startup that I didn’t fully explained. This means; I have taken the time to understand every single file which Bridge reads, or attempts to read during startup. I also processed captures when starting Bridge from any other suite, or when Extendscript Toolkit started.

image

Yes, figuring this out took me about 3 days of just reviewing and explaning every single line that Process Monitor gave me during a few use cases. Process Monitor doesn’t tell you whats wrong – it tells you what happens.

 

image

Once realising that this file was unexplained it is time to understand it a bit more…

The PCD.DB file, which is an unknown extension, was processed during each startup. If opening the file with notepad the following showed up;

image

SQLite Format 3 seems to relate to a database and after a quick search a utility to browse the database was found –  named SQLite Database Browser.

Cracking the PCD.DB file with SQLite DB Browser immediately showed this;

image

Reviewing the data using Browse Data tab the contents could be immediately spotted;

image

 

Why is this relevant? It seems that the integration between different pieces of the Adobe-suite has a check against this database if the component that it wants to integrate with is actually installed. As everything is contained into a single file it becomes a nightmare to manage in – lets say… – a Connection Group within App-V. In essence it means that the last file that gets read is the one that sets the stage for all Adobe-software. For example:

You create a package with Adobe Photoshop.

You create a new package with Adobe Bridge

If the Photoshop-package is the last one to load, the db-file will not contain any information about Adobe Bridge (as it is effectively overwritten by the one created in the Photoshop-package).

How do you handle it? You start with the worst case scenario!

Generate a package with all software you are licensed to install, install it and then save a copy of the PCD.DB.

Insert this file into every single Adobe (CC)-package you will create and the integration will work without issues!

Adobe Photoshop CS 6 and App-V

Adobe still has a problem with beeing virtualized using App-V and when certain versions of the Visual C++ Redistributable components aren’t available on both the sequencer and all possible clients that will run the software. Quite a few instances have been reported of software that has had similiar problems – but newer versions of Adobe consistently seem to run into the problem. There is a thread on appvirtguru.com named Adobe Photoshop CS6 recipe? that explains the errors when you attempt to sequence it.

The errors presented were;

Activation context generation failed for "Q:\PshopCS6.001\VFS\CSIDL_PROGRAM_FILES_COMMON\Adobe\OOBE\PDApp\core\adbeape.dll".Error in manifest or policy file "Q:\PshopCS6.001\VFS\CSIDL_PROGRAM_FILES_COMMON\
 Adobe\OOBE\PDApp\core\Microsoft.VC90.CRT\Microsoft.VC90.CRT.MANIFEST" on line 3. Component identity found in manifest does not match the identity of the component requested. Reference is Microsoft.VC90.CRT,processorArchitecture="x86",type="win32",version="9.0.21022.8". Definition is Microsoft.VC90.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",
 type="win32",version="9.0.30729.4148". Please use sxstrace.exe for detailed diagnosis.

Activation context generation failed for "Q:\PshopCS6.001\VFS\CSIDL_PROGRAM_FILES_COMMON\Adobe\OOBE\PDApp\core\adbeape.dll". Dependent Assembly Microsoft.VC90.CRT,processorArchitecture="x86",type="win32",version="9.0.21022.8" could not be found. Please use sxstrace.exe for detailed diagnosis.

Reading the above information – you can see that a very specific component is missing – often relating to Microsoft VC90 CRT 9.0.21022.8 and Microsoft VC90 CRT 9.0.30729.4148. Those versions seems to be available in Microsoft Visual C++ 2008 Service Pack 1 Redistributable Package ATL Security Update – which you can download and pre-sequencing install on the sequencer and then also deploy to all clients who will be running the virtualized package.

Other notes;

Sequencing Adobe CS6 for App-V – Part 1, the prep

Sequencing Adobe CS6 for App-V – Part 2, the sequencing

Sequencing Adobe CS6 for App-V – Part 3, the testing/how/why

“Gotcha” when sequencing Adobe CS6 (Malformed XML when importing)

Adobe Photoshop Elements 10–sequence

Preparation

Read the very well written article regarding Adobe Photoshop Elements 9 that deals with traditional deployment– as it covers what is left out of both the official Adobe Photoshop Elements 9 / 10 (their headline says its only v 9 – but the applicable version-tag says both versions) article from Adobe and the Appdeploy.com notes. Basic preparation for any type of deployment should include the following as a good starting point;

1. Prepare an application.xml.override file
Contents;

<?xml version="1.0" encoding="utf-8"?>
<Configuration>
<Payload>
<Data key="EULADelay">0</Data>
<Data key="EULA">Suppress</Data>
<Data key="Registration">Suppress</Data>
<Data key="Updates">Suppress</Data>
</Payload>
</Configuration>

Should be placed in the same folder (two copies in the end) as Adobe Photoshop Elements 10.msi and Elements 10 Organizer.msi

2. Prepare setup.ini by altering the OEM-section to the below notes;

DISABLEEMSFEATURES=1
DISABLEOLSFEATURES=1
WATCHSERVICE=0

3. Install Visual C++ 2008 SP1 x86
That means you should install specifically that version. Available at Microsoft. Not any other version. Not a newer patch. Not a newer hotfix. But that specific version. Both at the sequencer and target client. That specific version is not included with the App-V Sequencer and App-V client.
The Programs and Features looks like this on a machine that works. The first one (.17) is the exact version that you need.

image

Installation

Begin the sequencing according to your naming standards and proceed with installing Adobe Photoshop Elements 10 during the monitoring phase. I do believe that there is no difference in performing a VFS v a mount point installation, but so far only a mount point installation has been tested.

Configuration

Do not start Adobe Photoshop Elements 10 at any given point.

Save your package

Deploy

When deploying this to the client you need the above mentioned version of Visual C++ installed natively to deploy it. See a list of all Visual C++ versions that are currently installed on the test-system see below;

image