Paint.NET, App-V and Visual C++

If you try to sequence Paint.NET and especially on a 64-bit platform using App-V – you might run into the following errors if you attempt to run Paint.NET while in monitoring mode;

clip_image001

Once you are done – the sequence report will show you this;

clip_image001[5]

Once again – you will need a very specific version of the Visual C++ Redistributables – namely; MS11-025: Description of the security update for Visual C++ 2008 SP1 Redistributable Package: June 14, 2011

Ensure this is deployed to the client that will be running the package and the sequencer.

TSM 6.2 Query–Time Calculation

Apparently they redid a couple of things with IBM TSM 6.2 – which allowed a good half of a day to understand the DB2 query language and howto manipulate it.

Apart from the node-name (which should be fairly basic) – the following is the end-result for my finalized query which shows the elapsed time of a job (backups in this specific case) – and providing it in a D HH:MM: SS format. Its so much easier to read.

image

SELECT entity AS "Node name", 
CAST(sum(bytes/1024/1024) AS decimal(8,2)) AS "MB xfer",
SUBSTR (CAST(min (start_time) AS char(29)),12,8) AS "start time", 
SUBSTR (CAST(max (end_time) AS char(29)),12,8) AS "end time",
DAY(end_time-start_time) || ' ' || HOUR(end_time-start_time) || ':' || MINUTE(end_time-start_time) || ':' || substr(DIGITS(SECOND(end_time-start_time))8,10) AS "ELAPSED TIME"
 FROM summary 
WHERE activity='BACKUP' 
AND start_time>=current_timestamp - 24 hours GROUP BY end_time, start_time,entity

 

Adobe Reader Prompts / Performance

This is a repost of an old article published on an old blog.

As Adobe Reader is the most commonly discussed security threat (Microsoft apparently has shapen up in their process to address problems) and its still a widely distributed software – this can be seen as simple ways of improving its performance and end-user experience

Avoiding prompts

Updater
The most common annoyances in a corporation is the automatic updates or call-backs to the vendor. Adobe has for several years released the Customization Wizard which automatically can disable these things in a installation package. Apart from that you can also remove the Update-plugin (to decrease loading time) by removing the .API-file (Updater.api) from the plug_ins folder (C:\Program Files (x86)\Adobe\Reader 9.0\Reader\plug_ins).

Trust Manager
Something that rarely effects people is the Trust Manager and that its set to prompt users before update a root certificate.

image

The setting is available under Preferences –> Trust Manager and can easily be flipped off (Ask before installing). The prompt that may show-up (in case this is left checked) reads something like this;

A new security settings update is available from Adobe Systems. Would you like to install it now?

Edit Warnings
A setting that will lead to less prompts, but perhaps some of them are desired, is the Do not show Edit Warnings

image

Available under Preferences –> General this can be either reset or enabled / disabled. From the help of Adobe Acrobat Reader 8 the following can be read;

Do Not Show Edit Warnings
Disables warning boxes that would normally appear when you delete items such as links, pages, page thumbnails, and bookmarks.

Reset All Warnings
Restores default settings for warnings.

Multimedia-players
There are several settings for howto interact with third-party programs used to view multimedia files

image

The settings for using an external multimedia-player can be defined using two levels of trust; Trusted or Other. Other has a default of prompting the user if they wish to open a file from an “other” source. Trusted is given the benefit of the doubt, and is considered a trusted source and always to allowed being executed.

Digital Signatures
Digital Signatures has several options and specifically there is a hidden setting under Preferences –> Security and by clicking the Advanced Preferences…

image

The default for verifying a signature is to use the method specified within document, however if that is not available it may cause the end-user to be prompted. To alter this – just check the radio-button below to use the Adobe Reader default-method if the document specified method is not available. Personally, I have never been prompted by this.

Performance

Rendering
Adobe Reader have continuely been improving its performance, however in a RDS (or a like) environment there might be settings to improve the usage of the application. Citrix has documented two in their knowledgebase-archive which contains the following resolution;

Disable the options by going to the Edit menu > Preferences > Rendering and uncheck Smooth line art and Smooth images.

Screen Reader
There are quite often loads of tips available online and a common one is to clear out the plug_ins folder. This increases load time, but also disables certain functionality. A specific example is when Adobe Reader is started by opening a document. This may cause performance problems (especially the older versions of Reader), but v9 allows a more granular option.

image

The default option for Screen Reader is to only optimize for larger documents, with the minimum defined for 50 pages. This can be set to Only read the currently visible pages – decreasing the overhead when starting up. It may not give the same performance improvement as when v8.0 was released, but its still an improvement.

One more for the keeping;

http://support.citrix.com/article/CTX119372

1. Open up Adobe Acrobat Reader.

2. In Acrobat Reader, select Edit > Preferences.

3. Under Categories, select Reading.

4. Under the Screen Reader Options section, clear the Confirm before tagging documents checkbox then click OK

Seems to effect Adobe Acrobat Reader 8 on Windows Server 2003 mostly…

Update;

http://kb2.adobe.com/cps/887/cpsid_88761.html

Adobe Acrobat 8 / 9 / X continued

This is a repost of an old article published on an old blog.

imageAfter reading and troubleshooting the Adobe Acrobat in a virtualized environment for quite a while – I intend to finalize some findings in this post.

Aaron Parker has done a great write up around any Adobe software and especially detailed the problems in two posts – all worth reading;
Softgrid: Sequencing Adobe Acrobat 8 – The Story So Far
More on Softgrid and Adobe Acrobat

Microsoft has of course shared some information on specific issues – posted in quite a few articles but never gathered into something collected or posted as a prescriptive guidance.
 
The most common problem one might experience – in general with Adobe, but not really specific – is the licensing engine which has trouble being virtualized.
Adobe has done a general write-up of what to look into when troubleshooting, but their general point of view on virtualization is of course that it is not supported.
To grasp the impact – here are two articles that Aaron Parker (once again) wrote in addressing this specific issue with Adobe products in general (part of a 7-post series):
Addressing Licensing Issues With Adobe CS3 Apps on Softgrid
Update On Running Adobe CS3 Applications in Softgrid

Within the last post there is a comment which is spot on;
Extract the licensing engine (available as a MSI) from an Adobe CS4 cd and deploy it natively. This would be a pre-requisite both before sequencing and when deploying to the client. The file is available (may change of course) in payloads\AdobeALMAnchorServiceAll and can be installed using the following command-line;

AdobeALMAnchorServiceAll.msi ADOBE_SETUP=1 UPGRADINGPRODUCTCODE=1 MSIRESTARTMANAGERCONTROL=Disable

If you are considering the Adobe Acrobat 8 for virtualization – its worth noting that you get your hands on a copy that utilize the Flexnet-licensing engine – as there are other licensing technologies used aswell.
Considering that Microsoft posted an article in regards to 32-bit / 64-bit challenges it may be that the process can be virtualized. If somebody knows – it would be great sharing.

Using Adobe Acrobat X does not require the native deployment of a licensing engine.

Next challenge can be resolved in a number of ways – how is really determined by what possibilities you have. The use of Adobe Customization Wizard 8 and Adobe Customization Wizard 9 gives several possibilities to configure certain options that often are considered standard when performing a large deployment within an enterprise. Exactly which ones are determined by company policy – however disabling of the automatic update feature seems very consistent regardless of corporation.
Using the above tools this can be done in a click – only to be noticed not to stick when deploying a virtualized Adobe Acrobat. The problem is that the specific key disabling the feature is placed within a policies registry key – something which App-v 4.5 handles differently and described in detail by Microsoft. Group Policies are not seen in the virtualized environment and thus the software goes straight to the native instance.
How-to resolve this?
We utilized Group Policy Preference which has the possibility to deploy simply registry keys in a controlled manner. We located the keys using the sequencer to see what was placed within HKLM\Software\Policies and from that knowledge we could determine what was needed to be deployed natively.

As soon as we allowed users to try the software we received reports of the following error (only available in v8/9);

Adobe Acrobat: Could not initialize Organizer database. Organizer Features will not be available.

Just add the LOCAL_INTERACTION_ALLOWED (now always part of the sequence as of 4.6 Service Pack 1) and set it to true. More to read; A Look Under the Covers – The LOCAL_INTERACTION_ALLOWED Tag

Oddly enough it was shown that the entire feature is dependent on an embedded MySQL database that starts-up in the background. The error may not only show up when starting or stopping the software – but also when accessing the menus under File.
Also – it was noted that turning off the following option was improving the experience;
Remember Files in Organizer History For
This is located under Preferences –> Documents and documented more at Adobe

As testing continued a second – very odd – issue was reported which had not been documented anywhere else as far as I could see. Earlier this year a post was made that would explain how-to resolve it.
The error message that the user was presented with notified them that no printer existed;

Before you can perform print-related tasks such as page setup or printing a document, you need to install a printer

Something that everyone  verified shortly there after. Since Adobe installs and sets a printer during sequencing to much of the registry was captured – despite us following the best practice advise of having a dummy-printer installed on the sequencer. Remove the below key post-monitoring and all will be well. If its removed during sequencing – it will hide any natively available information, and produce the same error message once again to the users.

HKCU\Software\Microsoft\Windows NT\Current Version\Windows

 

Update 24-02-2011;
In case you have this problem running Adobe Reader 9.4.2 – see this technote;
http://kb2.adobe.com/cps/891/cpsid_89178.html

Does this mean that a complete and functional Adobe Acrobat now can be distributed to your corporation as a virtualized application?
Unfortunately not. Somethings simply fall out due to the concept of virtualization;

  • PDF-printer will not be available when the package is deployed
  • Adobe Distiller does not work – it just consumes CPU. Considering the above Microsoft article – there may be someone who was successful in sequencing this.
  • Any integration of plugins would of course fail – unless you include those within the virtualized environment

A very nice write-up howto extract the printer and printer driver has been written by Felipe.

Any plugins was determined to not be installed (using the ACW). Any customer that I have been involved with never bothered about the Distiller or PDF-printer – as free (relatively) options were distributed or the feature was simply not requested. Aaron described these issues too and suggested possible ways forward – but that is another topic. Considering that the licensing engine was extracted – any further development that would extract more content would put this in a high-risk zone of not recommended to virtualize.

See complete recipe (most of the knowledge can be applied for all versions – version X has been used for the below writing);

Be prepared;

1. Download the Adobe Customization Wizard X

2. Dowload all the patches you require

3. Create an MST using the tool mentioned in #1.
Following options are to be chosen (apart from what are required – such as licensing etc)
Installation Options;
Disable “Enable optimization”
Features;
Disable all all integration components to other softwares
Registry;
Remove the following registry keys;
HKLM\Software\Microsoft\Windows\CurrentVersion\Run
-Acrobat Assistant 8.0
-Adobe Acrobat Speed Launcher
-Adobe ARM
Shortcuts;
Remove the following shortcuts;
Adobe Acrobat Distiller X
Adobe Acrobat X (desktop)
EULA;
Check “Suppress display of End User License Agreement (EULA)
Online and Acrobat.com Features;
Check the following options;
Disable all updates
Disable registration
When launching in Internet Explorer, prompt user with Open / Save dialog
Disable Help –> Digital Editions
Disable Product Improvement Program
Disable all Acrobat.com access, including initiation and participation
Set the following choices;
Load trusted roots certificates from Adobe; Enable & Install silently
Display PDF in browser; Disable and Lock

Sequence

Install;

Install the MSI and apply the previously created MST
Install all your required patches. With version X its especially recommended to have the latest patch to avoid beeing forced to disable Sandbox-mode. Use at least 10.1.1

Configure;
Don’t perform any steps

Post-configuration;
Delete the following registry-key;
HKCU\Software\Microsoft\Windows NT\Current Version\Windows

I recommend removing all shortcuts apart from Adobe Acrobat.

ISI Toolbox 6.1 Pharma–moving towards x64

 

This is a repost of an old article published on an old blog.

When packaging the Adobe Acrobat plugin ISI Toolbox 6.1 Pharma on a x86 environment and moving the package to a x64 environment – it complains about corrupt licensing. The installer seems to have issues running and installing on a x64 platform – so using App-V you can leverage the fact that you get around the installation while moving forward.

The error states;

Failed to initialize license License object

Sequencer
Windows XP SP3
Main package; Adobe Acrobat Pro 9.4.3
Suited Package; ISIToolBox_61_Pharma_Release_072309
App-V 4.6 SP1 sequencer (probably has no relevance – just that DSC is less hastle with this version)

Note; Do not start Adobe Acrobat while sequencing at any point

Client
Windows 7 x64
App-V 4.6 SP1 client + Hotfix package 1

When performing a vanilla sequence the following is noted just before the error message when reviewing the background activity with Process Monitor.

This indicates a hard-coded path – something often located in a .ini-file or registry. Just checking the registry gave me a bunch of stuff – locate the key that needs to be updated below. You can find the correct places for the version you are using by searching for isi.license.dll.

Usually App-V solves these types of issues by replacing paths with variables (CSIDL), however since it says file:// and then the path – App-V assumes that this is a link to something not part of the package – therefore we have to manually change the path.

There were some assembly references I did not update (they are not listed at all below).

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\CLSID\{063018F7-202A-3701-9525-A57EAEAF259A}\InprocServer32\1.1.4.1001]
“Assembly”=”ISI.License, Version=1.1.4.1001, Culture=neutral, PublicKeyToken=f44a930efc8ab7ca”
“Class”=”ISI.License”
“CodeBase”=”file:///C:/Program Files (x86)/Common Files/ISI/ISIToolBox/License/ISI.License.DLL
“RuntimeVersion”=”v1.1.4322”
[HKEY_CLASSES_ROOT\CLSID\{0B278123-78A5-3B6F-A3A4-9732FDEEDBA0}\InprocServer32]
@=”mscoree.dll”
“Assembly”=”ISI.License, Version=1.1.4.1001, Culture=neutral, PublicKeyToken=f44a930efc8ab7ca”
“Class”=”ISI.LicenseInvalidMachineException”
“CodeBase”=”file:///C:/Program Files (x86)/Common Files/ISI/ISIToolBox/License/ISI.License.DLL
“RuntimeVersion”=”v1.1.4322”
“ThreadingModel”=”Both”
[HKEY_CLASSES_ROOT\CLSID\{0B278123-78A5-3B6F-A3A4-9732FDEEDBA0}\InprocServer32\1.1.4.1001]
“Assembly”=”ISI.License, Version=1.1.4.1001, Culture=neutral, PublicKeyToken=f44a930efc8ab7ca”
“Class”=”ISI.LicenseInvalidMachineException”
“CodeBase”=”file:///C:/Program Files (x86)/Common Files/ISI/ISIToolBox/License/ISI.License.DLL
“RuntimeVersion”=”v1.1.4322”
[HKEY_CLASSES_ROOT\CLSID\{C4856FE7-44B4-3DBF-8F94-768949D66B9E}\InprocServer32]
@=”mscoree.dll”
“Assembly”=”ISI.License, Version=1.1.4.1001, Culture=neutral, PublicKeyToken=f44a930efc8ab7ca”
“Class”=”ISI.LicenseCorruptException”
“CodeBase”=”file:///C:/Program Files (x86)/Common Files/ISI/ISIToolBox/License/ISI.License.DLL
“RuntimeVersion”=”v1.1.4322”
“ThreadingModel”=”Both”
[HKEY_CLASSES_ROOT\CLSID\{C4856FE7-44B4-3DBF-8F94-768949D66B9E}\InprocServer32\1.1.4.1001]
“Assembly”=”ISI.License, Version=1.1.4.1001, Culture=neutral, PublicKeyToken=f44a930efc8ab7ca”
“Class”=”ISI.LicenseCorruptException”
“CodeBase”=”file:///C:/Program Files (x86)/Common Files/ISI/ISIToolBox/License/ISI.License.DLL
“RuntimeVersion”=”v1.1.4322”
[HKEY_CLASSES_ROOT\CLSID\{DEE60E4D-4E40-3F3E-95C7-63B85AD2A17F}\InprocServer32]
@=”mscoree.dll”
“Assembly”=”ISI.License, Version=1.1.4.1001, Culture=neutral, PublicKeyToken=f44a930efc8ab7ca”
“Class”=”ISI.LicenseInvalidException”
“CodeBase”=”file:///C:/Program Files (x86)/Common Files/ISI/ISIToolBox/License/ISI.License.DLL
“RuntimeVersion”=”v1.1.4322”
“ThreadingModel”=”Both”
[HKEY_CLASSES_ROOT\CLSID\{DEE60E4D-4E40-3F3E-95C7-63B85AD2A17F}\InprocServer32\1.1.4.1001]
“Assembly”=”ISI.License, Version=1.1.4.1001, Culture=neutral, PublicKeyToken=f44a930efc8ab7ca”
“Class”=”ISI.LicenseInvalidException”
“CodeBase”=”file:///C:/Program Files (x86)/Common Files/ISI/ISIToolBox/License/ISI.License.DLL
“RuntimeVersion”=”v1.1.4322”
[HKEY_CLASSES_ROOT\CLSID\{EF11C26C-CE73-30C6-8D58-8085BBBB8FF4}\InprocServer32]
@=”mscoree.dll”
“Assembly”=”ISI.License, Version=1.1.4.1001, Culture=neutral, PublicKeyToken=f44a930efc8ab7ca”
“Class”=”ISI.LicenseExpiredException”
“CodeBase”=”file:///C:/Program Files (x86)/Common Files/ISI/ISIToolBox/License/ISI.License.DLL
“RuntimeVersion”=”v1.1.4322”
“ThreadingModel”=”Both”
[HKEY_CLASSES_ROOT\CLSID\{EF11C26C-CE73-30C6-8D58-8085BBBB8FF4}\InprocServer32\1.1.4.1001]
“Assembly”=”ISI.License, Version=1.1.4.1001, Culture=neutral, PublicKeyToken=f44a930efc8ab7ca”
“Class”=”ISI.LicenseExpiredException”
“CodeBase”=”file:///C:/Program Files (x86)/Common Files/ISI/ISIToolBox/License/ISI.License.DLL
“RuntimeVersion”=”v1.1.4322”
[HKEY_CLASSES_ROOT\CLSID\{FFEB2081-F83C-35B9-953C-07424028766D}\InprocServer32]
@=”mscoree.dll”
“Assembly”=”ISI.License, Version=1.1.4.1001, Culture=neutral, PublicKeyToken=f44a930efc8ab7ca”
“Class”=”ISI.Register”
“CodeBase”=”file:///C:/Program Files (x86)/Common Files/ISI/ISIToolBox/License/ISI.License.DLL
“RuntimeVersion”=”v1.1.4322”
“ThreadingModel”=”Both”
[HKEY_CLASSES_ROOT\CLSID\{FFEB2081-F83C-35B9-953C-07424028766D}\InprocServer32\1.1.4.1001]
“Assembly”=”ISI.License, Version=1.1.4.1001, Culture=neutral, PublicKeyToken=f44a930efc8ab7ca”
“Class”=”ISI.Register”
“CodeBase”=”file:///C:/Program Files (x86)/Common Files/ISI/ISIToolBox/License/ISI.License.DLL
“RuntimeVersion”=”v1.1.4322”
[HKEY_CLASSES_ROOT\Record\{21E52839-5296-3F32-9B13-4F9FF30FD183}\1.1.4.1001]
“Assembly”=”ISI.License, Version=1.1.4.1001, Culture=neutral, PublicKeyToken=f44a930efc8ab7ca”
“Class”=”ISI.LicenseHResult”
“CodeBase”=”file:///C:/Program Files (x86)/Common Files/ISI/ISIToolBox/License/ISI.License.DLL
“RuntimeVersion”=”v1.1.4322”
[HKEY_CLASSES_ROOT\Record\{F4EA5A3C-EE9B-3FB0-A2B7-D18B82E6259E}\1.1.4.1001]
“Assembly”=”ISI.License, Version=1.1.4.1001, Culture=neutral, PublicKeyToken=f44a930efc8ab7ca”
“Class”=”ISI.LicenseType”
“CodeBase”=”file:///C:/Program Files (x86)/Common Files/ISI/ISIToolBox/License/ISI.License.DLL
“RuntimeVersion”=”v1.1.4322”

Adobe and Flexnet

image

This is a repost of an old article published on an old-blog.

Ever since Aaron Parker did a series on how to virtualize Creative Suite 3 and the slightly updated post regarding virtualizing Adobe Acrobat (8/9) on my part – licensing has been a discussion surfacing when discussing Adobe applications.

This resurfaced again – this time while using a Photoshop Elements 8 package and Adobe Creative Suite 3 / 4 or Acrobat 8 / 9 at the same time. It relates to different versions of the FlexNet license engine running – and if a compatible version of the engine is not available the licensing will fail.

Using a Adobe Anchor MSI from the Creative Suite 3 or 4 DVD has been the solution so far – once you deploy that natively to both your clients and sequencers the problem is resolved (as first posted in the comments on Aarons blog). The FlexNet service will only run one instance that is available natively – as opposed to running several instances virtualized.

As Photoshop Elements 8 uses the same FlexNet service, we didn’t anticipate a problem in reusing the previously recommended solution. The FlexNet service is good in such a way that it is backwards compatible – so any Creative Suite 3 application can use the newer Creative Suite 4 service. Photoshop Elements 8 did require a newer version – yet again – of the service. Something that was not provided as an easy to extract MSI. 
To break it down:

· AdobeALMAnchorServiceAll.msi – from the Creative Suite 3 DVD

· AdobeALMAnchorService2-mul.msi – from the Creative Suite 4 DVD

There is an update for Adobe Acrobat 8 which installs a newer version of the FlexNet service compared to CS4. This looks a little bit different in terms of how it’s installed.

image

It seems that all that is provided is a .DLL and an .EXE – when executing the following is printed out:

Trying to install anchor service… 
Installation succeeded.

What version does the Photoshop Elements 8 require? Since we had setup the sequencer with the Creative Suite 4 edition of the FlexNet service – it would have been all set incase it could live with the version from Creative Suite 4. However – as part of the package there was an update file relating to the FlexNet service.

image

It seems that Photoshop Elements 8 indeed require a newer version of the Flexnet-service compared to both the patch and the previously used Creative Suite 4 installed service. However – this update was baked into the installer for Adobe Photoshop Elements 8 and not so easily extracted as the MSI from the Creative Suite 4 media.

Remember the FNP_Act_Installer.dll above from the licensing-service path installation-kit?

image

It seems there is a copy located in the folder of Elements Organizer 8.0 when Photoshop Elements 8 is installed. The above screenshot shows the new FNP_Act_Installer.dll copied in along side with the older-version of the license patch (named FNP_Act_installerold.dll).

What if you run the InstAS.exe now? Actually it installs the service or updates to the required version.

However, our story does not end here. It seems that when installing the MSI from the Adobe CS3/CS4 media – it does one more additional thing apart from just installing a service. Using the above service will fail unless you are executing a dependent application with non-elevated privileges – as the user does not have the permission to trigger a start of the service.

The permissions of the services differ from the default permissions applied to a standard service installation. A working installation of the FlexNet Licensing Service has the following permissions applied:

C:\Users\nicke>sc sdshow “FlexNet Licensing Service” 
D:(D;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;NU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CC 
DCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCLCSWRPLOCRRC;;;IU)

For a full understanding of what the above permissions list means, please see the following web page: 
http://msmvps.com/blogs/erikr/archive/2007/09/26/set-permissions-on-a-specific-service-windows.aspx

The relevant permissions are the following extract:
(A;;CCLCSWRPLOCRRC;;;IU) 
Which means that Interactive User (IU) has Query Config, Query Status, Enumerate Dependts, Interrogate, User Defined Control, Read security descriptor, Start service permissions (and whatever else was missed).

An export of the permissions from the registry looks as follows:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\FlexNet Licensing Service\Security] 
“Security”=hex:01,00,14,80,8c,00,00,00,98,00,00,00,14,00,00,00,30,00,00,00,02,\ 
00,1c,00,01,00,00,00,02,80,14,00,ff,01,0f,00,01,01,00,00,00,00,00,01,00,00,\ 
00,00,02,00,5c,00,04,00,00,00,01,00,14,00,ff,01,0f,00,01,01,00,00,00,00,00,\ 
05,02,00,00,00,00,00,18,00,ff,01,0f,00,01,02,00,00,00,00,00,05,20,00,00,00,\ 
20,02,00,00,00,00,14,00,ff,01,0f,00,01,01,00,00,00,00,00,05,12,00,00,00,00,\ 
00,14,00,9d,01,02,00,01,01,00,00,00,00,00,05,04,00,00,00,01,01,00,00,00,00,\ 
00,05,12,00,00,00,01,01,00,00,00,00,00,05,12,00,00,00

That means that an interactive (logged on) user can start the service and therefore receive its licensing information. If the above is not implemented – the following error message can be seen:


Licensing for this product has stopped working.

This product has encountered a problem which requires that you restart your computer before it can be launched.

If your continue to see this message after restarting your computer, please contact either your IT administrator or Adobe technical support for help, and mention the error code shown at the bottom of this screen;

Error: 147:21

This error has also reported in a few forum posts:

http://forums.adobe.com/message/2989946
http://forums.adobe.com/message/3433233
http://www.appdeploy.com/messageboards/tm.asp?m=53453

Virtualized Office 2010 and Extended MAPI

In the forums there are a couple of threads which state that using the Send file via default mail-client fails in certain instances (most commonly when using any Adobe software) when using a virtual Outlook with the Office Deployment-kit.
In short, they open their application (Adobe Reader) and choose  a menu which allows them to directly forward their document to a new e-mail (click the letter in Adobe Reader available from the toolbar). Most commonly this fails with an error stating that there is no default mail client (and sometimes afterwards a more obscure error)

The below article explains MAPI and is quite useful;
http://support.microsoft.com/kb/315458
Which under #3 states the following;

3.It then looks under the client’s key to find the path of the correct DLL to load. If the function is a Simple MAPI function, it loads the DLL specified by the DllPath value, and then calls the function. If the function is an Extended MAPI function, it loads the DLL specified by the DllPathEx value. After finding the appropriate DLL, it then calls the function.

 

In the case of Microsoft Outlook, for example, it looks for the value of DLLPath or DLLPathEx under the following key:
HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\Microsoft Outlook

Reviewing a procmon log to see what the application does – the following was found;
Within %TEMP% there are two log-files for the Mail proxy;
MapiProxyServer.log
MapiProxyClient.4916.log

Its nice to know there are log files for troubleshooting- they don’t tell us a whole lot about the behavior currently under investigation though and will only show if the proxy is initiated. Adobe Reader (in this case) fails before the proxy is actually used – so the two log-files were only located during a successful attempt to kick-start the proxy (right-click a file and choose send-to).

The following is being accessed by Adobe Reader while invoking the action to send an e-mail;

image

Considering the above statement this tells us;
1. Adobe Reader uses an Extended MAPI function
2. That’s not supported when using a virtual Outlook with the Office deployment kit since DLLPathEx isn’t created when using the kit

The Process Monitor capture above shows us that there are several registry keys and files that are traversed – to understand the flow the previously mentioned KB-article can be used to decipher why certain things are accessed in the very specfic.

First of all – if one of the below functions are used;
◦MAPIAddress
◦MAPIDeleteMail
◦MAPIDetails
◦MAPIFindNext
◦MAPIFreeBuffer
◦MAPILogoff
◦MAPILogon
◦MAPIReadMail
◦MAPIResolveName
◦MAPISaveMail
◦MAPISendDocuments
◦MAPISendMail

Its called Simple MAPI and the registry value DLLPath is used to locate the default main client. This seems to correspond to the most commonly used parts of the mail-client, however if any other function is used – DLLPathEx is lookedup to find the extended MAPI. Read more about MAPI from Microsoft in the article Differences between CDO, Simply MAPI and Extended Mapi.  If the lookup fails for the above registry value needed – a search for mapi32x.dll is started. Mapi32x.dll is a fallback and quite often not available at all on  a system. If you program starts searching for this – it means something has most likely failed.

Last stop is to present the user with a message that there is no mail-client – defined therefore it will check the PreFirstRun-key (perhaps you have a mail-client, buts its not setup?) or the NoMailClient for the corresponding message to present the users.

If reviewing a package containg a copy of Outlook – the keys looks like this;

image

Opening the file with PE Explorer or Resource Hacker reveals the below information regarding the OLMAPI32.dll file;

image

It seems that the file originated from MAPI32.dll – however offering an upgraded set of functionality.

Traversing the registry and comparing what Office 2010 layed down under the HKLM\Software\Clients key and what the Office 2010 Deployment Kit layed down showed some staggering limitations. A native install creates the following;

image

The Office 2010 App-V Deployment Kit creates the following;

image

We have 1 proxy with the deployment kit and 4 when using a native install. The MAPI, as we now know, is not complete either.

Threads;

http://social.technet.microsoft.com/Forums/en-US/appvgeneralsequencing/thread/0df815ae-19d6-4a2a-b028-b636952c91c9

http://social.technet.microsoft.com/Forums/en-US/appvgeneralsequencing/thread/8b028304-866d-4288-89df-01fd81e56b3e

http://social.technet.microsoft.com/Forums/en-US/appvgeneralsequencing/thread/149602b4-f894-4955-8b0e-fc7bff56e65e

http://social.technet.microsoft.com/Forums/en-US/appvclients/thread/a0f6e9ac-d3f7-4c86-831c-f93daee11511

App-V 4.6 SP1 Sequencer and Long Package Names

After running into an issue when testing the App-V 4.6 SP1 Hotfix 3 sequencer to provide two Mozilla-programs; Thunderbird and Firefox – an minor investigation came into play to locate the part of everything involved that broke a key feature of App-V 4.6 SP1.

Lets start at the beginning;
One key feature of App-V 4.6 SP1 is to allow the administrator to avoid thinking about setting up the sequencer with all minor tweaks and details that allows for a smooth sequencer experience as well as minimizing effort during sequencing. Part of this change is;

1. Support for using long-names for package names and root-directories
2. Creation of prerequisites such as the mount point (Q: ) and dummy ODBC-connections
3. Reports on potential issues before and after sequencing

During the initial release of 4.6 SP1 of the brand new sequencer – there was a minor bug relating to bullet # 2 and how the new sequencer setup the Q: – drive and  handling registrations of resources resulting in  failure when using packages on the client.
To remedy the problem a new hotfix was released that resolved this.

Bullet # 1 is the topic of interest for this next peculiar issue – how this feature works is quite elegant in some ways, however it does remove some of the control from the administrator if using long-names for package root and package names.

image

As you can see – package name and root directory (named Primary Virtual Application Directory in the above screenshot) are linked  together – you can check the Edit (Advanced) checkbox to type in your own root directory. Previously a strict enforcement was used to ensure that no short name was created for the root directory – simply by only allowing a 8.3-compliant name to be used as root directory. App-V 4.6 SP1 introduced the possibility to used long names. The requirement of a unique 8.3-root directory is still there, but instead the sequencer will generate a randomized short name for you.

image

As the sequencer generates this for you – the need and worry about having conflicting root directories disappears. As you can see in the above screenshot – a completely random short name is generated by the sequencer.

After completing an installation of Mozilla Firefox 9 or Mozilla Thunderbird 9 to the recommended root directory (not the default installation path) – the following occurs;

image

As you can see – once the installation is completed for Firefox 9 – the randomized short name is gone and instead replaced by a system generated short name.

The previously very delicate and important topic of ensuring unique and short name-compliant root directories just became very important – again. Why this happens (so far only seen with Mozilla installers) is unknown.

Trying to import two packages will generate a failure. Saving the package and opening it in the Package Editor reveals the following details as part of the package under the Files-tab;

image

Repeating the procedure, but instead performing an installation to the suggested default installation directory maintains the randomly generated short name.

System Center Configuration Manager 2007

Some nice links for deploying System Center Configuration Manager 2007

http://ccmexec.com/2011/03/installing-sccm-2007-prerequisites-unattended/

http://ccmexec.com/2010/12/sccm-post-installation-checklist/

http://ccmexec.com/category/system-center-configuration-manager/page/8/

http://myitforum.com/myitforumwp/2011/11/04/configmgr-2007-two-important-changes-that-will-speed-up-cm-inbox-processing/

Open Text Windows Viewer–virtual vs native install

If you have a native install of Open Text Windows Viewer (any version) and want to contaiimagen and co-operate a virtualized Open Text Windows Viewer you might run into a problem if the application uses certain COM-objects. As opposed to star the virtualized instance – the native application gets called every time. Try removing the following value while in monitoring mode;

HKCR\CLSID\ {30446849-11E3-11D0-9D4E-0020AFC0E4C0}\InprocHandler32

If you review the activity using Process Monitor – you will notice that SVCHOST.exe is the process that attempts to start alviewer.exe. The reason is explained by Sasha in one of the previously posted interviews.