App-V 5 Beta 2 Deployment

Well.. SCCM 2012 makes a lot of things easier… For example – getting all the Visual C++ Redistributables in place.

image

The above is a picture of all the things that are layed down when deploying the App-V 5 Beta 2 client. Most of the list can be found in the older article on howto setup a packaging machine, some are new (such as the Windows Management Framework 3.0 or http://support.microsoft.com/kb/2533623) and others are skipped (J# 1.1..).

Howto update Microsoft Office via Microsoft Update when sequencing

So – this topic has surfaced quite a few times. So, here is a guide on howto update Microsoft Sharepoint Designer 2010. This assumes that you have a created a package of Microsoft Sharepoint Designer 2010 already.

1. Revert you sequencer and ensure that you are allowed to use Windows Update.
2. Ensure it has Microsoft Update is installed
3.  Ensure that Microsoft Update can be started within the sequencer;
Open the .SPRJ-file with Notepad.
image

Locate the line AllowMUADuringMonitoring and check the Value=”Yes”. If it doesn’t – change it and save the file.

4. Ensure that Office 2010 Deployment Kit for App-V is installed with the property SPD=1. You will need the bits the corresponds to your operating system version.

5. Start the Application Virtualization Sequencer. Choose to Modify an existing Package and choose to Add new application.

6. Select your package, pass-through the report. Choose to perform a custom installation

7. Run Microsoft Update and apply the desired updates.

8. Check I am finished installing and click Next.

9. If there are new configurations that require you to start Sharepoint Designer – you may do so. Otherwise its recommended to skip the manage first use tasks step when performing an upgrade. Click Next

10. Skip the post-package report and click Next. Choose Stop Now (unless you wish to optimize the package).

11. Save the package.

Open Text Document Pipeline Base and services

Within the Technet-forums there was an issue posted regarding a problem with sequencing Open Text Document Pipeline Base and it referred to several error messages that were generated while attempting to run the installer in monitoring mode when using the App-V 4.6 SP1 / SP2 beta sequencer

The main culprit seems to be that as part of the installation – a service is started, or as happens while sequencing; it tries to start the service that was installed. This actually assumes the fact that you would install the service to run within the local-system context – and not as a service account as that is not supported within App-V 4.x. Since the service can not be started – if you cancel, the installation rollbacks and renders your capture useless.

This service is called Archive Spawner – or spawner for short. If opening services.msc and choosing manually to initiate the startup – you get a message that tells you the service started and then stopped again. If attempting to check the properties of the service you would receive another error message with saying this;  “The parameter is incorrect”.

Obviously – we don’t care about any parameters as the service started – and then stopped. The question here is – why it stopped? Lets attempt to start the process that would normally run in the context of the local-system account or a service-account for this piece of software;

C:\Program Files\Common Files\Open Text\Spawner\bin>spawner.exe
spawner: cannot open file \00SPAWNER.conf

Well – thats odd. A file that attempts to be opened using the path of \00SPAWNER.conf. Verifying the activity with Process Monitor you can see that the service (spawner.exe) attempts to read the file c:\00SPAWNER.conf – which isn’t there. (yes – you can run Process Monitor while in monitoring mode – you just need to ensure that its properly started and loaded its device driver before you start any monitoring.). Poking around the package tells you that the file is placed here; C:\ProgramData\Open Text\CONF_DIRS.
As an installation while not beeing in monitoring mode doesn’t generate this error – what could be different while in monitoring mode?

Poking around the system we can see that the following system environment variables are created;

If checking via a command prompt – the following happens;

As you can see – no EMC variables are seen from within the Command-Prompt. This seems odd. As the Technet-forum post above stated – this seems to be succesfully sequenced within App-V 5 – so there has obviously been improvements to that area. Comparing the Command-Prompt output of “SET” while installing this application natively – does show our EMC environment variables and also shows them in the GUI.  What can we do to resolve this problem? Creating the variables via the GUI does not seem to make any difference (they are already there), setting them via the SETX -command doesn’t do anything while we are in monitoring mode (not more visible after we run the command) – however, we could attempt to reset everything and set them as a prerequisite.

Run the following commands on the sequencer before you start the sequencer;

setx ECM_CONF_DIRS "C:\ProgramData\Open Text\CONF_DIRS" /M
setx ECM_DOCUMENT_PIPELINE_BASE "C:\Program Files\Open Text\BASE Document Pipeline 9.7.1" /M
setx ECM_DOCUMENT_PIPELINE_CONF "C:\ProgramData\Open Text\BASE Document Pipeline" /M
setx ECM_LOG_DIR "C:\ProgramData\Open Text\var\LogDir" /M
setx ECM_VAR_DIR "C:\ProgramData\Open Text\var" /M

Once you are in monitoring mode – the installation will now pass on without issues. Since there isn’t any entry point (aka virtual extension) for this application – there will not be an OSD-file generated. OSD-files usually contain the environment variable configuration – so you will need create a dummy file (shortcut to whatever you like) inorder to verify if the environment variables are captured within your package (most likely not) and actually show up within the OSD-file. You could attempt to run the setx-commands while in monitoring mode, that will unlikely ensure that they end up in the package as they already exist within the sequencer. Worst case – simply choose to open this in Edit Mode and then add the environment variables under the OSD-tab in the sequencer.

App-V 4.6 Compliance Baseline for SCCM 2012

Just created a Compliance-baseline for the App-V 4.6 client to be used within System Center Configuration Manager 2012 .

image

Above is a sample screenshot of the items that are beeing checked – some of them contains remediation tasks, others are just for information. There are quite a few checks there that should be verified if they suite your environment – this is the recommended practices of me, myself and not Microsoft or anyone else. The CAB-file can be download here; SCCM2k12MSAppV46baseline.cab

The checks;

AllowDisconnectedOperation
Enables or disables disconnected operation. Default value is 1 enabled, and 0 is disabled. When disconnected operations are enabled, the App-V client can start a loaded application even when it is not connected to an App-V Management Server.
Checks for 1
Remediate: Yes

AllowIndependtFileStreaming
Indicates whether streaming from file will be enabled regardless of how the client has been configured with the APPLICATIONSOURCEROOT parameter. If set to FALSE, the transport will not enable streaming from files even if the OSD HREF or the APPLICATIONSOURCEROOT parameter contains a file path.
0x0=False (default)
0x1=True
Checks for 1
Remediate: Yes

App-V Version
Checks the version of sfttray.exe
Checks for 4.6.1.30121
Remediate: No

AutoLoadTarget
Indicates what will be auto-loaded when any given AutoLoad triggers occur. Bit mask values:
(0) None: No auto-loading, regardless of what triggers may be set.
(1) PreviouslyUsed (default): If any AutoLoad trigger is enabled, load only the packages where at least one application in the package has been previously used—that is, started or precached.
(2) All: If any AutoLoad trigger is enabled, all applications in the package (per package) or all packages (set for client) will be automatically loaded, whether or not they have ever been started.
Checks for between 0-2
Remediate: No

AutoLoadTriggers
AutoLoad is a client runtime policy configuration parameter that enables the secondary feature block of a virtualized application to be streamed to the client automatically in the background. The AutoLoad triggers are flags to indicate events that initiate auto-loading of applications. AutoLoad implicitly uses background streaming to enable the application to be fully loaded into cache. The primary feature block will be loaded first, and the remaining feature blocks will be loaded in the background to enable foreground operations, such as user interaction with applications, to take place and provide optimal perceived performance.
Bit mask values:
(0) Never: No bits are set (value is 0), no auto loading will be performed, because there are no triggers set.
(1) OnLaunch: Loading starts when a user starts an application.
(2) OnRefresh: Loading starts when the application is published. This occurs whenever the package record is added or updated—for example, when a publishing refresh occurs.(4) On
Checks for between 0-5
Remediate: No

Cache Percent Free Space
This information is captured on the client computer by a performance counter called “App Virt Client Cache” and it has three components; “Cache size (MB)”, “Cache free space (MB)” and “% free space”. You can use Performance Monitor to display the information graphically.
http://blogs.technet.com/b/appv/archive/2009/04/06/how-to-determine-the-space-remaining-in-the-app-v-client-cache.aspx
Checks for greater than 20 %
Remediate: No

Drive Letter
Drive where App-V file system will be mounted, if it is available. This value is set either by the listener or the installer, and it is read by the file system.
Checks for Q:
Remediate: No

File Size
Maximum size in megabytes of file system cache file. If you change this value in the registry, you must set State to 0 and reboot.
Checks for must exist
Remediate: No

LogMinSeverty
Controls which messages are written to the log. The value indicates a threshold of what is logged—everything less than or equal to that value is logged. For example, a value of 0x3 (Warning) indicates that Warnings (0x3), Errors (0x2), and Critical Errors (0x1) are logged.
Value Range: 0x0 = None, 0x1 = Critical, 0x2 = Error, 0x3 = Warning, 0x4 = Information (Default), 0x5 = Verbose.
The log level is configurable from the Application Virtualization (App-V) client console and from the command prompt. At a command prompt, the command sftlist.exe /verboselog will increase the log level to verbose. For more information on command-line details see
http://go.microsoft.com/fwlink/?LinkId=141467http://go.microsoft.com/fwlink/?LinkId=141467
Checks for between 0-4
Remediate: No

LogRolloverCount
Defines the number of backup copies of the log file that are kept when it is reset. The valid range is 0–9999. The default is 4. A value of 0 means no copies will be kept.
Checks for between 1-4
Remediate: No

Online
Enables or disables offline mode. If set to 0, the client will not communicate with App-V Management Servers or publishing servers. In disconnected operations, the client can start a loaded application even when it is not connected to an App-V Management Server. In offline mode, the client does not attempt to connect to an App-V Management Server or publishing server. You must allow disconnected operations to be able to work offline. Default value is 1 enabled (online), and 0 is disabled (offline).
Checks for between 0-1
Remediate: No

Requireauthorizationifcached
Indicates that authorization is always required, whether or not an application is already in cache. Possible values:
0=False: Always try to connect to the server. If a connection to the server cannot be established, the client still allows the user to launch an application that has previously been loaded into cache.
1=True (default): Application always must be authorized at startup. For RTSP streamed applications, the user authorization token is sent to the server for authorization. For file-based applications, file ACLs control whether a user may access the application.
Restart the sftlist service for the change to take effect.
Checks for 0
Remediate: Yes

SystemEventLogLevel

Indicates the logging level at which log messages are written to the NT event log. The value indicates a threshold of what is logged—that is, everything equal to or less than that value is logged. For example, a value of 0x3 (Warning) indicates that Warnings (0x3), Errors (0x2), and Critical Errors (0x1) are logged.
Value Range
0x0 = None
0x1 = Critical
0x2 = Error
0x3 = Warning
0x4 = Information (Default)
0x5 = Verbose
Checks for between 0-4
Remediate: No

TrayVisibility
Checks for 2
Remediate: No

Update as of 2012-09-06
Multiple MDM
You may also see these client launch errors, especially on Terminal Servers:

xxxxxx-xxxxxx03-00001002
xxxxxx-xxxxxx0A-0000E005
xxxxxx-xxxxxx 0C-0000003C

Instead of, or in addition to these, you may also notice periodic hangs, as well as a frequent depletion of paged pool memory resources.

To prevent this issue, during the initial sequencing of Office 2007 (or via modification of the existing package) we recommend that you remove the Microsoft Office Diagnostics and Office Source Engine services from any sequenced package running Office 2007 or any sequence that includes any Office 2007 application.  This will require the removal of these virtual services under the Virtual Services Tab in the Softgrid/App-V Sequencer

http://blogs.technet.com/b/appv/archive/2009/01/22/reducing-resource-requirements-for-computers-running-virtualized-microsoft-office-2007.aspx
Checks for less than 1
Remediate: No

Multiple OSE
You may also see these client launch errors, especially on Terminal Servers:

xxxxxx-xxxxxx03-00001002
xxxxxx-xxxxxx0A-0000E005
xxxxxx-xxxxxx 0C-0000003C

Instead of, or in addition to these, you may also notice periodic hangs, as well as a frequent depletion of paged pool memory resources.

To prevent this issue, during the initial sequencing of Office 2007 (or via modification of the existing package) we recommend that you remove the Microsoft Office Diagnostics and Office Source Engine services from any sequenced package running Office 2007 or any sequence that includes any Office 2007 application. This will require the removal of these virtual services under the Virtual Services Tab in the Softgrid/App-V Sequencer

http://blogs.technet.com/b/appv/archive/2009/01/22/reducing-resource-requirements-for-computers-running-virtualized-microsoft-office-2007.aspx
Checks for less than 1
Remediate: No

Multiple Office Diagnostics
You may also see these client launch errors, especially on Terminal Servers:

xxxxxx-xxxxxx03-00001002
xxxxxx-xxxxxx0A-0000E005
xxxxxx-xxxxxx 0C-0000003C

Instead of, or in addition to these, you may also notice periodic hangs, as well as a frequent depletion of paged pool memory resources.

To prevent this issue, during the initial sequencing of Office 2007 (or via modification of the existing package) we recommend that you remove the Microsoft Office Diagnostics and Office Source Engine services from any sequenced package running Office 2007 or any sequence that includes any Office 2007 application. This will require the removal of these virtual services under the Virtual Services Tab in the Softgrid/App-V Sequencer

http://blogs.technet.com/b/appv/archive/2009/01/22/reducing-resource-requirements-for-computers-running-virtualized-microsoft-office-2007.aspx
Checks for less than 1
Remediate: No

Citrix – LogoffSyscheckModules
If you are running Citrix XenApp on a Terminal Server/RDS Server, you could be waiting on another seamless session to logoff. A good thing to verify is that the Citrix WFSHELL process releases SFTDCC properly
http://madvirtualizer.wordpress.com/2011/08/03/
Checks for sftdcc.exe
Remediate: No

App-V 5, SCCM 2012 SP1 and the wheels behind it all

App-V 5 has introduced some new ways to configure an application – apart from whats available in the GUI. You can see two .xml-files (apart from the report.xml) generated along with the rest of the package – in three other blog articles these were posted and given some thought. Lets ponder though – how do you deploy these using Configuration Manager 2012 SP1 CTP2 ?

Well – its easier than you imagine. Lets begin with our package!

image

As you can see – this is the new standard-output of an App-V 5 sequence. Lets keep the names – that is very important. Don’t rename any files and keep the files intact within the folder. Especially the _deploymentconfig and _userconfig. You get to select the .appv file, but the others are needed aswell. Otherwise you might get this;

image
Unable to find the specified file.

or this;

image
Imported filed, fix errors and try again.

Those are some awesome error messages, right? Try to avoid renaming files (sometimes it works anyways) or removing them from the App-V folder – its for your own good.

So we have established that the _deploymentconfig.xml and _userconfig.xml are necessary files that are actually used. We can now move forward in the wizard.

Next up is to verify our Deployment Type and in particular the Publishing-tab within our Deployment Type configuration.

image

Under Publishing we can select what applications should be available . Its not quite clear when this goes into effect. Since we have imported the _deploymentconfig.xml already – that file isn’t modified when we toggle the publishing of an application. Verifying the contents within the distribution point shows an unaltered file, whereas the file has been modified once it reaches the client.

File on the distribution point;image

File on the client;image

We can review the appenforce.log to see what takes place once a client receives the deployment.

This is the command line for adding the package;

powershell.exe -ExecutionPolicy Bypass import-module 'C:\Program Files\Microsoft Application Virtualization\Client\AppvClient\AppvClient.psd1';  Add-AppvClientPackage -Path 'C:\Windows\ccmcache\d\Mozilla Thunderbird 9.0.appv'

Applying the deployment-configuration (because this was deployed to a machine)

powershell.exe -ExecutionPolicy Bypass import-module 'C:\Program Files\Microsoft Application Virtualization\Client\AppvClient\AppvClient.psd1';  Set-AppvClientPackage -PackageID 2d9b4db6-3386-4823-8d33-07c0caa4aaf4 -VersionID 7749fb34-1764-4f61-9161-3d0061bd8268  -DynamicDeploymentConfiguration 'C:\Windows\CCM\SystemTemp\AppVTempData\2d9b4db6-3386-4823-8d33-07c0caa4aaf4_DeployConfig.xml'

Publishing it for the users – since its deployed to a machine the –Global is used.

powershell.exe -ExecutionPolicy Bypass import-module 'C:\Program Files\Microsoft Application Virtualization\Client\AppvClient\AppvClient.psd1';  Publish-AppvClientPackage -PackageID 2d9b4db6-3386-4823-8d33-07c0caa4aaf4 -VersionID 7749fb34-1764-4f61-9161-3d0061bd8268 –Global

As you can see – C:\Windows\CCM\SystemTemp\AppVTempData is a temporary working folder for the SCCM-client to store these configuration files for when they are needed. The files can be reviewed in clear text and gives a chance to see what is actually deployed. Mozilla Thunderbird was deployed successfully (according to SCCM), but no application is visible. Since we can verify the configuration file used – we can see that the application was disabled entirely. This could either be done by the configuration-file we imported or through the GUI within SCCM.

What happens if we alter a configuration file after we have imported it? We can easily choose to create a new Deployment Type and reimport the package;

image

Since we reimport the package – the configuration files will be re-read and available for deployment. Since the distribution point now only stores a file once – we don’t need to worry about how many times we import a specific package (as long as the files are the same). We could have 5, 20 maybe even 100’s of Mozilla Thunderbird – all tailored for different needs within our configuration files!

App-V 5 standalone and Connection Groups

App-V 5 standalone has become a lot easier to deploy as of the new release – we don’t need to configure the client in any particular way and any package can be deployed using an MSI generated automatically by the sequencer. There are certain topics that still need some configuration – Connection Groups is one of them. Lets get started!

Connection Groups allow for virtual applications to interact with each other – it’s the version 2.0 of the Dynamic Suite Composition (DSC). DSC had some major flaws that made its practical use limited and often caused complex scenarios that required extensive troubleshooting. Connection Groups so far looks a lot more improved and hopefully it can be more easy to manage. Within the App-V Server or the SCCM 2012 SP1 there are easy to use ways to administrate these connection groups and deploy – SCCM was previously discussed here.

Since App-V 5 is administrated via powershell and therefore we need to look into the requirements for setting up a Connection Group. I’ll assume that you have installed the App-V client and imported its powershell module. First – we need to define an XML-file that sets the order of the application packages.

<?xml version="1.0" encoding="UTF-8"?>
<AppConnectionGroup AppConnectionGroupId="8601afe3-b565-3143-8ae1-e4f5bba61dcc" VersionId="0ff7a09e-8ed2-654d-80b5-f252ca9037d3" Priority="0" DisplayName="Freemind" xmlns="http://schemas.microsoft.com/appv/2010/virtualapplicationconnectiongroup">
<Packages>
<Package PackageId="5955a77b-b40f-4c1a-a9a4-b798591e8524" VersionId="8946295f-751e-4b4d-a887-eda103bb88f2">
</Package>
<Package PackageId="ea883402-3266-43ff-b4bc-a3bf0ad1905b" VersionId="3abd54ec-6055-43c1-95c5-11a827c6c992">
</Package>
</Packages>
</AppConnectionGroup>

Lets go through the XML-file

AppConnectionGrouId needs to be a unique identifier for Connection Group. In case you are out of imagination in creating one – you can run the following powershlle-command to get one;

 [guid]::NewGuid() 

This is the output;

image

You can repeat the same for VersionID – which needs to be updated for each version of the Connection Group.

DisplayName can be anything – SCCM sets a unique ID that it keeps track of. Since we are doing this manually – an easy to understand name might be good.

The next section is AppV Packages. You will need to know the PackageID and the VersionID from the packages you are connecting. This information can be retrieved by running the powershell command Get-AppVClientPackages

image

Once we have created the file – named freemind.xml in this case, we can actually go by setting up the connection group. The below one-liner will add the Connection Group and publish the Connection Group globally (for all users that is).

Add-AppvClientConnectionGroup -Path 'c:\media\freemind.xml' | Enable-AppvClientConnectionGroup –Global

If you want to disable a Connection Group –  you can use the name you set to easily locate it and disable the Connection Group.

 Get-AppvClientConnectionGroup -name freemind | Disable-AppvClientConnectionGroup

App-V 5, SCCM 2012 SP1 and Connection Groups

Since we have so many new releases coming up – it was time to set how well they co-exist. App-V 5 Beta 2 is out and inorder to support that in a SCCM 2012 environment – we need SCCM 2012 SP1 deployed into the environment. Once that happens – some new options are available that we will browse through.

When creating a new application  – we have the option of two different Application Virtualization applications. One is the legacy-format of App-V 4.6, and now App-V 5 is also available as a choice.

image

The wizard is pretty easy – you select the .appv-file created during your packaging efforts and the application will be imported into the environment. If you verify the properties of the deployment type – you can see a new tab;

image

Virtual Environments can be setup within the newly available node App-V Virtual Environments just below the rest of the nodes in Application Management.

image

Creating a new Virtual Environment might seem scary, however it simply is the new version of what was previously called Dynamic Suite Composition. From an App-V perspective – its called Connection Groups. Where the name Virtual Environment comes from seems odd – but we are just creating Connection Groups in the end.

image

Each connection-group needs a name, a name that only seems to be visible through SCCM-console. Reviewing later on whats deployed on the client – the name does not appear anywhere. Next step is to start adding applications to the Connection Group.

image

You can only see App-V 5 applications listed, keeping adding them one at a time…

image

It does matter in which order you add them – however only from the usage of the application. SCCM will not deploy any applications automatically part of a Connection Group, you need to make any virtual applications deployed on their own or as part of a dependency. Once a Virtual Environment (aka Connection Group) is created – if all the applications are available on a client – the Connection Group will be created through a series of Powershell commands.

image

image

The client actually executes the following commands to ensure that the Connection Group is created;

powershell.exe -ExecutionPolicy Bypass import-module 'C:\Program Files\Microsoft Application Virtualization\Client\AppvClient\AppvClient.psd1'; Add-AppvClientConnectionGroup -Path 'C:\Windows\CCM\SystemTemp\AppVTempData\ConnectionGroup_609C8E91-7A45-49D8-85EF-6F97393F6AD7.xml'
powershell.exe -ExecutionPolicy Bypass import-module 'C:\Program Files\Microsoft Application Virtualization\Client\AppvClient\AppvClient.psd1'; Enable-AppvClientConnectionGroup -GroupId 609C8E91-7A45-49D8-85EF-6F97393F6AD7 -VersionId 11998038-9881-4E71-AE3F-05B8CC736CF8  -Global

As you can see – there is a XML-file referenced. This file contains the configuration of the group;

<appv:AppConnectionGroup xmlns:appv="http://schemas.microsoft.com/appv/2010/virtualapplicationconnectiongroup" AppConnectionGroupId="609C8E91-7A45-49D8-85EF-6F97393F6AD7"
VersionId="11998038-9881-4E71-AE3F-05B8CC736CF8" IgnorableNamespaces="" DisplayName="ScopeId_2C452F22-4D7F-4190-B8A7-296878D46822/VirtualEnvironment_377202b9-16f7-465a-831d-60e20961c0a1">
<appv:Packages>
<appv:Package PackageId="52493623-312b-4187-9d0f-505d4b8cb791" VersionId="d23059ee-91ec-466b-a115-9157b4be0604"/>
<appv:Package PackageId="6d099036-5110-49bc-a2b9-c6d954bad70e" VersionId="af0d1d10-e5cc-47b4-8659-920a70acefab"/>
</appv:Packages>
</appv:AppConnectionGroup>

App-V 5 and Office 2013 Preview packages

To be able to import the Office 2013 Preview Packages that can be downloaded – you need the following;

1. App-V 5 beta 2 client

2. Scripts needs to be enabled for the import to occur. To enable this and then import – run the following Powershell commands;

Set-ExecutionPolicy RemoteSigned
Import-Module AppvClient
Set-AppVClientConfiguration -EnablePackageScripts 1
Add-AppvClientPackage 'C:\media\ProPlusVolume_VisioProVolume_ProjectProVolume_en-us_x86.appv' | Publish-AppvClientPackage -Global

Obviously – you need to alter the path to where the package is located.

Virtual Application Extensions and the future

App-V 5 is in the loop and this time around Microsoft has greatly revamped the architecture on how the virtualization part of App-V will be implemented. However, inorder to understand the tremendous advantage we will have with the new architecture – lets look at previous problems of Application Virtualization.

Softgrid and what became Microsoft Application VIrtualization was a great product that made deploying applications very simple and removed a large portion of why application deployments were scary. As opposed to deploying an application in its traditional sense – melting it together with the operating system and all its other application – we gained the possibility of providing a virtualized layer on top of the operating system. This layer provided two main components which removed the threat of breaking other applications or the operating system – virtualization and isolation. By allowing only a specific agent (aka sfttray) to spin up the virtual environment we created a nice line of defense that would ensure our computers integrity and allow the application to utilize local system resources.

The downside of the coin was that if only a single agent could access our virtual environment – we have also isolated the resources within that virtual environment and any type of call into that environment need to pass through our single guardian. The main problem with this was that sfttray (our guard) only allowed certain things to pass through by default, and as Windows and applications came up with new ways of integrating with applications – those “defaults” soon became to few and eventually altered the user experience of an application. For quite some time there haven’t been any technical limitation to virtualize just about any application, but the client that was delivering those applications proved to be very limited in allowing users to interact with the applications seamlessly. Sfttray supported file type associations and shortcuts. Simply not good enough if you are supporting todays demanding end-users.

App-V 5 will change this paradigm and provide an architecture that can ensure future abilities will be extended with much less effort – if any effort is necessary. As opposed to passing through a guard – we will not be limited to accessing it via an agent instead we can now gain access directly and only virtualizing it. Sfttray is history – and so is the Q: – drive. Lets poke around at a virtual application to understand why this architecture makes such a difference.

Meet the shortcut. A shortcut was supported in App-V 4, however the command-line in the shortcut always referenced sfttray.exe and then invoking your virtual application. Say hello to App-V 5 type of shortcut;

image

As you can see – we are now directly calling vlc.exe. It seems to be placed directly onto our filesystem – infact it is!

image

Directly under C:\Programdata – our packages are now placed in the native filesystem. As you can see we also have another improvement which is not even mentioned – the previous requirement of a unique 8.3-compliant name is gone. Instead all packages are executed under their unique (very long) GUID – to allow us to focus more on application packaging and less on naming conventions.

App-V 4 also supported file type associations – which are still there. With an improved experience!

image

This is a wmv-file – associated to our virtualized instance of App-V. Lets say we want to set another file type to be associated with our virtualized VLC. Previously we had to go through sfttray – but that’s gone…

image

VLC is now presented as any other program. Previously we had to retrain our users to select sfttray (here also presented as we allow the App-V 4.6 SP2 and App-V 5 to co-exist on the same system) and then select their program. Now – a native experience is given to the end-user and they can select the application that they want start a file type association with.

This all seems great that the experience with existing extensions (anyone who has been forced to listen to me knows that I call these entry points – but from now on I will favor extensions) – lets see what new stuff is out there. Right-clicking a file type will bring context-menus;

image

If the user is more familiar with altering a file type association through the Default Programs from within the Control Panel – VLC will also be presented here as a regular application;

image

We can see all the file type associations that our virtualized VLC currently is set to be the default application to handle;

image

However, if we insert a DVD – that’s not a file-type association is it? Well – how external media (DVDs for example) are started or at least what options are presented to the end-user is defined from Autoplay in the Control Panel. Yet again – we can see the virtualized VLC showing up as the end-user would expect it to;

image

All of these interactions were previously not available (still possible through manual labor and tweaking in the registry) – now we get them out of the box from a virtualized application! To move further – Spotify will be used to demonstrate even more interaction! When creating a package – a couple of files are created. The content is .appv, the installer in a standalone mode is the .msi – but we also have two configuration files – named Deployment and User config. If reviewing Deployment-config for our Spotify package – we can see the following;

image

This looks awesome – as Spotify has its own protocol handler which allows users to click a link and directly open a playlist within Spotify.

image

This are all visible extensions for the end-user and will make the gap of the experience between a virtual application and a natively installed application even smaller. However, the App-V team didn’t stop here and made even more possible extensions beyond of what we were expecting.

There are two methods that are used under the hood of everything – that provides a greater interaction between applications and allows for seamless exchange of data between applications. Quite often – we admins had to find out the hard way that this “report” for application X actually depend on beeing able to locate Excel, Adobe Acrobat or some other program. Many ways are used to send to the proper data to this “other” program – quite a few articles to resolve problems regarding this inter-application communication problems are written by me personally and even more questions are asked in the forums. We know about them – but what are they really?

AppPaths are one way – its an easy way to locate a needed .EXE if the application has registered itself.  If reading the article – it allows for quite a few different ways to use this feature, however – we most commonly deal with it because a program calls an application (say excel.exe) by simply asking for excel.exe – and not a full path. When registered properly – apppaths will allow us to start our specific version that we currently have installed. Filling in the full-path to the executable in question.

If our application is virtualized (excel.exe for example) – it will not be registered at all and the main application will simply state that you need this application installed. Fortunately – App-V 5 will now allow applications to register themselves properly and there be found by any application (virtualized or not) requesting them!

image

The other alternative are is COM. COM has been around since 1993. COM is something that has been and still is beyond me. Usually – when you realize that an obscure error message is given when the program attempts to send data to an external program COM is related. Wikipedia has a great article which clarifies it to some extent in what ways we are dealing with COM. OLE, OLE Automation, ActiveX, COM+ and DCOM are the more commonly used words.

Here is an example of a COM that was detected by the sequencer;

image

Wow – so we have just learned that App-V 5 will bring in many new ways that will improve the application experience and make previous scenarios that seemed impossible suddenly appear simple and work right out of the box.