Sunteți pe pagina 1din 228

Microsoft

Application Virtualization
5.1

Learn to design, implement, upgrade and


configure App-V 5.1

Ralph Jansen


Quadratura ICT


Microsoft Application Virtualization 5.1

Copyright 2015 Quadratura ICT
All rights reserved. No part of this book may be reproduced, stored in a retrieval system,
or transmitted in any form or by any means, without the prior written permission of the
publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the
information presented. However, the information contained in this book is sold without
warranty, either express or implied. Neither the author, nor Quadratura ICT, and its dealers
and distributors will be held liable for any damages caused or alleged to be caused directly
or indirectly by this book.
First published: October 2015
www.packagingsupport.nl
Welcome

Introduction
Welcome to Microsoft Application Virtualization 5.1.

The world of technology is growing faster than ever and shows no


indication of slowing down. That also counts for App-V since the App-V
product has transformed in many ways in the last years.
Microsoft Application Virtualization (App-V) eliminates application
installations and abstracts applications from the operating system to
prevent application conflicts. Virtual applications appear to the user just
like any other application.
This book has been designed to lead you step-by-step through all the
tasks youre most likely want to perform with App-V. It contains a
product overview, components, technical architecture of the product and
the terminology and requirements to install App-V. In addition, it is
divided into 9 major parts, each of which covers a large topic. Each part,
in turn, is divided into multiple chapters, each chapter covering a smaller
topic. Chapters are divided into sections and subsections, all designed to
help you find the information you need, when you need it. The Table of
Contents up front covers all the specifics. The Jargon buster at the back
of the book helps you find things based on a keyword or topic.

Who this book is for


This book is intended for beginning to intermediate-level App-V IT
Professionals that are responsible for managing and conducting rollouts
of the product within an organization of all sizes. Specifically:
Windows Server Administrator
This individual is responsible for deploying and maintaining
application software on Windows servers, including an App-V
Server. This person will likely want to know the day-to-day
impact that App-V has on application and operating system
health.
Database Administrator.
This individual is primarily concerned with database-related
aspects of App-V, including backup and restore, data flow
between the Management Server and the database, and
performance implications of the App-V deployment on servers
running Microsoft SQL Server.
Network Administrator
This individual is typically interested in any performance or
connectivity implications for the network infrastructure that are
related to the App-V environment.
The terms and skills youve learned in this book should be enough to get
you started on whichever topic looks most interesting.

Conventions and features in this book


This book presents information using the following conventions, which
are designed to make the information more readable and easy to follow:
Tutorials provide a Step-by-step series of tasks, presented as
numbered steps (1, 2, and so on) listing each action you must take
to complete a task.
Text that you click appear in italic are command lines or buttons.


Warnings or important notes appear in a box like
this.


What you need for this book
To follow the tutorials in this book, you need a copy of App-V.
Download Microsoft Desktop Optimization Package (MDOP) from the
Microsoft website to access the App-V sources.

Since there is no trial version of App-V, you will need to be a Software
Assurance customer to access the Microsoft Desktop Optimization
Package sources.

Prerequisite Skills and Knowledge:
Basic knowledge of:
Microsoft Windows Server 2008 - 2012 R2
including Active Directory, File Services
Database Connectivity
Electronic Software Distribution Systems like SCCM
Application packaging, transformation and deployment
PowerShell and scripting
Concepts of Desktop Delivery Models like SBC and VDI

Acknowledgments
The task of creating any book requires the talents of many hard-working
people pulling together to meet impossible deadlines and untold stresses.
I would firstly like to thank my fantastic wife, Paula, and my two kids
Thomas and Noud, for their patience when I spend time writing this
book.

Thanks to the App-V team at Microsoft for creating such an incredible
product and the App-V MVP team for being such a welcoming and
supportive group.

It was a great experience.

Ralph Jansen
Eindhoven, Netherlands

Errata & book support


Weve made every effort to ensure the accuracy of this book. Any errors
that have been reported since this book was published are included in the
latest release.
Errors are published at http://www.packagingsupport.nl/Errors.html
If you discover an error that is not already listed, please submit it to us at
info http://www.packagingsupport.nl/Errors.html. Feedback from our
readers is always welcome. Let us know what you think using the same
website.
Your feedback is valuable and welcome! Please submit your comments
and suggestions on http://www.packagingsupport.nl. Your comments will
be used to improve this book. Your e-mail address will not be saved or
used for any other purposes.

Stay in touch
Lets keep the conversation going! I am on Twitter:
http://twitter.com/RalJans.
Contents
Welcome
Introduction
Who this book is for
Conventions and features in this book
What you need for this book
Acknowledgments
Errata & book support
Stay in touch
Contents
Chapter 1 - Introduction to App-V
What is App-V?
Components

Microsoft Application Virtualization Management Server


Microsoft Application Virtualization Publishing Server
Microsoft Application Virtualization Desktop Client
Microsoft Application Virtualization Remote Desktop Services (RDS) Client
Microsoft Application Virtualization Sequencer
SQL database
File repository
Architecture
Whats new in version 5
Whats new in version 5.1
Summary
Chapter 2 - Installation
Planning the installation

Hardware requirements
App-V 5.1 client and sequencer
App-V 5.1 server prerequisites
File repository
Creating the database

Creating the App-V database using SQL scripts


Server installation
Installing the App-V server components
Client installation
App-V Client Graphical User Interface application
Sequencer installation
Upgrade

Upgrading from 4.x


Side-by-Side or Migration Mode
Upgrading from 5.0
Upgrading clients from 4.x
Summary
Chapter 3 - Configuration
Completing the server post installation steps
Configuring client settings using Group Policy
Configuring client settings using PowerShell

Importing the App-V client module


Client configuration options
EnablePublishingRefreshUI
EnablePackageScripts
Configuring client settings using the registry
Configuring Remote Desktop client settings

Shared Content Store Mode


PackageInstallationRoot
How the client works

Client file and registry locations


Locations on the disk
Locations in the registry
Summary
Chapter 4 - Creating virtual applications
Whats new in sequencer version 5

Exporting the AppxManifest file.


Import and export the registry keys
General limitations of App-V
PVAD / VFS
Optimization
Full download
Feature Block
Fault Streaming
Autoload
Sequencer workstation configuration
Best Practices
Creating virtual applications
Unattended sequencing
Sequencing Add-ons / Plug-ins

How to sequence an add-on


How to sequence a plugin
Making an add-on or plugin available using RunVirtual or Connection Groups
Dynamic Configuration files
Scripts

Adding a script to the package


Running a script that is part of a package
Adding a script to the Dynamic Deployment config
Multiple scripts on a single event trigger
Tokens
Package Accelerators
Creating a sequencer template
Connection Groups

Managing Connection Groups


Updating virtual applications
Converting virtual applications from 4.x
Virtualizing Microsoft Office

Converting Office 2013 Click-to-Run to an App-V package


Summary
Chapter 5 - Package Deployment
Deployment using Full Infrastructure

Adding packages to the Application Virtualization Management console


Editing package configurations from the Management console
Assigning a User Configuration to an Active Directory group
Adding a Publishing Server to the client using Group Policy
Adding a Publishing Server to the App-V client using PowerShell
Force synchronization with the Publishing Server from the App-V client.
Deployment using PowerShell
Deployment using System Center Configuration Manager
Deployment using MSI
Package update deployment

Deploying an updated package


Publishing packages

Global and User Publishing


Publish or unpublish packages for a specific user (UserSID)
Integration with local applications

RunVirtual
PowerShell
Command line switch /appvpid
Command line hook switch /appvve
User State Virtualization

User Experience Virtualization


User Profile Disks
PreserveUserIntegrationsOnLogin
Usage reports
Reporting

Uploading a Microsoft sample report to SQL Server Reporting Services


Summary
Chapter 6 - Backup, Security and Recovery
Backing up the server
Secure the App-V environment

Operating System
SSL/TLS/HTTPS
Firewall
File Security
AppLocker
Management Console
Antivirus exclusions
PackageStoreAccessControl
RequirePublishAsAdmin
Disaster Recovery

Restore the App-V database(s)


Summary
Chapter 7 Performance, Maintenance and Monitoring
Performance guidance

Enabling Shared Content Store using PowerShell


Enabling Shared Content Store using the installation parameters
Enabling Shared Content Store using Group Policy
Limiting the publishing refreshes
Speed up the Publishing phase
Maintenance

Daily service checks


Weekly activities
Monthly activities
Yearly activities
Monitoring

App-V Data Store Growth


Services
General
Disk activity
Processor utilization
Memory usage
Summary
Chapter 8 - Troubleshooting
Troubleshooting deployment

App-V Event Log


Opening the App-V Client Event Logs
Displaying additional App-V Client Event Logs
Packages not upgrading to a newer version
Disable package integration when publishing fails
Publishing fails when using Dynamic Configuration files
Viewing publishing metadata
Troubleshooting Packages

Repairing an App-V Package


Using the command line
Application crashes after it is started
Tools

Microsoft Application Virtualization Server 5.0 Best Practice Analyzer


AppV_Manage (free)
App-V Commander (free)
GAP-IT (free)
Login App-V Client Diagnostic and Configuration tool (ACDC) 2 (free)
App-V 5 Configuration Editor (ACE) (free)
App-V Scheduler (Free community edition)
Summary
Chapter 9 For the experienced
PowerShell Scripting

Managing the App-V Management server using PowerShell


Managing the App-V Client using PowerShell
Package content

ROOT
Scripts
Copy-on-Write

Excluded extensions
Integration Points
Pass-through Keys
Dynamic Virtualization

Disabling Dynamic Virtualization


Summary
Learn more
Jargon buster
Index
Appendix A List of tokens

Chapter 1 - Introduction to App-V


How you get started with App-V depends on where youre coming from.
This chapter tries to cover all fronts. If youre an experienced App-V
user, then you probably want to know whats new. If youre relatively
new to App-V, youll likely be interested in learning the most important
basic skills for using it, like the components that App-V exists of.
In this chapter:
What is App-V?
The components an App-V environment consists of
The Architecture
What is new in version 5
What is new in version 5.1

What is App-V?
Microsoft Application Virtualization (App-V) eliminates application
installations and abstracts applications from the operating system to
prevent application conflicts. Virtual applications appear to the user just
like any other application.
It transforms applications into centrally-managed virtual services that do
not conflict with other applications. This accelerates application
deployment, upgrades, patching and retirement by eliminating time-
consuming processes and simplifying the application management
lifecycle.
App-V allows applications to be encapsulated from the underlying
operating system on which it is executed. Multiple application versions
can coexist because they are running in their own isolated environment.
This makes it possible to run multiple versions of the same application on
the same system and reducing regression and interoperability testing.
When an application is virtualized, it no longer needs a traditional local
installation. Applications are not installed but are streamed via the
corporate network to desktops, laptops, or virtual desktop environments.

Rather than installing entire applications, the first time an application is


started the client downloads only the code necessary to start the program
from a central location, usually 20 to 40 percent of the total code.
What is driving organizations to embrace application virtualization are
the problems often associated with traditional application packaging.
These problems include:
High operational costs, typically associated with repackaging and
deploy applications;
Big bang migration to a new version;
Large golden image in VDI and SBC environments.

Application Virtualization helps to address these challenges by providing
businesses with ways of improving flexibility while reducing costs. For
example, by rapid deployment of new versions of applications,
businesses can achieve a faster time-to-market rate.
App-V is seamless to the user; they may use virtual applications without
ever stopping to consider what App-V itself is doing.
There are no changes directly to the underlying operating systems file
system and registry, this means that when a virtual application is
removed it leaves no traces behind;
Different versions of the same application can be run under App-
V making big-bang migration scenarios superfluous;
Simplified operating system migrations.

App-V is part of Microsoft Desktop Optimization Pack (MDOP). MDOP
for Software Assurance is a dynamic desktop solution available to
Software Assurance customers for use with Windows. It helps reduce
application deployment costs, enables delivery of applications as
services, and allows for better management and control of enterprise
desktop environments. Technologies provided in the Microsoft Desktop
Optimization Pack include:
Application Virtualization;
User Experience Virtualization;
Advanced Group Policy Management;
Diagnostics and Recovery Toolset;
Microsoft BitLocker Administration and Monitoring;
Enterprise Desktop Virtualization.

Usage rights for App-V for RDS are included with the RDS Client
Access License (RDS CAL). However, the App-V Windows Desktop
client, which is installed on physical and virtual Windows desktops, is
licensed through Microsoft Desktop Optimization Pack (MDOP).
Components
Planning an App-V infrastructure to support the current user and
application base requires an understanding of the operations that will be
performed by all components in the infrastructure. The architecture of
App-V includes six primary components:
Microsoft Application Virtualization Management Server
Microsoft Application Virtualization Publishing Server
Microsoft Application Virtualization (Remote Desktop Services)
Client
Microsoft Application Virtualization Sequencer
Microsoft SQL server
Package repository

Lets start by reviewing what each component of App-V 5 represents and
understanding the role each component plays.

Microsoft Application Virtualization Management Server


The App-V Management Server can be used to configure the App-V
assets (Packages / Connection Groups) and assign these assets to Active
Directory user groups and machines. In addition, administrators can
manipulate shortcuts and create Connection Groups.
It uses Microsoft SQL Server for its data store, where one or more App-V
Management servers can share a single SQL Server data store.
In version 5.1 the Management console is a HTML5 and JavaScript
based management site. Version prior to 5.1 had a Silverlight based
management site.


The Management Server is the communication conduit between the App-
V Web Management Console and the SQL Server data store. These
components can all be installed on a single server, or on one or more
separate systems depending on the required system architecture.
The App-V management infrastructure can only deploy virtual
applications and Connection Groups, deploying the App-V client or
native applications is not possible.

Microsoft Application Virtualization Publishing Server


The publishing process that has been available in previous versions of
App-V is still available with the release of App-V 5.
The publishing server is stateless web server, built on IIS, that provides
the client an XML based site that displays which virtual application(s)
the hosts or user can access. By default, the Publishing Server polls the
App-V database for published applications every 10 minutes. This is
called a publishing refresh.


The App-V Publishing Server provides App-V
Clients with entitled Packages and Connection
Groups for the specific user and system.

The Publishing server synchronizes with the Management server and


managed via the Management server. All communication between the
App-V Publishing Server and App-V Client is initiated by the App-V
Client.
A single IIS Server will support most organizations publishing needs as
20,000 clients can target a single publishing server to obtain the package
refreshes.
During the setup, you specify the port on which the publishing server
will listen.
It is possible to specify multiple publishing servers so if a local
publishing server is unavailable, a second (branch office or a server in the
cloud) can take over.
To open the publishing site, navigate to
http://PUBLISHING_SERVER:PORT or https://
PUBLISHING_SERVER:PORT if SSL/TLS is enabled.

Microsoft Application Virtualization Desktop Client


The App-V client performs many tasks to present virtual applications that
appear to be locally installed to a user. It is a very important piece of the
overall infrastructure.
It retrieves virtual applications, publishes the applications on the client,
and automatically sets up and manages virtual environments at runtime
on Windows endpoints. During these operations, the infrastructure
components will be used to acquire the necessary information needed to
publish, load, and launch virtual applications.
The App-V Client stores user-specific virtual application settings, such as
registry and file changes, in each users profile.


Microsoft Application Virtualization Remote Desktop


Services (RDS) Client
Virtual desktops are being widely adopted as a cost-effective way of
providing users access to enterprise applications, wherever they are. The
App-V RDS Client enables Remote Desktop Session Host servers to
utilize the capabilities of the App-V Desktop Client for shared desktop
sessions.
Combining App-V and Remote Desktop Services provide great benefits.
For example, applications can be deployed on demand to users without
disconnecting users and rebooting servers. It also provides a cost-
effective solution as it reduces deployment and maintenance costs,
testing and storage requirements.
App-V provides enhancements for application delivery with on-demand
application streaming and no local caching with shared content store
mode. When deploying the App-V RDS Client, ensure that the RDS role
has been installed first.

Microsoft Application Virtualization Sequencer


The Microsoft Application Virtualization Sequencer is used to create the
virtual applications and application packages that are streamed to the
App-V Clients. It is a tool to transform traditional applications into
virtual applications it does this by monitoring the software installation
and afterwards produces the application package, which consists of
several files.
These files include:
A sequenced application (.APPV) file
This primary package file contains all the files from the installation; it
is basically a compressed folder which contents can be viewed, not
modified, by using common ZIP utilities.

The .AppV file uses the specifications from the AppX format, based
on the Open Packaging Conventions (OPC) standard. OPC is a
container-file technology initially created by Microsoft to store a
combination of XML and non-XML files that together form a single
entity.
A Windows Installer file (.MSI)
The MSI file automatically publish the shortcuts and File Type
Associations and loads the application into cache.
It does not contain any application files, these are in the .AppV file.
XML files
Including report.xml, <packagename>_deploymentconfig.xml, and
<packagename>_userconfig.xml.
The userconfig and deploymentconfig xml files are used to configure
custom changes to the default behavior of the package.
Package Accelerator file (.CAB)
The CAB file is the input file when using a Package Accelerator. It
includes all the information for the Microsoft Application
Virtualization Sequencer about how to build a package.
Package Accelerator file (.APPVT)
A template file that contains the modified settings in the sequencer. It
contains, for example, the changed values from the General Items and
Exclusion Items.

The APPV, XML and MSI files are created for every package. The CAB
and the APPVT file are not created by the sequencer when saving the
package but can be generated if needed.
The App-V sequencer feels and looks the same as the previous version of
App-V 5, although it has an improved GUI to improve the sequencing
experience. The improved GUI makes the sequencer easier to use than
ever before.

SQL database
A database is only a required component in an App-V Full Infrastructure
with a Management Server. The Full Infrastructure is heavily dependent
on a high performance SQL infrastructure.
App-V utilizes the SQL Server to store configuration and usage
information. It contains:
Information about Packages;
Information about Connection Groups;
Package and Connection Group assignments to users and
systems;
Who has access to the Management server;
List of Publishing server;
Optionally, reporting data.

These operations are ongoing and increase the growth of the database.
As a general guidance for the size of the database, for a 1,000 packages
you would size the App-V Management SQL database 1 GB in size.

File repository
The file repository will be used to store the App-V packages and clients
will be streaming the packages from this location to their cache. It can be
placed on a local directory, remote server, or SAN. The file repository is
crucial since clients cannot stream new packages if the file repository is
offline.
HTTP/HTTPS or file streaming (SMB) will be used to access packages
from the file repository. HTTP(S) or SMB is selected when adding
packages to the App-V Management server.
Dependent on the size of the environment and the high availability
requirements, the file repository can be setup simple or complex. The
amount of data being transferred will depend on the number of unique
packages and the size of those packages. The impacts of this remote
transfer includes increased network utilization, increased disk I/O,
memory and CPU usage on both the sending and receiving computers.

Architecture
Building an App-V infrastructure requires an understanding of the
components which make up the environment. Planning an App-V
infrastructure to support the current user and application base requires an
understanding of the operations that will be performed by all components
in the infrastructure.
The following image displays the App-V architecture and the
components.

Whats new in version 5


App-V provides a foundation for building and deploying virtual
applications and to take advantage of the many benefits of application
virtualization.

Version 5 is a bold new release. It is different from 4.x since it now has
features that were not feasible previously, like shell extension support.
Microsoft App-V 5 looks different, very different, but everything good
about App-V has been retained for version 5 and almost everything that
was bad in version 4 has been discarded. This means you dont have to
throw away all your existing hard-earned knowledge.
Version 5 brings all manner of new enhancements in both the underlying
architecture and the interface. With an innovative new Management
Server interface, file types and Windows PowerShell support, App-V 5
can help IT deliver more while reducing costs.
Some of the most important changes are:
No dedicated drive letter required
One of the most important improvements in App-V 5 is that the Q
(or equivalent) drive isnt necessary anymore. This is something
that enterprise customers have wanted for a long time.
Database is no longer a single point of failure
In version 5 the client can still receive publishing information
even if the App-V database is unavailable.
Changes to the database, using the Management server, is not
possible when the database is unavailable.
Different file format

The App-V file format has changed:


.AppV File containing all the files and


registry keys captured during
sequencing. The APPV file is
an open file format and
Microsoft hopes that partners
can use for their tools.

<package Contains all the publishing


name>_UserConfig.XML information when the package
is published to the user.

<package name> Contains all the publishing


_DeploymentConfig.XML information when the package
is published globally.

Report.XML Contains all the information


about the sequence. Files
excluded, errors and
informational messages and
information about the
sequencing environment.
.MSI The MSI file can be used to
publish the package, it does
not contain any package files
or registry keys.


No RTSP(S) streaming, only HTTP(s) or SMB
App-V 5 now supports two types of streaming, HTTP(s) and
SMB. In the past, the Real-Time Streaming Protocol (RTSP) was
available.
At the moment of writing, using a SMB 3.0 file share as the
location for your packages offers the fastest streaming of virtual
applications. SMB 3.0 is introduced in Windows Server 2012.

No 4GB limit
Starting in App-V 5, a package has a much larger storage
capacity. It can now extend the 4 GB limit. This is a great feature
when you have large packages that, even with compression
enabled in version 4, use more than 4 GB of hard disk space.

Shared Content Store
Storage is a key part of any IT infrastructure. For many
organizations, storage is also a major cost center that consumes a
large portion of the budget of the IT department. Maximizing the
performance and efficiency of storage while helping to reduce
costs was a major goal of the Shared Content Store (SCS). SCS
makes it possible to stream packages into RAM and not on disk.
Saving a tremendous amount of storage. This saves costs,
especially in a hosted environment (SBC/VDI).

Virtual Application Extension
Extension Points are registered natively with Windows to allow
integration between the virtual application and the Windows
operating system. These extension points enable the application
to integrate with the local operating system.


And more
Rich PowerShell scripting for sequencer, client and server.
This allows IT to automate repetitive tasks and to integrate
App-V with existing processes;
App-V diagnostic information is in the Windows Event
Log instead of separate log files;
Web-based management makes it easy to get work from
any location.


Dynamic Suite Composition to allow two virtual
applications to talk to one another is renamed to
Connection Groups in App-V 5.


If you have been an App-V 4 user, you might be surprised to see that
some of the features are accustomed to using are no longer included in
version 5. For example, authorization for cached applications is not
available anymore nor is Enforce Security Descriptors.

Whats new in version 5.1


App-V 5.1 is the latest and greatest version of App-V and is released
with Microsoft Desktop Optimization Pack 2015 R1. It is built on many
of the features introduced in version 5 and offers several excellent new
features. The following list summarizes the new functionality in 5.1,
when compared to 5.0.
Support for Windows 10
Windows 10 is the new Windows version released in mid-2015.
The App-V client, RDS client and Sequencer are supported from
version 10.0.10041.
The Management Console User Interface no longer requires
Silverlight but is built on HTML5 and JavaScript
Prior to App-V 5.1, the Management GUI was built on
Silverlight. In 2013 Microsoft announced that Silverlight will be
discontinued and will be replaced by HTML5. In version 5.1 the
Management GUI is rewritten in HTML5 and JavaScript and has
a modernized theme. The advantage is that its fully compatible
with Internet Explorer, Spartan, Chrome and Firefox without
having to install any additional plugins.



Better navigation in the Management Server console
The Management Server console adds several improvements to
simplify navigation. Every console page now has its own URL,
making it easier to bookmark pages for quick access in the future.
Admin: http://ManagementServer/Admin
Servers: http://ManagementServer/Servers
Connection Groups: http://ManagementServer/ConnectionGroups
Packages: http://ManagementServer/Packages

Every package and Connection Group now has a number so it can
easily be bookmarked. For example:
http://localhost:8080/Console/Packages/Package/3006
http://localhost:8080/Console/ConnectionGroups/ConnectionGroup/1005

The Connection Groups page is now part of the main menu of
the Management Server console, at the same level as the
Packages page.
In the previous version, the Connection Groups icon was
displayed when clicking on the packages part of the menu. This
has been replaced by a separate icon in the main menu.
Optimization of the Management Server console.

The new Management GUI has been optimized. Buttons have


moved and notifications are displayed next to a flag icon. It now
has a more logical interface for virtual application delivery,
managing Connection Groups and changes the way it displays
alerts; it also gives you more control over those alerts and
messages, letting you choose the messages you want to see.
Icons in the Notification area may occasionally display messages
in a flag icon balloon. Many messages just provide some feedback
and dont require any response from you, as in the example in the
next figure. That kind of message generally fades away on its own
after a few seconds. But you can also close the message by
clicking the Close (X) button in its upper-right corner or the
Dismiss All button.


You can import and export the AppxManifest.xml file in the
sequencer to make changes like removing shell extensions or
edit file types.
One of the new features of App-V sequencer is the ability to
import and export files and directories, registry keys and the
AppxManifest.XML file so modifying virtual applications is
easier than before.
This is done under the Advanced tab there is a new feature to
Enable Browser Helper Objects, if detected.
The new sequencer provides the ability to easily replace values in
the registry.


App-V 5.1 supports the use of multiple scripts on a single
event trigger for App-V packages
App-V 5.1 supports the use of multiple scripts on a single event
trigger for App-V packages, including packages that you are
converting from App-V 4.6 to App-V 5.0 or later. This setting
enables greater flexibility by the use of multiple scripts.
The single event trigger uses a script launcher application, named
ScriptRunner.exe, which is installed as part of the App-V client
installation to run multiple scripts.
You can now enable that only Administrators can publish
App-V packages
App-V 5.1 has a new option, RequirePublishAsAdmin, that
enables that only users with administrative rights can publish
applications. This offers granular control over who can publish
packages on a system.

These are just the names of some of the new and enhanced features in
App-V 5.1. With the new features, it is undoubtedly a marked
improvement over previous versions.
In short, whether youre a first timer or have been using App-V for years,
this is the strongest and most exciting version of App-V yet.

Summary
Theres a lot to like about App-V 5 and 5.1. We have now gone through
what application virtualization is, the components of App-V, what the
new features are of App-V 5.1 and took a tour through all the
components of App-V and resources that it will require. Now that we
have got a good understanding of how App-V works and what our
options are.

At this point, you are ready to start the planning phase and move forward
into the initial setup phase. This will be the focus of the next chapter.
Chapter 2 - Installation
Installing App-V infrastructure servers on your network is not something
to be done casually and you must plan the installation well in advance.
Among other things, you must decide what your deployment strategy
will be and what roles you intend to implement and combine on the
server.
This chapter details the steps necessary to implement a successful App-V
environment, using either a clean install or an upgrade, and the
configuration tasks you must perform after the installation.
Make sure that you carefully review the prerequisites because these are
important steps.
In this chapter:
Planning the installation
Creating the database
Server installation
Client installation
App-V graphical user interface application
Sequencer installation
Upgrading from App-V 4.x
Upgrading from App-V 5.0
Upgrading clients from 4.x

Planning the installation


The temptation is to download the App-V sources from the Microsoft
website and start the installation. But you can avoid problems by first
planning the installation. You need to make several setup decisions.

Hardware requirements
The following table is a guideline for the hardware requirements, as
always, it is minimal and more (virtual) hardware is recommend for a
better performing App-V infrastructure.

Component CPU Memory Disk Operating System


(64-bit) (per
CPU)

Management 1.4 GHz 1 GB 80 GB Microsoft Windows Server


Server 2008 R2 SP1 or higher
(Standard, Enterprise,
Datacenter, or Web Server)

Publishing Server 1.4 GHz 1 GB (per 80 GB Microsoft Windows Server


CPU) 2008 R2 SP1 or higher
(Standard, Enterprise,
Datacenter, or Web Server)

Reporting Server 1.4 GHz 2 GB (per 80 GB Microsoft Windows Server


CPU) 2008 R2 SP1 or higher
(Standard, Enterprise,
Datacenter, or Web Server)

Sequencer 1.0 GHz 1 GB (per 40 GB Lowest common


CPU) denominator

App-V client 1.0 GHz 1 GB (per 30 GB* Windows 7 SP1


CPU)

SQL Server 1.4 GHz 2 GB (per 80 GB Microsoft SQL Server 2008


CPU) (32-bit or 64-bit)

* It is recommended that the disk drive be at least three times as large as the largest application
that will be sequenced.

App-V 5.1 client and sequencer


Planning the installation includes verifying that the prerequisites are
installed. For Windows 8.1 and 10, this is easy because all the
prerequisites are already installed.
For Windows 8 and 7, you must have the following prerequisites
installed prior to installing the client:
Microsoft .NET Framework 4.5.1
Windows PowerShell 3
Required only on Windows 7 and Windows Server 2008 R2.
Windows 8, 10 and Windows Server 2012 require no additional
software to install the App-V client.
KB2533623 (Security update)
Microsoft Visual C++ 2013

After these prerequisites are installed, the system is prepared for the
installation of the App-V 5.1 client and sequencer.
App-V 5.1 server prerequisites
An App-V infrastructure consists of many components. Before running
the App-V 5.1 setup there are a few prerequisites that must be in place
for a successful installation. A successful prerequisite process guarantees
a successful deployment of the App-V solution that will meet your
organizations requirements.


The App-V server components are not supported
on Windows Server Core or on a domain controller.

Make sure that the account that is being used to install the server
components has administrative rights on the system where you want to
install the App-V 5.1 server components. The account also must be able
to read Active Directory information.
Microsoft Application Virtualization requires you to select an Active
Directory group to use as an App-V administrators group for controlling
administrative access to the Management Console. During the setup
wizard, the name of this Active Directory group or account is asked and
will be authorized to manage App-V. This group or account must exist
prior to running the setup and must have appropriate access to the App-V
databases.
The Management and Publishing server are built on Internet Information
Services (IIS). IIS must be installed and configured prior to installing the
components.

The following IIS components are required for the Publishing, Reporting
and the Management server role:
Common HTTP Features:
Static Content
Default Document

Application Development:
ASP.NET
.NET Extensibility
ISAPI Extensions
ISAPI Filters

Security:
Windows Authentication
Request Filtering

Management Tools:
IIS Management Console

If SSL/TLS is a requirement, the appropriated (self-signed) certificates
must be available and selected within IIS.
Before starting the installation, determine what port will be used for the
Management Server, Reporting Service and the App-V Publishing
Server. Make sure to open these incoming ports in the Windows Firewall.
The App-V 5 server components use Microsoft SQL server as database
engine. When planning an App-V infrastructure, ensure that you work
closely with your SQL administrators so that you can optimize database
creation and security. The SQL server name and instance for the
Management database and Reporting database must be known before
starting the setup. If Reporting will be used, it should run on a dedicated
server since it consumes a lot of memory and CPU when generating
reports.
High availability offers a fault tolerant solution that ensures that App-V
services can be delivered without interruption. High availability of the
Publishing Server and the package content location is recommended for
both availability (for example DDoS) and failure (no disk space, etc.) of
the components.
When the Management Server is unavailable, virtual applications can
still be streamed from the package content. When the Publishing Server
or the package content is unavailable virtual applications are not
available, unless they are mounted previously on the client.

File repository
A File repository is the location where the virtualized application
packages are placed for the App-V client to retrieve them for streaming.
After an application has been virtualized, the package must be placed on
the repository that will be used to deliver the virtual application package
to clients.
Depending on the number of packages and on how often the package is
updated, there might be a higher storage requirement.
Think about the amount of storage necessary for the packages and future
growth before implementing App-V.
Creating the database
App-V needs a repository to store all information about packages,
Connection Groups, servers and so on. The supported repository is
Microsoft SQL Server. This can be SQL Server Express or SQL Server.
App-V operations will place only a very small load on the SQL Server.
See some amazing facts how much an App-V 5 infrastructure component
can support.
App-V 5 supports the following versions of Microsoft SQL Server:
Microsoft SQL Server 2008 Express
Microsoft SQL Server 2008 R2 Express
Microsoft SQL Server 2008
Microsoft SQL Server 2008 R2 SP2
Microsoft SQL Server 2012 Express
Microsoft SQL Server 2012

It depends on what level of performance and availability is needed to
choose the right version. For a small and evaluation environment, the
SQL Express edition should be the right choice. If there are a lot of
packages, users and clients or if you want to make the database high
available, you should implement the non-Express version of SQL Server.
For SQL Server, the supported versions are Standard, Enterprise,
Datacenter or the Developer Edition with the Database Engine Services
installed. App-V 5 does not allow the use of SQL Server dynamic ports
so SQL must be configured to have a static port.
App-V needs a Management database and, if desired, a Reporting
database. For a separate database installation, we need to perform the
installation operations, as explained in the following section.
The database can be createdError! Bookmark not defined. using two
methods:
1. Run the App-V installer on the SQL database server.
2. Extract the database creation scripts from the App-V installer and
run the SQL scripts on the SQL server.
Running an installer on a SQL server is usually not desirable from a
Database Administrator perspective. Option 2 is a more advanced
scenario but is granular and more DBA friendly.
The SQL scripts are included in the App-V installer and can be extracted
from here.
Creating the App-V database using SQL scripts
Before we can start editing the SQL scripts, we first need to have
the information that needs to be put into the SQL scripts.
The following information is required for the Management database:
Management SQL Server name;
Management SQL Server instance name;
Management SQL Server port;
Management database name
Management database group with read and write access;
Management database group with read access;

The following information is required for the Reporting database:
Reporting SQL Server name;
Reporting SQL Server instance name;
Reporting SQL Server port;
Reporting database name
Reporting database group with read and write access;
Reporting database group with read access;


The App-V Management server computer object,
in Active Directory, needs to be a member of the
Management read and write access group.


The App-V Reporting server computer object, in
Active Directory, needs to be a member of the
Database read and write access group.


Now that all the information is present, we can start extracting and
modifying the SQL scripts.
This guide provides a step-by-step walkthrough that enables you to
generate the SQL database scripts, which will be used later to create the
SQL database.

Extract the SQL scripts
1. Run appv_server_setup.exe /layout %temp%\appvextracted to
extract the SQL server scripts from the App-V installer.
2. Verify that the database scripts are extracted in the
appvextracted folder in the %temp% location.


Modify the Management database SQL scripts
3. Navigate to the ManagementDatabase folder
4. Edit the database.sql file and modify the database names as
necessary.
5. Edit the Permissions.sql file and provide all the necessary
account information for setting up read and write access on the
database.
Modify the Reporting database SQL scripts
6. Navigate to the ReportingDatabase folder
7. Edit the database.sql file and modify the database names as
necessary.
8. Edit the Permissions.sql file and provide all the necessary
account information for setting up read and write access on the
database.
Save the files and hand these to your SQL server administrator
or proceed to the next paragraph.
Run the SQL scripts on the SQL server
When the SQL scripts are modified with the correct values,
the scripts can be executed.
Create the Management database using the SQL scripts
9. Ensure the target SQL Server instance and SQL Server Agent
service are running.
10. Open the SQL Management Console and connect to the SQL
server where the databases will be hosted.
11. Click on File and click on Open, File
12. Select all the SQL script and click on Open
13. Execute the scripts in the following order:
Database.sql (on the Master database)

CreateTables.sql (on the new App-V database)

CreateStoredProcs.sql (on the new App-V database)


UpdateTables.sql (on the new App-V database)

InsertVersionInfo.sql (on the new App-V database)

Permissions.sql (on the new App-V database)



Create the Reporting database using the SQL scripts
14. Ensure the target SQL Server instance and SQL Server Agent
service are running.
15. Open the SQL Management Console and connect to the SQL
server where the databases will be hosted.
16. Click on File and click on Open, File
17. Select all the SQL script and click on Open
18. Execute the scripts in the following order:
Database.sql

Optional: UpgradeDatabase.sql
CreateTables.sql

CreateReportingStoredProcs.sql
CreateStoredProcs.sql

CreateViews.sql
InsertVersionInfo.sql
Permissions.sql
ScheduleReportingJob.sql

Now the database and tables are created and the permissions are set.
During the App-V setup, we can use select the two databases as the
Management database and the Reporting database for App-V.

Server installation
Now that the App-V components (Management, Publishing and
Reporting) are clear and optionally the databases are in place, the setup
can be started. The section guides you through the step-by-step process
of installing the App-V Full Infrastructure.
The User Account Control dialog box can appear when you try to
perform a task that requires administrative permissions. If your account
is a member of the local Administrators group, then you can click
Continue when you are prompted. If your user account is not an
administrator, then you must provide the credentials (user name and
password) of an account that has the required permissions.


During App-V 5.0 Setup, setup log files are created
in the %temp% folder of the installing user.

Installing the App-V server components


Membership in the local Administrators group, or equivalent, on the
computer that you are configuring is the minimum required to complete
this procedure
1. Using an account with local administrator privileges run the App-V
server setup by starting the MDOP autorun or start
appv_server_setup.exe from the MDOP installation media.

2. On the Welcome page, click on Install.


3. After reviewing the license agreement, mark the option to accept the
terms, and then click Next to continue.
4. Choose if App-V needs to be part of Microsoft Update. Click Next.
5. Select the components that need to be installed on the server.

6. On the next page, select the installation location. Click Next.


7. Use the local SQL server or enter the remote SQL server name,
instance name and database name for the Management database.
Click Next.
8. Use the local SQL server or enter the remote SQL server name,
instance name and database name for the Reporting database. Click
Next.
9. Enter the name of the Active Directory group that can manage App-V
(Add/Remove packages, etc.). In addition, change the website name
and port. Click Next.
10. Enter the Management Service (http://managementserver:port). If
desired change the website name and port. Click Next.
11. Review the summary screen and click Install if all the values are
correct.
The wizard will copy the necessary files, install services, and update the
database as specified in the preceding steps. When the wizard finishes, a
shortcut is displayed in the Administrative Tools group.
12. Wait until the installation completes. It typically completes in less
than five minutes. When the installation is finished, click Close.
After the installation is complete, you should verify that the services for
App-V are operational.
You now have completed the installation of the App-V server
components. If you encountered any errors during the process, please
analyze to the log file in the %temp% directory.

Client installation
Before you can use any virtual application, you need to install the App-V
client. The installation is very straightforward and the default settings
satisfy in most environments, but a little configuration might be
necessary.
In version 5.1 the App-V client installation does not require a reboot.
For the RDS version of the client, the installation steps are the same.
In summary, sequenced packages created with previous versions of the
App-V 5 sequencer should work with the App-V 5.1 client.


On a 64-bit operating system use the 64-bit version
of the App-V client. This client supports both
packages created with a 32 and 64-bit sequencer.
Sequencing with a 64-bt Sequencer is the same
process as 32-bit sequencing.


Installing the client
To start the App-V virtualized application you need to have the App-V 5
Client on the machine.
1. Start appv_client_setup.exe
2. Click on Install

3. Click on I accept the license terms and click Next


4. Choose to join or not to join the Customer Experience Improvement
program and click Install.

Wait for the installation to finish.

5. When the installation is finished, a Setup Completed Successfully
message is shown. Click on Close

Installing the client silently
The following table outlines the App-V installation parameters. These are
extremely useful for installing the client silently. A silent (or quiet)
installation is one which does not display any indication of its progress.

/INSTALLDIR Specifies the installation directory.


Example: /INSTALLDIR=C:\Program Files\A

/CEIPOPTIN Enables participation in the Customer Experienc


Example: /CEIPOPTIN=[0|1]
/MUOPTIN Enables Microsoft Update. Example: /MUOPTI

/PACKAGEINSTALLATIONROOT Specifies directory where all new applications an


Example: /PACKAGEINSTALLATIONROOT

/PACKAGESOURCEROOT Overrides the source location for downloading p


Example: /PACKAGESOURCEROOT=http:

/AUTOLOAD Specifies how new packages will be loaded by A


AutoLoad uses background streaming to enable t
The following options are enabled:
[0]; Automatically load nothing into cache
[1]; Load the content of packages that have been
(default)
[2]; Automatically load all published application

Example: /AUTOLOAD=[0|1|2]

/SHAREDCONTENTSTOREMODE Specifies that streamed package contents will be


Example: /SHAREDCONTENTSTOREMODE

/MIGRATIONMODE Migration mode allows the App-V client to modi


created using a previous version of App-V
Example: /MIGRATIONMODE=[0|1]

/ENABLEPACKAGESCRIPTS Enables the scripts that are defined in the packag


that should run. Example: /ENABLEPACKAGE

/ROAMINGREGISTRYEXCLUSIONS Specifies the registry paths that will not roam wi


Example:/ROAMINGREGISTRYEXCLUSIO

/ROAMINGFILEEXCLUSIONS Specifies the file paths relative to %userprofile%


Example: /ROAMINGFILEEXCLUSIONS d

/S[1-5]PUBLISHINGSERVERNAME Displays the name of the publishing server.


Example: /S1PUBLISHINGSERVERNAME=S

/S[1-5]PUBLISHINGSERVERURL Displays the URL of the publishing server.


Example: /S1PUBLISHINGSERVERURL=\SE

/S[1-5]GLOBALREFRESHENABLED Enables a global publishing refresh. Example:


- [0|1]
/S[1-5]GLOBALREFRESHONLOGON Initiates a global publishing refresh when a user
Example: /S1LOGONREFRESH=[0|1]

/S[1-5]GLOBALREFRESHINTERVAL Specifies the publishing refresh interval, where


- Example: /S1PERIODICREFRESHINTERVA

/S[1- Specifies the interval unit (Hours[0], Days[1]).


5]GLOBALREFRESHINTERVALUNIT Example: /S1GLOBALREFRESHINTERVAL

/S[1-5]USERREFRESHENABLED Enables user publishing refresh. Example:

/S[1-5]USERREFRESHONLOGON Initiates a user publishing refresh when a user lo


Example: /S1LOGONREFRESH=[0|1]

/S[1-5]USERREFRESHINTERVAL - Specifies the publishing refresh interval, where


Example: /S1PERIODICREFRESHINTERVA

/S[1- Specifies the interval unit (Hours[0], Days[1]).


5]USERREFRESHINTERVALUNIT Example: /S1USERREFRESHINTERVALUN

/Log Specifies a location where the log information is


%Temp%. Example: /log C:\logs\log.log

/q Specifies an unattended installation.

/REPAIR Repairs a previous client installation.

/NORESTART Prevents the system from rebooting after the clie


The parameter prevents the end-user computer fr
installed and lets you schedule the reboot at your
install App-V 5.0 SPX and then install Hotfix Pa
Service Pack installation. After the installation, y
App-V.

/UNINSTALL Uninstalls the client.

/ACCEPTEULA Agrees to the licensing agreement. Required for


Example: /ACCEPTEULA or /ACCEPTEULA

/LAYOUT Specifies the associated layout action. It also ext


script files to a folder without installing App-V 5

/LAYOUTDIR Specifies the layout directory. Requires a string v


Example: /LAYOUTDIR=C:\Application Vir

/?, /h, /help Requests help about the previous installation par
The next section gives an example how to silently install the App-V
client. Parameters that you use depend on your environment.

1. Open the Command Prompt as administrator
2. Run the command:
appv_client_setup.exe /q /NORESTART /ACCEPTEULA /CEIPOPTIN=0
/MUOPTIN=0 /AUTOLOAD=2 /ENABLEPACKAGESCRIPTS=1 /Log
%TEMP%\App-V.log
3. After the setup completes, the App-V client is installed and ready to
use.

App-V Client Graphical User Interface


application
The App-V client does not include a Graphical User Interface (GUI)
anymore. This GUI was included in previous versions and in the first
release of App-V 5 but it has been removed in favour of PowerShell.
Although it isnt included in the default client installation anymore, it is
possible to download the Microsoft Application Virtualization 5.0 Client
UI Application as a free add-on from the Microsoft website:
https://www.microsoft.com/en-US/download/details.aspx?id=41186
It is available in two formats:
1. MSI files which needs to be installed on the local system
2. An App-V package which can be added to the App-V client.

Installing the Microsoft Application Virtualization 5.0 Client UI
Application
In the following steps we are going to use the MSI file.
1. Download the Microsoft Application Virtualization 5.0 Client UI
Application from the Microsoft website
2. Start the installer
3. Click on Next
4. Check the checkbox to accept the license agreement and click Next
5. In addition, change the installation path and click on Install
6. When the installation is completed, click on Finish.
The Microsoft Application Virtualization 5.0 Client UI Application can
be started from the start menu.

The GUI can be used to force a synchronization from the App-V


Publishing Server by pressing the Update button.

The Download all virtual applications button allows users to download


the complete packages in the App-V cache.

The Work Offline button can be used to prevent updates but requires
administrative permissions on the system before it can be used.
The Virtual Application tab shows the virtual applications that are
available on the system and allows the end user to repair the package.
This will reset all the application configuration to the default values. Be
careful to use this function because it will remove all changes made by
the user.
The App Connection Groups tab displays all the Connection Groups that
are available on the system.
A feature that is less useful for end-users but is interesting for system
administrations is the Show PowerShell command. This button displays
all the PowerShell commands executed by the Microsoft Application
Virtualization 5.0 Client UI Application. This is useful to learn the
PowerShell commands that the GUI applications executes under the
hood.

Sequencer installation
Proper configuration of the sequencing station is imperative to ensure
that applications will function properly when streamed to a client.


Sequencing 64-bit applications requires sequencing
on a 64-bit operating system. The resulting
package can only be deployed to a 64-bit operating
system with the 64-bit App-V client.


Installing the App-V sequencer
If the prerequisites are in place (see planning the installation) the
sequencer can be installed.
1. Start appv_sequencer_setup.exe
2. Click on Install
3. Click on I accept the license terms and click Next
4. Choose to join the Customer Experience Improvement program and
click Install. Wait for the installation to finish.
5. Click on Close
The App-V sequencer can now be started from the start menu.
If you are using a virtual machine to create virtual applications, it is
advisable to create a checkpoint or snapshot before starting the App-V
sequencer.

Upgrade
Upgrading to version 5 is a big step and, while Microsoft makes every
effort to make it as smooth as possible, there may still be hiccups.

Upgrading from 4.x


To migrate from App-V 4 to version 5, you must first migrate to App-V
5.0 first since you cannot upgrade from a previous App-V version to
App-V 5.1 directly.
Side-by-Side or Migration Mode
The App-V 5 client can be installed alongside the 4.6 version of the App-
V client in a Side-by-Side configuration to stage your migration.
So if you didnt get the time to convert all your 4.6 packages to version 5,
you can still use the 4.x version next to the App-V 5.1 client.

Configuring the App-V client for coexistence with App-V 4.6
1. Install the App-V 4.6 SP2 client on the system.
2. Install the App-V 5.1 client on the system.
3. Open PowerShell as Administrator
4. Run the command: Set-AppvClientConfiguration -MigrationMode
$true

The App-V 5 client is now enabled for Migration Mode.


Microsoft recommends the following migration approach for packages from


version 4 to version 5:

1. Deploy the App-V 5.0 client in co-existence mode before migrating
any packages.
2. Sequence a few apps, and deploy them to the App-V 5.0 client for
testing.
3. Plan a phased migration of your application from 4.6 to 5.1 through a
process of converting and sequencing apps.

Upgrading from 5.0


This chapter is about guiding you through the requirements and steps
necessary to upgrade your current App-V 5 environment to App-V 5.1.
The upgrade process is very straightforward.
If youve already got App-V 5 Full Infrastructure in your environment,
youll have your back-end already configured. The setup upgrades the
components to the latest version.
Although upgrading to App-V 5.1 should not affect your configuration, it
is always a good policy to create a backup or using a checkpoint or
snapshot before upgrading. The time and effort it takes to create a backup
will likely be far less than the time and effort required to re-create the
same configuration. It might be tempting to upgrade to App-V 5.1 as
quickly as possible but it is not worth the risk.


Always create a backup before upgrading your
App-V environment.


You can upgrade to App-V 5.1 directly from any of the previous 5.x
versions. Packages and Connection Groups will continue to work as they
currently do.
The order to upgrade the components is:
1. Microsoft Application Virtualization Server;
2. Microsoft Application Virtualization Sequencer;
3. Microsoft Application Virtualization (RDS) Client;
4. Connection Groups

Upgrading server components to 5.1
To upgrade the server components to version 5.1, follow the following
steps:
1. Start appv_server_setup.exe and click on Install.
2. Select I accept the license terms and click on Next.
3. Select User Microsoft Update when I check for updates
(recommended). Click Next.
4. In the next screen the current installed server components are
displayed and greyed out. These components will be upgrade. Click
Next.
5. Because the App-V services will be restarted, the next screen warns
you that the services will be interrupted and the system will be
restarted. Click Next.


6. The next eight screens show the current configuration and these
values cannot be changed in an upgrade scenario. In every screen
click Next.
7. When ready, click Install to begin the upgrade process.
8. Wait for the upgrade to finish. Click on Close
Thats it, the server is upgraded. Repeat the upgrade process on every
server that contains App-V server components.


Upgrading the sequencer
The sequencer cannot be upgraded by an in-place upgrade. To migrate to
the latest version, uninstall the current older version of the sequencer and
install the new version. See Sequencer installation for more information
how to install the App-V Sequencer.


Upgrading the client
Upgrading the client requires that all virtual applications will be
shut down during the upgrade. Shutting down the virtual
applications makes sure the App-V client and all its related
programs are properly closed and avoid potential problems during
the upgrade.


After the App-V client is upgraded a reboot
is required.


1. Start appv_client_setup.exe and click on Upgrade.

Note the warning that all virtual applications will be shut down
during the upgrade.
1. Select I accept the license terms and click on Next.
2. Choose to join the Customer Experience Improvement program and
click Upgrade.
Wait for the installation to finish.
3. Click on Restart Now or Restart Later to complete the installation.

Upgrading clients from 4.x


Since App-V 5 is so different from version 4, an upgrade isnt possible.
You can run the App-V 4 and App-V 5 client side-by-side.

Summary
We have now gone through the basics of the App-V installation covering
the planning, installation and the upgrade scenarios.

Choosing the right installation options is a process that takes time and
consideration. You should now have the ability to choose with
confidence.

So, to sum it up, this is what we did to get App-V up and running:

We planned the installation for the client and the sequencer;
Created manually created the App-V databases;
Installed the server components, the client and the sequencer;
Went through the upgrade scenarios when coming from version 4
and 5.

You should now have a working App-V environment that is fully
prepared to accept and manage virtual applications.

Theres still a lot to do to get the most out of the new App-V
infrastructure. In the next chapter, we will look more into the
configuration of the App-V components and completing the post-
installation steps. We also deep-dive into how the client works.
Chapter 3 - Configuration
Congratulations. Youve familiarized yourself with the installation and
upgrade of the App-V 5 components. Its now time to turn our attention
to a variety of administrative tasks to configure the App-V environment.
App-V can be configured with various settings. This chapter shows you
what options are available to configure App-V and how to modify these.
We are also going to take a look at how the App-V client works and
where the App-V client stores all the information necessary to provide
the user access to the virtual applications.
In this chapter:
Completing the server post installation steps
Configuring client settings using Group Policy
Configuring client settings using PowerShell
Configuring Remote Desktop client settings
How the client works
Client file and registry locations

App-V provides a number of methods to modify the client. These are:
Group Policy
PowerShell
Registry

Completing the server post installation


steps
Now that the App-V Full Infrastructure is up and running, there are post
installation tasks that need to be performed before the environment can
be used by the end-user.
Adding the Publishing server to the App-V Full Infrastructure
The Publishing server needs to be assigned to a Management server so
the Management server can control the Publishing server.
1. Navigate to the App-V Management server console
2. In the menu on the left, click on Servers
3. Click on Register new server
4. Enter the correct hostname and optionally, a description of the server.

5. Click on Check to validate the information.


6. Click on Add to add the server to the Management console.

Configure Administrative Privileges within the App-V Management Console
The App-V Management Console can be access by anyone who is
member of the group that is specified during the installation of the App-
V Full Infrastructure.
During the setup, one Active Directory group can be specified. It is
possible to add additional groups from the Management console.
1. Navigate to the App-V Management server console
2. In the menu on the left, click on Admin
3. Enter the Active Directory group and click on Check
4. Click on Add Administrator to add the group as App-V
administrators.

Configuring client settings using Group


Policy
App-V has an ADM Template that can be used to configure the most
common client settings through Group Policies. This section shows you
how to create a Group Policy object (GPO) that contains basic App-V
settings, and then apply that GPO to the client computer.
Group Policy enables you to perform your administrator tasks more
efficiently since it enables centralized computer and user management by
applying configurations. These configurations are created by using the
Group Policy Management Editor and are contained in one or more
Group Policy objects (GPOs) stored in Active Directory.
To ensure that only the correct computers can apply the GPO settings,
security group filtering and Windows Management Instrumentation
(WMI) filtering can be used. This will restrict the GPO to only those
computers that are in a specified computer group and that are running the
specified version of Windows.

Configuring the App-V client using Group Policy
1. Download the Microsoft Desktop Optimization Pack Group Policy
Administrative Templates from the Microsoft Download Center,
http://www.microsoft.com/en-us/download/details.aspx?id=41183
2. Start the MDOP_ADMX_Templates.exe file and extract the files
3. On the server where the Group Policy editor is available, move the
appv.admx file to C:\Windows\PolicyDefinitions
4. Move the .ADML files in the subfolder of your language to
C:\Windows\PolicyDefinitions\*language folder*
5. Start the Group Policy editor.
6. Create and link a new Group Policy to the Organizational Unit where
the systems are located in.
7. Navigate to Computer Configuration, Administrative Tools, System,
App-V.
8. Here you can modify the settings of the App-V client.


Configuring client settings using
PowerShell
The App-V client can be configured using PowerShell and this is
extremely useful to configure the App-V client options. Although it is
easy, PowerShell is less efficient and does not guarantee consistency
when you have many computers to configure. When you have multiple
computers to manage, you can instead use a GPO, and then apply this
GPO to the computers.


Group Policy settings override local settings
configured using PowerShell.

Although the App-V PowerShell module is created by Microsoft, it is


default not signed nor trusted by the system. This means that when you
want to import the App-V Client module in PowerShell, the execution
policy needs to be lowered. Otherwise the following error occurs:

Import-Module : File AppVClientCmdlets.psm1 cannot be loaded


because running scripts is disabled on this system. For more information,
see about_Execution_Policies.
You can verify the execution policy settings on the server by typing in
Get-ExecutionPolicy in the PowerShell prompt.

Importing the App-V client module


1. Run the PowerShell command prompt with administrator rights.
2. Set the Windows PowerShell execution policy to allow you to run
scripts by typing in the following line:
Set-ExecutionPolicy bypass
3. To import the App-V Client module, type in the following line in the
command prompt window: Import-Module AppVClient


PowerShell can find the App-V 5 PowerShell
module since the installation folder (default
C:\Program Files\Microsoft Application
Virtualization\Client) is added to the PowerShell
variable $env:PSModulePath


4. The App-V commands are now available.

To get a list of App-V client commands, run Get-Command module


AppVClient

Client configuration options


The Set-AppVClientConfiguration command can be used to configure the
App-V Client.

The following options are available to modify using PowerShell:

Description
Option

PackageInstallationRoot This is the location where


the packages are cached.
The App-V client cache is
important for designing and
supporting an App-V
infrastructure.
Understanding the settings
and the way the cache
behaves will allow to
properly setup and support
App-V client.

PackageSourceRoot Option to relocate your


original package download
location.

LocationProvider Method to override the


location of the virtual

applications. Used, for
example, by SCCM. Not
designed to be changed or
adjusted manually.

AutoLoad Specifies how new packages


will be loaded by App-V 5
on a specific system.
The following options are
enabled:
0 - Disabled - Automatically
load nothing into cache.
1 - Previously Used
Packages only - Load the
content of packages that
have been executed at least
once on the machine
(default)
2 - All Packages -
Automatically load all
published applications into
cache when published.

EnablePackageScripts This option enables scripts


that can be started from the
Dynamic Deployment
configuration files.

ReestablishmentInterval The number of times to retry


a disconnected session to the
App-V Publishing Server.

ReestablishmentRetries The number of times to retry


a disconnected session to the
App-V Publishing Server.

CertFilterForClientSsl The path to a valid


certificate in the certificate
store

SupportBranchCache Stream packages using


BranchCache via HTTP.

VerifyCertificateRevocationList Verifies the certificate


revocation status before
steaming via HTTPS

SharedContentStoreMode Packages will be not being


saved to the local hard disk
but streamed into memory.

MigrationMode Option for coexistence with


App-V 4. This allows the
App-V client to modify
shortcuts and FTAs for
previous versions.

RoamingFileExclusions Locations that do not roam


with the user, for example
because Profile
Virtualization is used.
This option makes sure re-
integration takes place of
extension points for
locations specified.

RoamingRegistryExclusions Locations that do not roam


with the user, for example
because Profile
Virtualization is used.
This option makes sure re-
integration takes place of
extension points for
locations specified.

AllowHighCostLaunch Allows streaming over high


costs networks as 3G and
4G.

RequirePublishAsAdmin Only allow administrators to


publish packages on the
system.

IntegrationRootUser Location to create symbolic


links associated with the
current version of a user
published package.

All virtual application
extensions, for example
shortcuts, will point to this
path but it contains only
junction points (links) to
%PROGRAMDATA%\App-
V

IntegrationRootGlobal Location to create symbolic


links associated with the
current version of a global
published package.

All virtual application
extensions, for example
shortcuts, will point to this
path but it contains only
junction points (links) to
%PROGRAMDATA%\App-
V

VirtualizableExtensions List of file name extensions


that will be run in the virtual
environment. The
RunVirtual command line
parameter will be added
when a filetype is detected.

IgnoreLocationProvider Ignore the LocationProvider


value.

ReportingEnabled Enable the uploading of data


to a reporting server.

ReportingStartTime The time to initiate the


client to upload data to the
reporting server.
Value can be 0 to 23,
corresponding to the hour of
the day

ReportingRandomDelay Delay in minutes that a


client will add before upload
data to the reporting server
when the
ReportingStartTime is
reached.

ReportingInterval The time in minutes before a


client will start the upload of
reporting data when it
previous has failed.

ReportingServerURL Location of the reporting


server where the
information is stored.

ReportingDataCacheLimit The maximum cache size in


MBs. When it is reached,
reporting data will be lost.

ReportingDataBlockSize Packet size in bytes that the


client can upload to the
reporting server.

ExperienceImprovementOptIn Take part of Microsoft


Customer Experience
Improvement Program. This
will upload data to
Microsoft to improve the
product.

EnablePublishingRefreshUI This option enables the


publishing refresh progress
bar. Enabling it makes a
publishing refresh user
friendly since they see the
progress.

ProcessesUsingVirtualComponents Executables that can be used


for Dynamic Virtualization.

EnableDynamicVirtualization Enable or disable Dynamic
Virtualization.


Here are some examples how to change the options available from within
PowerShell:

EnablePublishingRefreshUI
This option enables the publishing refresh progress bar. Enabling it
makes a publishing refresh user friendly since they see the progress.
Set-AppvClientConfiguration -EnablePublishingRefreshUI $true

EnablePackageScripts
This option enables scripts that can be started from the Dynamic
Deployment configuration files.
Some packages include scripting to achieve optimal operation. Enable
package scripts during setup or post-installation, unless it is certain that
no packages will use scripts.
Set-AppvClientConfiguration EnablePackageScripts $true


Configuring client settings using the
registry
All the settings that are set by using Group Policy or PowerShell are
stored in the Registry under
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\AppV
It is possible to view and modify the App-V client settings directly in the
registry.
It the next example, Package Scripts are enabled using the Registry.
1. Open Regedit with Administrative credentials. This is necessary since
we are modifying the HKEY_LOCAL_MACHINE and this counts
for everyone on the system.
2. Navigate to
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\AppV\Client\Scripting
3. Edit the key EnablePackageScripts and set it to 1.

4. Click on OK.
Package scripts are not enabled.
There are many options in the registry to modify, and for some of the
more advanced feature of App-V it is even necessary to use the registry.


Always make a backup using the Export Key
feature when modifying the registry.

Configuring Remote Desktop client


settings
The Remote Desktop client is only designed for servers where multiple
users are working on at the same time.
In RDS scenarios, the use of user-based targeting is preferred, as users
will only be presented with the App-V applications that have been
published to them.
The settings are not different then the desktop client, but some of the
settings require additional consideration for deployment on a RD Session
Host server and may have to be altered.
Settings that need to be considered changing compared to the desktop
client are:

Shared Content Store Mode


The storage footprint in the datacenter is critical. Especially in RDS or
VDI, all required applications multiplied by the number of desktops
creates a large storage requirement. The Shared Content Store offers the
ability to reduce the size of the footprint since only disk space is taken by
the publishing data.
In RDS and in VDI environments, systems are stored on expensive
storage in the datacenter so the SharedContentStoreMode option should
be enabled if possible. This enables that only publishing data is
maintained on the servers hard disk.
Other virtual application assets are maintained in memory and are
streamed on-demand and only what is needed over the network. RDS
servers are typically on the same high-speed network as the App-V
backend systems.


Caching on the local disk by the App-V Client is
disabled when using the Shared Content Store.


To enable the Shared Content Store, run the following PowerShell
command:
Set-AppvClientConfiguration SharedContentStoreMode 1
In addition to PowerShell, it also can be enabled during setup or after
installation by modifying a registry value.
Although the packages arent default cached on the disk when using the
Shared Content Store, it is possible to place (mount) packages in the
package store (cache) for highly utilized or important line-of-business
applications by running the following PowerShell command:
Mount-AppVClientPackage Name <name of the package>

PackageInstallationRoot
This location is the default location for the App-V cache. Because the
cache can be fairly large, place it on a drive with adequate storage for all
virtual applications targeted for delivery.
It is recommended to carefully plan and standardize on as many of these
settings as possible to achieve the most optimal configuration for your
specific environment.

How the client works


The App-V client is responsible for the streaming of the package content
and publishing the shortcuts and file type associations to the client. The
App-V client creates a cache file that is used to store the application
packages.
This chapter describes how the App-V client gets the packages and
presents them to users or systems.
It does this using the following steps:
5. When the system starts up the App-V client is started as a service.
6. The App-V client contacts the publishing server for a list of
applications assigned to the current system. The list of applications is
provided as an XML response.
Authorization occurs by using the users ticket granted by the Active
Directory (Key Distribution Center) to ensure that the user is allowed
to run the virtual application.
7. The content share is contacted to add the packages and to download
FB0 of the package. Depending on the settings (Shared Content
Store, AutoLoad, Package Optimization) the App-V client downloads
the package.
8. The contents of the AppV file are expanded and placed on the local
operating system in the appropriate locations.
9. REGISTRY.DAT is copied to
%ProgramData%\Microsoft\AppV\Client\VREG\{Version
GUID}.dat.
10. The package is published on the system.
11. REGISTRY.DAT is extracted in the real registry.
When the user logs on the following steps are performed by the App-V
client:
1. The App-V client contacts the Publishing server for a list of
applications assigned to the current user.
Active Directory group membership is used to determine which
applications are assigned.
2. The content share is contacted to download FB0 of the package and
publishes the bits on the system.
Depending on the settings (Shared Content Store, AutoLoad,
Package Optimization) the App-V client downloads the package.
When the user starts an application, the following steps are performed by
the App-V client:
1. The package is streamed into the App-V cache. This process is called
mounting and by default, the packages are stored in
%ProgramData%\App-V in subdirectories named <Package GUID>\
<Version GUID>

If the Shared Content Store is enabled, no data is written to disk.


Therefore, local disk space taken by the packages is minimal. Only
publishing data is stored.
2. The App-V client starts the virtual application.
3. The App-V client creates a virtual environment. Changes are
redirected to the virtualized environment.
4. Bits that were not downloaded and are needed are streamed from the
network.
When the user stops an application, the following steps are performed by
the App-V client:
1. User settings are saved on the local system.
2. The App-V client closes all virtual processes and shuts down the
application.
3. The virtual environment is shut down.
The application stays in the cache for future use or other users can use
the streamed bits.

Client file and registry locations


The App-V client is responsible for managing the virtual applications. It
does this by downloading or streaming the virtual application into the
cache or RAM. The latter when SharedContentStoreMode is enabled.
When a package is added, published or mounted to the system, the client
uses the disk and registry to store data about the virtual application. It
uses many locations to store data and is responsible for putting that data
together to give the appearance of a locally installed application to the
user. This section will describe the location of these files and explanation
of the data stored in them.
Locations on the disk
The following disk locations are used by the App-V client to store
information:
%ProgramData%\App-V
Default location for read only package files. Also called Cache or
Package Store. It contains a subfolder per package with the
GUID name of the package.

%ProgramData%\Microsoft\AppV\Client\Catalog
Here are the package configuration files stored for packages that
are published Globally.
These are Manifest.xml, DeploymentConfiguration.xml,
UserManifest.xml, UserDeploymentConfiguration.xml.
%AppData%\Microsoft\AppV\Client\Catalog
Here are the package configuration files stored for packages that
are published to the user.
These are Manifest.xml, DeploymentConfiguration.xml,
UserManifest.xml, UserDeploymentConfiguration.xml.
%ProgramData%\Microsoft\AppV\Client\Catalog\PackageGroups
Here are the Dynamic Configuration files stored for Connection
Groups that are published.
These are PackageGroupDescriptor.xml and
UserPackageGroupDescriptor.xml.
%LocalAppData%\Microsoft\AppV\Client\Integration
Location to create symbolic links associated with the current
version of a user published package.
All virtual application extensions, for example shortcuts, will
point to this path but it contains only junction points (links) to
%PROGRAMDATA%\App-V
%AppData%\Microsoft\AppV\Client\Integration\ShortCutBackups
Existing native application data and registry (such as File Type
Associations) are backed up during publishing. This folder is the
backup location of all integration points and these are restored
when a package is unpublished.
If there are multiple applications that can handle a File Type
Association, the owner is transferred when a package is
unpublished.
%AppData%\Microsoft\AppV\Client\VFS
Location for package modifications that are written in non-
roaming locations. Also known as Copy on Write or COW
location.
This folder contains subfolder like ProgramFilesX86,
SystemX86, Windows and APPV_ROOT which do not roam
between different systems.
%LocalAppData%\Microsoft\AppV\Client\VFS
Location for package modifications that are written in roaming
locations. Also known as Copy on Write or COW location.
This folder contains subfolder like AppData which does roam
between different systems.

Locations in the registry
The following registry locations are used by the App-V client to store
information.
HKEY_LOCAL_MACHINE\Software\Microsoft\AppV\Client
Settings for the App-V client set by GPO, PowerShell or default.
HKEY_LOCAL_MACHINE\Software\Microsoft\AppV\Client\Packages
Extracted registry keys of the virtual packages. Contains a sub
key per package with the GUID of the package and below the
package GUID a version GUID key.


HKEY_LOCAL_MACHINE\Software\Microsoft\AppV\Client\Packages\Pu
Publishing servers set by GPO or PowerShell.
HKEY_LOCAL_MACHINE\Software\Microsoft\AppV\Client\Streaming\P
Information about the package(s), like
Location on hard disk
Size
Previously Used
Etc.

HKEY_LOCAL_MACHINE\Software\Microsoft\AppV\Client\MAV
Information about the package(s).
Location on hard disk
Connection Group priority
Etc.

HKEY_LOCAL_MACHINE\Software\Microsoft\AppV\Client\Integration
Backup of file types for unpublishing, ownership of file
associations.
Summary
In this chapter, youve learned about some of the different ways that we
can configure the App-V components, like Group Policy and PowerShell.
The important thing to keep in mind is that they are options, and there is
no right or wrong way to do things. Its all about making choices that
work for you.

We now know how the App-V client gets the packages and presents them
to users and where the client default stores files and registry entries.
This chapter ended with an in-depth look at how the client works.

In the next chapter, we will shift gears entirely and we will look into
creating virtual applications, Connection Groups and upgrading
packages.
Chapter 4 - Creating virtual applications
Now that the App-V components are installed and configured, everything
is ready to create, deploy and use virtual applications.
The process of packaging applications for App-V, or sequencing, is
typically the largest ongoing task in an App-V infrastructure.
To create a virtual application, or a package, you will need to use the
App-V sequencer. The sequencer is a wizard-based tool to create, update
and modify App-V packages.
Properly sequencing applications is the key to a successful App-V
implementation. As such, its important to follow Microsofts
recommended practices and be aware of the different options when
sequencing.
All applications are different and therefore every application will require
a different amount of time to sequence.
In this chapter:
What is new in the App-V sequencer version 5
Limitations
PVAD/VFS
Optimization
Sequencer workstation configuration
Best Practices
Creating virtual applications
Sequencing Add-ons and Plug-ins
Scripts
Package Accelerators
Dynamic Configuration Files
Connection Groups
Updating virtual applications
Converting virtual applications from 4.x
Virtualizing Microsoft Office

Whats new in sequencer version 5


If you have ever virtualized applications using older versions of the
sequencer, you know it can be a frustrating experience. But with every
new release of App-V, Microsoft has spent a lot of time making it as
foolproof as possible. This makes creating virtual applications easier than
ever.
The following improvements have been made to the App-V 5.1
sequencer:
You can import and export the AppxManifest.xml file.
The AppXManifest file contains information that is needed when a
package is added, published and launched. For example, File Type
Association information and shortcuts.

The file is part of the .AppV file and cannot be modified outside of the
sequencer, however it can be overwritten by Dynamic Configuration
files. But these live outside of the .AppV file and require additional
editing and importing.
In the App-V 5.1 sequencer, not there is an option to export the
AppxManifest file so it can be modified. Afterwards the file can be
imported in the sequencer so it will be included in the .AppV file when
the package is saved. When it is part of the .AppV file, it will be the
default settings when the package is used.

Exporting the AppxManifest file.


1. To export the manifest file, select the Advanced tab and, in the
Manifest File box, click Export.

You can make changes to the manifest file, such as removing shell
extensions or editing file type associations.
2. After you make your changes, click Import and select the file you
edited.
3. After you successfully import it back in, the manifest file is
immediately updated within the package editor.


When you import the file, your changes are
validated against the XML schema. If the file is
not valid, you will receive an error. Be aware that
it is possible to import a file that is validated
against the XML schema, but that might still fail
to run for other reasons.


You can import and export the registry keys.
This makes it easy to import or export a large set of keys into or from the
package.

Import and export the registry keys


1. To export registry keys, select the Virtual Registry tab and navigate
to the key that needs to be exported.
2. Right click on the key and choose Export.
3. Enter a name and click on Save.
The key is now saved as a .REG file. You can make changes to the
manifest file, such as removing shell extensions or editing file type
associations.

Windows 10 is added to the operating systems list


In the Deployment tab, Windows 10 32-bit and Windows 10-64
bit have been added to the list of operating systems for which you
can sequence a package. If you select Any Operating System,
Windows 10 is automatically included among the operating
systems that the sequenced package will support.

Import a directory into the virtual file system
It is now possible to import a directory into the Virtual File
System. In the past, version this needed to be done file by file.

Minor changes
Current path displays at bottom of virtual registry editor;
Find and replace values and data in the virtual registry editor;
Files that are added using the Import feature overwrite the files in
the package. No need to delete them first;
You can enable or disable Browser Helper Objects on the
Advanced tab of the Sequencer;
Virtual registry node expands MACHINE and USER hives by
default.


The Add File feature got a new location, it is now
located under Packager Files tab, View, Virtual File
System > Add File

General limitations of App-V


Sometimes there are applications that cannot or should not be sequenced.
Also there are certain limitations with App-V.
Applications that start services at boot time
A user must be logged on for a virtual application to start.

Applications that require device drivers
The App-V sequencer cannot virtualize device drivers. When an
application requires a driver it must be deployed separately by
using, for example, an MSI file for the driver deployment and an
App-V package for the application deployment.
Afterwards, the application will fall through to the operating
system to look for the driver and see that it is installed.

Applications are isolated
Virtual applications are isolated by default. The virtual
application can see the operating system and whats installed on
it but the operating system cannot see the virtual application and
interact with it.

Applications that are a part of the OS
Although it is possible to virtualize, applications like Internet
Explorer are not supported by App-V.


Internet Explorer is not supported in a
sequenced application.
However you can sequence plug-ins or
ActiveX controls for Internet Explorer.


Applications that use COM+
The App-V sequencer cannot virtualize COM+ objects because
these are dynamic and happen at runtime. The package can be
created but may not function as expected.
It is possible to export the COM+ component to an MSI file and
deploy it to the native operating system.

COM DLL surrogate virtualization
COM DLL surrogate is a method where code is run in another
process so when it crashes the COM Surrogate process crashes
and not the main process. Applications that use COM DLL
surrogate virtualization (DLLhost.exe) cannot be virtualized.

PVAD / VFS
PVAD stands for Primary Virtual Application Directory. In previous
versions of App-V you needed to enter the PVAD in the sequencing
wizard, so the sequencer knew where the program files of the package
reside. In the latest version of App-V, the PVAD isnt a part of the
sequencing wizard anymore. Although you do not need to specify the
PVAD, in the background the App-V sequencer creates a dummy PVAD
folder in the root of C:.
VFS stands for Virtual File System these are all the files and folders that
are captured during sequencing but are outside the PVAD directory.
Microsoft changed their vision that an application needs to be installed in
the PVAD. Since the PVAD dummy folder will be generated
automatically, the application you install will be placed in the VFS.
Some applications do not work when they are installed in the VFS and
require to be installed in the PVAD. There are multiple ways to re-enable
the PVAD so it becomes available in the sequencing wizard.
Re-enabling the PVAD from the registry
Using this method, the PVAD is enabled every time you start the
sequencer.
1. On the sequencer machine, open Regedit
2. Create Navigate to
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\AppVSequencer
3. Create a key Compatibility
4. Create a DWORD Value named EnablePVADControl
5. Set the value of EnablePVADControl to 1.
6. Start the sequencer and check if the PVAD is re-enabled.

Re-enabling the PVAD from the command line
1. Open the Command Prompt and navigate to the folder where
sequencer.exe exist in.
2. Add the parameter EnablePVADControl to the sequencer.exe
command line.
3. Start the wizard and check if the PVAD is re-enabled.

The PVAD is disabled by default but can be enabled in the registry of


using a parameter. The right screenshot has the PVAD enabled:

When you edit an existing package the PVAD (dummy) location is
displayed at the bottom of the Properties tab.

Optimization
In App-V 5 there are three options to optimize the packages for
streaming to the client.
Full Download
Feature Block
Fault Streaming

Full download
By using the full download option, the package is completely
downloaded into the App-V Client cache before the application is
launched. Using this option, it takes the most time before the end user
can start using their application. This option is recommended for slow or
WAN links.
One of the problems that could occur is that mobile workers who are not
always connected to the App-V infrastructure could attempt to use a
feature of a virtualized application that has not already been downloaded
into cache. This would result in an error for the user and the inability to
use the specific feature. Administrators should make sure that virtualized
application are delivered to the client cache when needed.

Feature Block
Feature blocks are designed to optimize the applications for streaming. A
Feature Block makes it possible to specify which part of the package
needs to be streamed to the client first before the application is launched.
The rest of the packaged will be streamed later when the application is
started.
The creation of a Feature Block would be implemented during
sequencing and is often done to reduce the time that the user waits for the
initial launch of the application. This enables users access to applications
more quickly upon deployment.
There are two feature blocks available.
1. Feature Block 0

FB0 is the Publishing Feature Block, it contains everything required


for to publish the packages such as a portion of files (EXE and DLL),
shortcuts and icons.
2. Feature Block 1

FB1 is created during the Streaming phase in the sequencer by


executing the applications that end-users execute in typical day-to-
day operations. Afterwards, the FB1 contains all the assets (virtual
registry, file system, DLLs, etc.) in the package that is required prior
to allowing the application to be launched.

FB1 can be used to optimize the user experience since the application
does not need to be fully downloaded into the cache before it
becomes visible.
Any pieces of the package not included FB1 or FB2 will be streamed by
the App-V client on-demand.

Fault Streaming
Fault Streaming only transfers new bits into the cache when the package
needs them. This offers the best user experience as the application will
have a quick first launch. But not all applications can handle this.
In the sequencer it is possible to set what package optimization will be
used. In the sequencing wizard, you must select Customize, in the
Streaming window it is possible to configure the streaming option will be
used.

The Force Applications to be fully downloaded before launching


checkbox will enable the Full Download option and will undo all
optimizations.
To use the Feature Block functionality, click an application in the list and
click the Run Selected button. When the application is launched, click
through all the functionalities that need to be available at first launch.
The pieces of the package that are opened will be included in the primary
feature block by the sequencer.
To use Fault Streaming, do not start any applications and click Next. This
enables Fault Streaming.

Autoload
Through configuration of the AutoLoad an administrator can ensure that
the virtual application is delivered to the client cache when needed.
The following options are available for AutoLoad:
Automatically load nothing into cache;
Means applications will never be loaded automatically in the
cache. Only while they are actually in use.
Load the content of packages that have been executed at least
once on the machine (default);

Applications previously assigned to the user and launched will be


auto loaded into the cache via background streaming.
Automatically load all published applications into cache when
published.
All applications assigned to the user will be loaded into the cache
via background streaming.
Autoload settings are ignored when Shared Content Store mode is
enabled.


See silently installing the client or
AutoLoad for more information how to
configure AutoLoad.

Sequencer workstation configuration


Proper configuration of the sequencing station is imperative to ensure
that applications will function properly when streamed to a client.
The following configuration is recommended when sequencing:
Sequence on a machine that matches the Operating System and
configuration level for the target clients;
If Microsoft Office is part of the base image of the client, then
include it as part of the base image of the sequencer;
TEMP should contain free disk space equivalent to the estimated
installation size;
Use a Virtual Machine. Virtual machines are ideal for sequencing
because they can easily be reset;
Shutdown background processes and scheduled tasks before you
begin sequencing;
Windows Defender
Antivirus Software
Disk defragmentation software
Windows Search
Microsoft update
Any open Windows Explorer session

The sequencer will detect if the processes are running in the
background and will advise you to close them before continuing.
Enable User Account Control if this is also enabled on the client
machine.
Sequence 32-bit applications on a 32-bit sequencing OS. This
includes sequencing 32-bit applications for delivery to 64-bit
clients. When sequencing 64-bit applications, they must be
sequenced on a 64-bit sequencing OS and can only be delivered to
64-bit clients.

Best Practices
When sequencing an application, it is good to apply the following Best
Practices from Microsoft. Here are some examples from the Best
Practices for Sequencing document (http://go.microsoft.com/fwlink/?
LinkId=269953)
Familiarize yourself with the installation and execution of the
application prior to sequencing so that you learn how the
application runs and the components of the application you will
need;
Document step by step the installation and post-configuration
procedures for the application. This document is often called a
Recipe and contains all the steps taken to create the virtual
application;
Sequence with the same UAC setting that will be deployed to user
desktops;
Disable Auto Update features;
Disable Install on First Use.
At the moment of writing, the Best Practices for Sequencing document
describes using the PVAD for the installation of applications. This is not
the best practice anymore since the PVAD is now default hidden in the
sequencer and the VFS is used as default installation location.

Creating virtual applications


This guide provides a step-by-step walkthrough that enables you to create
a virtual application using the sequencer. All applications are different
and therefore, no application will require the same amount of time to
sequence.
1. Reset the machine with a clean image if it is not reverted.

This is a critical requirement for all sequencing work with App-V.


The App-V Sequencer will check the system and recommend the
machine be reset to a clean state if necessary.
2. Boot the sequencer machine.
3. Start the sequencer from the start menu
4. Click on Create a new virtual application package

5. Leave Create Package selected and click on Next


In the Prepare Computer phase the App-V sequencer will
automatically check the current state of the system to ensure no
outstanding issues on the system (such as a pending reboot,
Antivirus enabled, etc.)
Examine the issues, if any, and make sure that there are no issues
before clicking Next.
6. Leave Standard Application (default) selected and click Next.
7. In the Select Installer phase, it is possible to browse to the setup
file of the application that is going to be virtualized. This is an
optional step; it is also possible to start the installer manually
when the Installation step is started.

Select the setup file by using the Browse button or select Perform
a custom installation and click Next to proceed.
8. Enter the Virtual Application Package Name, for example
PSpad_10.0_EN_V1 and click Next.

The sequencer states that when installing the application it is best


to install it in %ProgramFiles% for optimal performance.
9. Install the application.
During the installation, use the option Run from My Computer
to install all the components of the application. Do not use
Install on First Use since this will trigger the setup when the
package is run on the client and requires a component that is not
available.
If you are sure that components will not be used, it is
recommended that these components will not be installed.
10. When the application is installed, it is possible to start it and
modify all the settings that need to be changed.
After the installation is complete, it often requires performing
several manual steps that are not part of the application
installation process. For example, disable any update
functionality (version control should be performed via
sequencing new versions) and welcome screens.
Do this configuration in the Installation Phase and run the
application to make sure it works.
Since some applications perform different tasks on first launch,
second launch, and sometimes subsequent launches, it is
recommended to run the application multiple times to get past all
registration and dialog box requests.

When finished, click I am finished installing and click Next.


11. In the Configure Software phase it is also possible to modify the
application like the settings in step 8, but only for applications
detected by the sequencer. When finished, click Next.
12. If there are any common issues detected during sequencing, they
will be displayed in the Installation Report.

For example, if there are any drivers installed during the


installation of the application, there will be a notification that
these will not be included in the package.

Inspect the Installation Report and click Next.

13. The package is now ready to be saved or it is possible to


customize it.

If we choose Customize, it becomes possible to optimize the


package for streaming and restrict the package for specific
operating systems.

In this example, we are going to choose Customize. Select


Customize and click Next.
14. In the Streaming phase, part of the application that needs to be
delivered first, Feature Block 1 (FB1), can be started so they will
be placed in FB1.

Every part of the application that is touched during the Streaming


phase will be placed in Feature Block 1.

If the whole application needs to be available before it can be


started, select Force applications to be fully downloaded before
launching and click Next.
15. The Target OS option makes it possible to limit on what
operating system the application can be started. It is possible, for
example, to limit the virtual application to Windows 2012 R2 or
32-bits operating systems.

Select the operating systems from the list or select Allow the
package to run on any operating system.

Click Next.
16. When the Streaming and Target OS steps are completed, it is also
possible to add or remove files / registry keys / shortcuts, change
services etc. or to save the package or (optionally) enter a
description and save the package.
In this example, we are going to choose Continue to modify
package without saving using the package editor.

Select Continue to modify package without saving using the


package editor and click Next.
17. The Completion phase displays the report that was generated
from the results from the sequencer. Messages are categorized
into Errors, Warnings and Info depending on the severity of the
issue.
These messages will also be saved in the package folder as
report.xml.
Review Completion Report and click Close.
Now that the package is created, it can be further customized in the
sequencer. Lets take a closer look at what the purpose is of the different
tabs.
Note that there are eight tabs. The changes you make on each tab only
applies to the current package.
On the Properties tab, the Package Name can be adjusted. Also a
Description can be added so you can enter details you may want to
include about the package. This will allow you to revisit the sequence
later and have a record of this information.

The Package Version will be set to 1 when the package is saved. The
Package GUID is the unique identifier for the package and does not
change. The Version GUID is generated when the package is saved and is
changed when the package is opened for upgrade.
The Primary Virtual Application Directory (PVAD) is the folder that is
created automatically by the sequencer. It is best practice to install the
application in the Virtual File System (VFS) unless the application does
not work. See also the chapter about PVAD/VFS.
The Deployment tab can be used to limit on what operating system the
application can be started. It is possible, for example, to limit the virtual
application to Windows 2012 R2 or 32-bits operating systems.
The Change History is grayed out until the package is opened for
upgrade. It displays information about the virtual application.
Using the Virtual Registry tab, the registry keys that are created or
modified during the monitoring phase are displayed. Here it is possible to
add, import, edit or remove registry keys.
The Package Files tab displays all the files and folders that were created
or modified during the monitoring phase. Files and folders can be added,
exported, removed. If there is a conflict with a file or folder on the local
disk, right click the file/folder and select Override Local Directory or
Merge with Local Directory.
For example, Program Files is set to Merge since this directory is always
available on every system. Folders that are created by the application that
is virtualized, are set to override since the local folder must be
overwritten by the virtual application otherwise there will be different
behavior per package per system.
When Virtual Services are detected, they will become visible in the
Virtual Service tab. These cannot be modified since this is a read only
field. If you want to modify a virtual server, for example to set the startup
type, you must do this during the monitoring phase.
The Advanced tab contains more and more features in every release of
App-V. In 5.1 the following options are on the Advanced tab:


Allow all named objects to interact with the local system
Enabling this checkbox will disable isolation of named
objects. Check this box if a virtual application and a local
application will need to communicate with each other.
Allow all COM object to interact with the local system;
Makes COM objects from virtual environment visible to
the real OS and set <COM Mode=Integrated> in the
Dynamic Configuration file. COM is responsible for
communication channels and interactions between
applications.
Allow virtual applications full write permission in the virtual file
system
If you check this option, the package will gain Write
Access to VFS Locations.
Prior to the introduction of this feature, applications that
need this would fail due to an access denied event when
the application attempts to create a file in the VFS. See
PVAD/VFS for more information about PVAD/VFS.
Enable Browser Helper Objects
Browser Helper Objects are plugins for Microsofts
Internet Explorer to provide additional functionality. For
example, the Adobe Acrobat plug-in that allows Internet
Explorer users to read PDF files within their browser.

Manifest File Export / Import


The AppXManifest file contains information that is needed when
a package is added, published and launched. For example, FTA
information and shortcuts.

AppXManifest. XML It is part of the .AppV file and cannot be


modified outside of the sequencer; however it can be overwritten
by Dynamic Configuration files. But these live outside of the
.AppV file and require additional editing and importing.

On the Shortcuts tab all the shortcuts and File Type Associations that
were captured during the Installation phase are displayed.
To display a shortcut and the properties, expand the shortcut and click on
File Type Associations or Shortcuts.
Locations where the shortcuts are placed can be added, edited and
removed.
Always examine the location where the shortcuts will be created, like the
Quick Launch Toolbar or the Desktop so you and the end-user dont get
surprised when the package is published.
To remove a location, right click on the Shortcuts, click Edit Locations
and uncheck the checkbox before the location or remove it from the
Advanced list.

Unattended sequencing
The Sequencer comes with a PowerShell command to allow unattended
sequencing. It offers the same functionality as the wizard of the
sequencer but does not offer the same flexibility for modifying a
package. Sequencing an application using the GUI offers more flexibility
than using PowerShell since the latter does not support:
The usage of Feature Blocks
Removing or modifying shortcuts
Enabling Advanced options
Adding or removing registry entries
Adding or removing file and folders
Modifying applications first-run. For example, disabling welcome
screens.

Since this module isnt loaded by default. It must be imported in an
elevated PowerShell window using Import-Module AppVSequencer.
The following commands are available in the AppVSequencer module:
Expand-AppvSequencerPackage

This command will expand all the files from an App-V package
to the local system and the registry. Using this command it is
possible to convert the package from virtual to native.
New-AppvPackageAccelerator

Can be used to create a Package Accelerator using a silent
installation since the sequencer know which file and registry keys
are created.

New-AppvSequencerPackage

The command to silently sequence an application.



Update-AppvSequencerPackage
Can be used to silently update an existing package with new
features, security updates, etc.

Lets look at silently sequencing an application using the PowerShell
command New-AppvSequencerPackage
1. Reset the machine with a clean image if it is not reverted.

This is a critical requirement for all sequencing work with App-V.


The App-V Sequencer will check the system and recommend the
machine be reset to a clean state if necessary.
2. Boot the sequencer machine.
3. Copy the installation files for the application that needs to be
virtualized to the sequencer.
4. Start an elevated PowerShell window and run the command: Import-
Module AppVSequencer
5. Modify the following command line and make sure that the folders
and installer file exist.
New-AppvSequencerPackage -Name <> -Path <> -Installer -
PrimaryVirtualApplicationDirectory <> -FullLoad -TemplateFilePath <>
For example:
New-AppvSequencerPackage -Name XMLSpy -Path C:\Programs\XMLSpy -Installer
C:\Source\XMLSpy.msi FullLoad
Optionally, replace the location of the MSI file for a script that silently
installs the application.
6. When the command is executed, the installer will start the installer
application.
7. Install the application.
8. When the setup is complete, the sequencer detects that the installer
process is closed and will capture all the changed files and registry
locations.
9. A subfolder in the location of the Path parameter will be used to
store the package.

Sequencing Add-ons / Plug-ins


Plug-ins and add-ons can be sequenced so they appear in a locally
installed or virtualized application. The plug-in will appear only when an
instance of the local application is launched from within the virtual
environment created for the plug-in application.
In many ways, you sequence plug-ins and add-ons no different than you
would any other. The only difference is that the application where the
plugin should appear must be available on the system prior to starting the
sequence.
App-V 5 offers the new feature RunVirtual which allows us to start a
virtual environment when the locally installed application/executable is
started. This is ideal for add-ons and plug-ins since this makes it possible
to start the add-on/plug-in no matter how the end-user starts the
application/executable.

How to sequence an add-on


1. Start the sequencer from the start menu
2. Click on Create a new virtual application package
3. Leave Create Package selected and click on Next
4. In the Prepare Computer phase the sequencer checks if there are any
pre-requisites that are not in place. For example, if the system needs a
reboot or if there was already a package created on the same system.
Review the issues, if any, and make sure that there are no issues
before clicking Next.
5. Select Add-on or Plug-in and click Next.
6. In the Select Installer phase, it is possible to browse to the setup file
of the application that is going to be virtualized.

This is an optional step; it is also possible to start the installer


manually when the Installation step is started.

Select the setup file by using the Browse button or select Perform a
custom installation and click Next to proceed.
7. Before sequencing the add-on or plug-in, the application where the
add-on or plug-in needs to be integrated into needs to be available on
the system where the sequence is created.
For example, if you want to sequence a plug-in for Notepad++, the
Notepad++ application needs to be on the system where the plugin
will be installed on.
In the Install Primary step, the application can be installed and will
not be part of the virtual application package.
If the primary application is a virtual application, it must be
expanded on the system. Use the Expand Package button to open the
Expand package to disk window, select the .AppV file and wait for
the extraction to complete. This can take a while depending on the
size of the App-V package.
Once the primary application is installed or extracted, check I have
installed the primary parent program and click Next.

8. Enter the Virtual Application Package Name, for example


PSpad_10.0_EN_V1 and click Next.

The sequencer states that when installing the application it is best to


install it in %ProgramFiles% for optimal performance.
9. When the application is installed, it is possible to start it and modify
all the settings that needs to be changed.
For example, add a button to for the plugin to the toolbar or disable
any update functionality and welcome screens.

When finished, click I am finished installing and click Next.


10. If there are any issues detected, they will be displayed in the
Installation Report.

For example, if there are any drivers installed during the installation
of the application, there will be a notification that these will not be
included in the package.

Review the Installation Report and click Next.


11. The package is now ready to be saved or it is possible to customize it.

The customization is explained in the Creating virtual applications


chapter. In this example, we are going to choose Stop now. Click
Next.
12. In the Create Package step, optionally enter a description and change
the save location. Click Create.

The add-on package is now saved.

How to sequence a plugin


You can sequence plug-ins or ActiveX controls for Internet Explorer
using the App-V sequencer. This pulls the locally installed application
into the virtual environment with the additions you have specified. This
lets you have a clean and secure Internet Explorer that you can lock
down on a users machine and then allow them to use the plug-ins that
you define.

1. Start the sequencer from the start menu
2. Click on Create a new virtual application package
3. Leave Create Package selected and click on Next
4. In the Prepare Computer phase the sequencer checks if there are any
pre-requisites that are not in place. For example, if the system needs a
reboot or if there was already a package created on the same system.

Review the issues, if any, and make sure that there are no issues
before clicking Next.
5. Select Add-on or Plug-in and click Next.
6. In the Select Installer phase, it is possible to browse to the setup file
of the application that is going to be virtualized. This is an optional
step; it is also possible to start the installer manually when the
Installation step is started.

Select the setup file by using the Browse button or select Perform a
custom installation and click Next to proceed.
7. Before sequencing the plug-in, the application where the plug-in
needs to be integrated into needs to be available on the system where
the sequence is created.
Since we are going to sequence a plug-in for Internet Explorer the
Primary parent application is already available on the system.

Check I have installed the primary parent program and click Next.

8. Enter the Virtual Application Package Name, for example


TimeWritePlugin_2.3.1_EN_V1 and click Next.
9. In the Installation phase, open Internet Explorer and browse to the
website where the plug-in will be loaded.
When the plug-in is installed and works correctly, click I am finished
installing and click Next.
10. If there are any issues detected, they will be displayed in the
Installation Report.

Review the Installation Report and click Next.


11. The package is now ready to be saved or it is possible to customize it.

The customization is explained in the Creating virtual applications


chapter. In this example, we are going to choose Stop now. Click
Next.
12. In the Create Package step, optionally enter a description and change
the save location. Click Create.

The add-on package is now saved.

Making an add-on or plugin available using RunVirtual or


Connection Groups
Now that the application is virtualized, it needs to be connected to a local
application or to another package by using Connection Groups to become
visible within that application.
See RunVirtual how to connect to a local application. See Connection
Groups how to connect two or more packages.

Dynamic Configuration files


When a virtual application is added to the system it uses the
AppxManifest.xml file from inside the .APPV file so the client can create
the Integration Points, like the shortcuts and the context menu entries.
Inside the folder where .APPV file resides, there are two Dynamic
Configuration files placed. These two files can be used to configure the
package on the system without editing the package in the sequencer.
The Dynamic Deployment files are called:
<package name>_DeploymentConfig.XML
<package name>_UserConfig.XML

The <package name>_DeploymentConfig.XML file is used when the
virtual application is published globally.
The <package-name>_UserConfig.XML file is used when the virtual
application is published to the user. Settings are applied to a single user
without affecting any other users on a client.
The <package name>_DeploymentConfig.XML and <package-
name>_UserConfig.XML in the package folder are used when they are
specified in the PowerShell command line or imported in the App-V
Management Server console.
The XML files exist of components that can be configured using a text
editor. For example, a shortcut to an executable can be disabled.
You should always create a backup copy of the original file prior to
making any modifications. Placing an incorrect syntax could cause the
application to not work properly, or can even prevent the application
from appearing at all on the clients.


Be careful when modifying XML files because
XML files are case sensitive.

Scripts
Using the sequencer, it is possible to add scripts. Scripts can be for
example PowerShell, Visual Basic or CMD files.

Adding a script to the package


1. In the sequencer, click on the Package Files tab
2. Click on Scripts
3. Click on View, Virtual File System, Add File
4. Click on Browse and navigate to the script file
5. Click on Ok
The file is now added to the package.

Running a script that is part of a package


If the script is part of the package, it can be started at these triggers:
Publish Package
Unpublish Package
Start Virtual Environment
Terminate Virtual Environment
Start Process
Exit Process

Scripts that run at Start Virtual Environment and the Start Process
triggers can be started inside the virtual environment. Each script has a
Rollback on Error option and a timeout can be set so the action is undone
if an error occurs.
Overview of Dynamic Deployment scripts. VE is Virtual Environment.

Context Event Inside Outside Only


VE VE once

System AddPackage O O

System RemovePackage O O

System PublishPackage O

System UnpublishPackage O

User PublishPackage O
User UnpublishPackage O

User StartVirtualEnvironment O O

User TerminateVirtualEnvironment O

User StartProcess O O

User ExitProcess O

Adding a script to the Dynamic Deployment config


A script needs to be specified in the Deployment Config files. In the next
example the DeploymentConfig will be edited so these scripts will be
started under the system context.
1. Open the <package name>_DeploymentConfig.XML file with your
favorite text editor.
2. Navigate to
<! Machine Scripts Example - customize and uncomment to use
machine scripts >
And remove the comment line: <! and >
3. Choose at what trigger the script, for example AddPackage, the script
should be executed.

In the AddPackage section of the file, change the


[{PackageRoot}]\VFS\ProgramFilesX86\App\InstallDriver.exe value
to [{PackageRoot}]..\Scripts\Script.cmd
4. Save the file. It can now be deployed to the clients. See the section
Assigning a User Configuration to an Active Directory group how to
apply the file in the Full Infrastructure or see the section Applying a
Dynamic Deployment Configuration file how to apply the file using
PowerShell.

Multiple scripts on a single event trigger


App-V 5.1 supports the execution of multiple scripts on a single event
trigger.
Using this new feature, you can modify a Dynamic Configuration file to
run ScriptRunner.exe with parameters to scripts like Visual Basic (VBS),
PowerShell (PS1) and Windows Batch files (CMD).
Each command line will start a script and continue to run the next script
at an event like Add, Publish, StartProcess, StartVirtualEnvironment,
TerminateVirtualEnvironment and UnpublishPackage.



The location of the App-V client must be in system
environment variable %PATH% or
ScriptRunner.exe will not run.
ScriptRunner.exe is typically located in the
C:\Program Files\Microsoft Application
Virtualization\Client folder.
Before continuing with the following procedure, verify that
EnablePackageScripts is set to $true
1. Make sure that the location where ScriptRunner.exe is located is in
the Path variable of the system by opening a Command Prompt and
run Set. If not, add it to the environment variable and reboot the
system to apply it.
2. Because scripts are disabled by default by the App-V client. This
option must be set to $true.
Open PowerShell and run: Get-AppVClientConfiguration

Verify is EnablePackageScripts is set to 1.

If it is not set to 1, run Set-AppvClientConfiguration -


EnablePackageScripts $true

Remember that you must have Administrative privileges and the option
must not be set to 0 by Group Policy because this will override the value.
1. Open the <packagename>_deploymentconfig.xml or open the
<packagename>_userconfig.xml depending on if the package will be
published globally or per user.
2. Nearly at the bottom of the file, above <MachineScripts> remove the
<!character.
3. Remove > under </MachineScripts>
4. Determine on what trigger the script must be executed, for example
PublishPackage or AddPackage
5. Between <Path> </Path> enter ScriptRunner.exe
6. Between <Arguments> </Arguments> enter appvscript and the
location of the scripts. For example:
-appvscript C:\Script1.cmd -appvscript C:\Script2.cmd


7. Remove all the other sections that contain dummy information by
selecting them. For example, remove:

8. Save the file.


9. To test the file, we will use the following command line in
PowerShell:
Add-AppvClientPackage C:\CoffeeCup\CoffeeCup.appv -
DynamicDeploymentConfiguration
C:\CoffeeCup\CoffeeCup_DeploymentConfig.xml | Publish-
AppvClientPackage Global
Since we modified the DeploymentConfig.xml file, we must use the
parameter -DynamicDeploymentConfiguration and the location of the
modified XML file that contains the multiple scripts to tell the App-V
client to apply it.

And since we use the DeploymentConfig.xml file, the package must


be published Global. Thats why we used the Global switch.
10. Now when the command line is finished both scripts (Script1.cmd
and Script2.cmd) are executed at the trigger Publish-
AppvClientPackage.

Tokens
Scripts can be added to the Dynamic Configuration files and this makes it
easy to modify a package without opening it.
For example, the following can be added to create a registry key in the
virtual registry:
<Registry Enabled=true>
< Include>
< Key Path=\REGISTRY\USER\[{AppVCurrentUserSID}]\Software\
[{AppVComputerName}]\Adobe>
< Value Type=REG_SZ Name=License Data=Number/>
< /Key>
< Key Path=\REGISTRY\USER\[{AppVCurrentUserSID}]\Software\
[{AppVComputerName}]\Adobe/>
< /Include>
< /Registry>

The [{AppVCurrentUserSID}] and [{AppVComputerName}] are tokens


that will be replaced by the SID of the user and the computer name.
There are many tokens defined that can be used in the script section.
See Appendix A for a list of tokens which are available in App-V 5.1.

Package Accelerators
Now that we have spent a lot of time creating our package, lets take look
at how we can speed up this process by taking advantage of a Package
Accelerators.
This is a feature that isnt very well known but it can save you time when
you have packages that need to be created repeatedly.
After a package has been sequenced, a Package Accelerator can be
created for that package. A Package Accelerator is a CAB file that
contains all the information how a package is build using the sequencer.
It does not contain the files from the application itself. Since a Package
Accelerator doesnt contain any files from the application, it is a pre-
requisite that the application is already installed on the machine prior to
building the virtual application by using a Package Accelerator. As our
goal is to speed up the packaging process it is recommended to also
create a script to install the application unattended on the sequencer.
The first step in creating a Package Accelerator is to build a package as
described in Creating Virtual Applications. When the package is saved, a
Package Accelerator can be created. This Package Accelerator can then
be used when building a new package.
Creating a Package Accelerator
1. When you have saved your virtual application, leave the sequencer
open.
2. Click on Tools, Create Accelerator
3. In the wizard, click on Browse and navigate to the .APPV file of the
package. Click Next.

Now you can choose to get the original files from the installation
directory or use files extracted from the .APPV file.

4. Since the bits are still available from the installation, choose Files
installed on local system. Click on Browse and navigate to the
location on the disk where the original files reside. Click on Select
Folder. Click on Next.

The sequencer will create the Package Accelerator.

5. In the next screen it is possible to exclude files from the Accelerator.


Remove the checkbox in front of the files and click Next.
6. All the applications that are detected in the folder specified will be
displayed in the Verify Applications screen. Here it is possible to Add,
Remove or Edit applications that must be included or excluded in the
virtual application. Click Next.
7. When using a Package Accelerator, it is possible to display a text in
the wizard. This text can contain valuable information for the
packager that will use the Package Accelerator. In the Select
Guidance screen, click on Browse and select a RTF or TXT file to
display in the wizard. Click Next.
8. Select the folder where to save the Package Accelerator (.CAB) file.
Click Create.
9. When the creation is complete, click Close to leave the Package
Accelerator wizard.


The sequencer is often reverted to a clean state
using a checkpoint or snapshot. Make sure the
CAB file is saved when reverting to a clean state.

Now that the Package Accelerator is created, the CAB file can be used to
easily build the same package.
Using a Package Accelerator to create a Virtual Application Package.
1. Install the application that needs to be virtualized on the sequencer
machine
2. Open the App-V Sequencer
3. Click on Create a new Virtual Application Package
4. Choose Create Package using a Package Accelerator. Click on Next.
5. Click on Browse and select the CAB file from the Package
Accelerator that we created earlier. Click on Next.

There will be a pop-up that the Package Accelerator file isnt secure.
Click on Run to continue.

6. The content from the guidance file will be displayed. Review the text
and click on Next.
7. Click Browse and select the folder where the application is installed.
Click Next.
8. Review the Description and the Virtual Application Package Name
and click on Create

Wait for the process to finish.


9. When it is finished, click Next


10. If you want to optimize the package, leave Configure Software
selected and click on Next. If not, select Skip this step and click on
Next.

If desired: select an application to modify


11. Click Next


12. Click on Close

The Virtual Application Package is now created and ready.
Package Accelerators are a great feature when you need to repeatedly
create a virtual application of a software package. It can take some time
to set it up, especially the unattended installation of the software
package, but it can save a lot of time.
There are many of Package Accelerators for App-V available at TechNet
Gallery which can easily be downloaded and used.

Creating a sequencer template


The App-V sequencer provides the ability to save the modified settings
from the sequencer to a template file so you can use it to standardize
specific settings for the sequencing process.
Especially for upgrade scenarios, where the settings must be the same as
the original sequencer, saving or standardizing the settings is crucial.
1. Start the Sequencer
2. Click on Tools, Options.
3. In the General, Parse Items and Exclusion Items tabs, review the
settings and modify these if needed.
4. Click on Ok
5. Click on File and then on Save as Template
6. There is a pop-up that the modified settings will be saved. Click on
Ok
7. Specify a location where to save the Template.

To apply the template, start the sequencer and click on File, Load
Template.

Connection Groups
Virtual applications do not have visibility of one another. This is a great
benefit of Application Virtualization since this enables to run multiple
versions of applications on the same system. The other major benefit of
this is it allows you to update packages separately.
Although virtual applications run in their own bubble, there is an
option for you to connect virtual environments using Connection Groups.
Connection Groups in App-V enables virtual applications to interact with
other applications, middleware or plug-ins that have been virtualized in
separate virtual application packages by sharing a common virtual
environment. This enables the application to interact with the other
virtual environment, where normally this is prevented, so a Connection
Group is a group of App-V packages which allow visibility of one
another.
Connection Groups can be made using the Management Console,
PowerShell or with System Center Configuration Manager (SCCM).
When using SCCM, optional packages are not available at the time of
writing. Optional packages will be explained later in this section.
In every Connection Group you have to specify the priority of the
applications, which should be the primary applications, which is
secondary etc. When an application in a Connection Group modifies the
same file or registry values on a system, the application with the highest
priority will take precedence.
Since App-V SP3 it is possible to create a Connection Group and specify
Optional packages. This makes it easy to assign a Connection Group that
contains packages that they are and arent entitled to, to a group of users.
Creating a Connection Group within the Management console
1. Open the Management console
2. Click on Connection Groups in the left pane of the Management
console
3. Click on Add Connection Group
4. Give the Connection Group a name and click on Add
5. Click on the create Connection Group
6. Next to Connected Packages, click on Edit
7. Select the packages that need to be part of the Connection Group
8. Click on the arrow to move the selected packages to the left
9. Change the Load Order to specify which package takes precedence
over the other package in case of a conflict.
10. Select the Use any version
This makes it possible to update the members of the Connection
Group automatically when deploying a new version of a package
11. It might be that the users do not have access to all packages in the
Connection Group. You can enable Optional to only assign the
package to the users that are entitled to use it.
12. Select Add Package Access to Group Access to assign the Active
Directory groups, which are assigned to the packages in the
Connection Group, to the Connection Group itself.
13. Click on Save
14. Click on the name of the Connection Group in the top to return to the
Connection Group properties.
15. Verify that the Active Directory access is correct.
16. Click on Publish


Creating, adding and enabling a Connection Group with PowerShell
Using PowerShell, it is possible to add a Connection Group by using an
XML file. The first step is to add all packages that need to be part of the
Connection Group, then the connection between the package can be
established by using the XML file.


See Adding packages to the system using
PowerShell how to add packages to the system.


Now that the packages that will be part of the Connection Group are
added to the system, the XML file that contains the Connection Group
information, needs to be created.
1. Open PowerShell
2. Run the command:
Get-AppVClientPackage All
3. All the packages that are available on the system become visible.
4. Find the PackageId, VersionId and Name of all the packages that need
to become part of the Connection Group.
5. Open a text editor and enter the following XML code. Change the
values:

<?xml version=1.0 encoding=utf-8?>


<AppConnectionGroup
xmlns=http://schemas.microsoft.com/appv/2014/virtualapplicationconnectiongroup

AppConnectionGroupId=8105CCD5-244B-4BA1-8888-E321E688D2CB

VersionId=84CE3797-F1CB-4475-A223-757918929EB4

DisplayName=PSpad and UltraCompare>

<Packages>
<Package
PackageId= a580ec86-1fa9-45e9-9aa6-11f4c04ffa82
VersionId= 3394c652-fe8c-4a5b-9946-c975a79d6e3a
DisplayName=PSPad_Editor_4.5.3.2298
IsOptional=false
/>
<Package
PackageId=9858c7b7-2757-4e14-8217-a12d655b44b8
VersionId=88ce0d27-65bd-426b-88ee-7200f16b8972
DisplayName=UltraCompare_Professional_7.10.0.1013
/>
</Packages>
</AppConnectionGroup>

6. Save the file


7. In PowerShell, run the following command:
Add-AppvClientConnectionGroup -path C:\App-V\CG\ConnectionGroup.xml

Where C:\App-V\CG\ConnectionGroup.xml is the location of the


Connection Group XML file.

8. Now the Connection Group is added to the system but it is not
enabled to a user or system.

9. In PowerShell, run the following command to publish the Connection
Group for a system:

Enable-AppvClientConnectionGroup -Name PSpad and UltraCompare global

Where PSpad and UltraCompare is the name of your


connection Group.


10. The Connection Group is added and enabled for the system (Global).

Now when UltraCompare is opened, the file structure of PSpad is


visible:



Using PowerShell to add a Connection Group with Optional Packages
Prior to App-V 5 SP3, a Connection Group could only contain packages
that the user or system was entitled to use. This wasnt very flexible
because this led to a sprawl of Connection Groups enabled for groups of
users.

In App-V 5 SP3, optional packages were introduced. With Optional


packages it is possible to create a Connection Group that also contains
packages that users arent entitled to use.

For example, if you have a Connection Group that contains all your
Excel plug-ins and assign it to a group of users, only the plug-ins that the
user or system is entitled to use will become visible in Excel.
When building a Connection Group with optional packages, there need to
be at least one package where IsOptional=false. These packages are
non-optional packages and these must be available at the system prior to
adding the Connection Group.
If you add packages to a Connection Group, you have to think about how
the packages are published on the system where the Connection Group
will be added. Since user published Connection Groups can contain
packages that are published globally or to the user, but globally published
Connection Groups must contain only globally published packages.
Using the following steps, it is possible to create a Connection Group
XML file with optional packages and enable it for a user or system.
The first step is to add all packages that need to be part of the Connection
Group.


See Adding packages to the system using
PowerShell how to add packages.


Now that the packages that will be part of the Connection Group are
added to the system, the XML file that contains the Connection Group
information, needs to be created.
1. Open PowerShell
2. Run the command:
Get-AppVClientPackage All
3. All the packages on the system become visible
4. Find the PackageId, VersionId and Name of all the packages that need
to become part of the Connection Group.
5. Open a text editor and enter the following XML code and changes the
values. Also change the value of IsOptional to True or False.

<?xml version=1.0 encoding=utf-8?>


<AppConnectionGroup
xmlns=http://schemas.microsoft.com/appv/2014/virtualapplicationconnectiongroup

AppConnectionGroupId=8105CCD5-244B-4BA1-8888-E321E688D2CB

VersionId=84CE3797-F1CB-4475-A223-757918929EB4

DisplayName=PSpad and UltraCompare>

<Packages>
<Package
PackageId= a580ec86-1fa9-45e9-9aa6-11f4c04ffa82
VersionId= 3394c652-fe8c-4a5b-9946-c975a79d6e3a
DisplayName=PSPad_Editor_4.5.3.2298
IsOptional=false
/>
<Package
PackageId=9858c7b7-2757-4e14-8217-a12d655b44b8
VersionId=88ce0d27-65bd-426b-88ee-7200f16b8972
DisplayName=UltraCompare_Professional_7.10.0.1013
IsOptional=true
/>
<Package
PackageId=a458c7b7-3233-4e14-2233-a12d655b44b8
VersionId=22ce0d27-3333-2323-88ee-7200f16b8972
DisplayName=Excel_Plug-in_2.10
IsOptional=true
/>
</Packages>
</AppConnectionGroup>

6. Save the file.


7. In PowerShell, run the following command:

Add-AppvClientConnectionGroup -path C:\App-V\CG\ConnectionGroup.xml


8. Now the Connection Group is added to the system but it is not
enabled to a user or system.

9. In PowerShell, run the following command to publish the Connection


Group for a system:

Enable-AppvClientConnectionGroup -Name PSpad and UltraCompare -global


10. The Connection Group is added and enabled for the system.


When the package UltraCompare_Professional_7.10.0.1013 or
Excel_Plug-in_2.10 is available on the system and the user or system is
entitled to use it, it will be part of the connection group and the packages
can see each others virtual environments.
If UltraCompare_Professional_7.10.0.1013 or Excel_Plug-in_2.10 arent
available or the user or system is not entitled to use them, the other
packages still can see each others virtual environment.

Creating Connection Groups or Virtual Environments in System Center
Configuration Manager
In SCCM, Connections Groups are called Virtual Environments. The
Virtual Environments do not offer the same options as Connection
Groups in the App-V Management console. For example, optional
packages are not available at the time of writing.

1. Open the SCCM Management console
2. Click on Software Library
3. Expand Application Management
4. Click on App-V Virtual Environments
5. In the ribbon at the top, click Create Virtual Environment
6. Enter a name and description of the Virtual Environment
7. Click on Add
8. Enter a group name and click on Add
9. Click on the packages that need to be part of the Virtual Environment
and select the correct package from the list.
10. Click three times on Ok


The Virtual Environment will be available when a virtual application,
that is part of the Virtual Environment, is deployed to a system.

Managing Connection Groups


Connection Groups seem to be a great solution; you can connect virtual
environments so they can see each other. However, it also has drawbacks.
Here are some challenges when using Connection Groups.
There is no global overview of which packages are connected to
each other
When deploying Connection Groups, it is unclear which package
is connected to each other on a global level. This brings
challenges when there is an upgrade for a package as you dont
know if it is member of a Connection Group, and if it is, what
happens with the other package in that Connection Group.
Unpublishing a global published package does not validate if the
package is part of a Connection Group of another user
If you unpublish a package that is globally published and part of a
Connection Group, it does not validate if the package is member
of a Connection Group of other users. Before unpublishing the
package, ensure that all the Connection Groups on the system no
longer require the package.
Conflicts
By default, the content of packages in Connection Groups merge.
But when there are files in the same location in both packages.
The priority of the package in the Connection Group determines
which file is visible.
When a package is member of two or more Connection Groups
with the same content, the priority of the Connection Group
determines which Connection Group will be used. The lowest
value of the Connection Group has the highest priority.
Therefore, before using Connection Groups, think over how you are
going to use and manage them.

Updating virtual applications


There comes a time in every applications life when it is time to upgrade.
For example, this can be an update of the software components or
adding/removing/editing registry keys.
Existing virtual applications can be updated using the sequencer. Before
opening a package for upgrade, make sure that:
The sequencer is in a clean state;
The sequencer has the same hardware and operating system as the
original package.

Update a Virtual Application using the sequencer
1. Copy the package to the Sequencer.
2. Open the sequencer and click on Modify an Existing Virtual
Application Package.
3. Depending on the modification, choose the option to update a
package, add a new application or upgrade an application in the
existing package.

I will use Update Application in Existing Package.


Click Next.
4. Click on Browse and select the existing package. Click Next.
5. Click on Next in the Prepare Computer phase if there are no errors or
warnings.
6. Select the installer for the upgrade or choose Perform a custom
installation when there is no installer. Click Next.
7. Install the application or make the appropriate changes to the
package.
8. Click on I am finished installing. Click Next.
9. Review the installation report and click Next to continue.
10. If you want to optimize the package, start the application and open
the most used components.
If you want to place the content in one feature block, select Force
applications to be fully downloaded before launching
Click Next.
11. Choose to continue to modify the package or to finish the upgrade.
I will choose to continue to modify the package.
Click Next and in the next screen, click Close.
12. In the sequencer, it is possible to make modifications to the package.
For example, add files or modify registry keys.
If you installed a new component, check the Shortcuts and FTAs tab
if there is a shortcut to the added application.
13. Save the package.

Now that the package is updated, the Package Version GUID and the
version are updated. The Package GUID will stay the same.

Converting virtual applications from 4.x


Organizations have spent a lot of time, effort and money in virtualizing
their application landscape. Since App-V 5 uses a different file format,
package created in version 4 cannot be used in version 5. That means that
every package that needs to be available in version 5 needs to be touched.
This can be done either manual or automatically using a script.
Any packages sequenced with any version of the App-V Sequencer prior
to 4.5 must first be opened and re-saved using the 4.6 SP2 sequencer
before it can be processed by the App-V 5 Package Converter.
Microsoft provides PowerShell module to convert the packages created
in version 4.6 SP2 to version 5. This module has been enhanced in App-
V 5.1.
Before you can convert your packages, the following requirements must
be met for a successful conversion:
The package converter only supports converting packages created
using App-V 4.6 SP2 and above.

As App-V 5 is supported on Windows 7 and higher, older
operating systems must be removed from the OSD file. The
following lines of code must be removed:

<OS VALUE=Win2K />


<OS VALUE=Win2KSvr />
<OS VALUE=Win2KTS />
<OS VALUE=Win2003 />
<OS VALUE=Win2003TS />
<OS VALUE=WinXP />
<OS VALUE=WinVista />
<OS VALUE=Win2008Svr />
<OS VALUE=Win2008TS />

Error message when converting packages to version 5. Older
operating systems are in the OSD files must be removed.


New conversion options in App-V 5.1:
You can now use the package converter to convert App-V 4.6
packages that contain scripts, and registry information and scripts.
You can now choose to add information from a subset of the .osd
files in the source directory to the package using the
OSDsToIncludeInPackage parameter.
These two new conversion options can give you a higher success rate
when converting your applications to the new format.
Testing the conversion success
The App-V converter module contains a command, Test-
AppvLegacyPackage, that can be used to test the App-V 4 package
quality before converting it to version 5. This gives an insight how many
packages will be successfully converted.
1. Copy your App-V 4.x package to the App-V 5.1 sequencer system.
2. Open PowerShell as administrator
3. Run the command: Import-Module AppVPkgConverter
4. Run the command: Test-AppvLegacyPackage <PackageLocation>

For example:

Test-AppvLegacyPackage C:\AppV4\MINDMANAGER_6_0_EN_V1

When the check is completed, it will give a report if the package can
be converted successfully. When the package has no major errors or
warnings then its a good candidate for package conversion.
However, some errors can go undetected.


Converting a 4.x package to App-V 5
When the App-V 4 packages are tested and contain no errors, the next
step is to convert them to version 5 using the conversion tool.
Conversion requires free disk space on the sequencer that is equivalent to
the size of the current package.
You can use the following procedures to convert an existing App-V 4
package to the new format in App-V 5.
1. To perform a conversion, copy your App-V 4.x package to the App-V
5.1 sequencer system.
2. Create a folder where the converted packaged will be saved.
3. Open PowerShell as administrator
4. Run the command: Import-Module AppVPkgConverter
5. Run the command:

ConvertFrom-AppvLegacyPackage -SourcePath <Location of App-V 4 package>


-DestinationPath <Location of App-V 5 package> -DownloadFullPackageOnFirstLaunch

For example:

ConvertFrom-AppvLegacyPackage -SourcePath C:\AppV4\WAPAST12.E01
-DestinationPath C:\AppV5\WAPAST12.E01 DownloadFullPackageOnFirstLaunch

6. Now wait for the conversion to finish and review the Errors,
Warnings and Informational sections.

7. When the conversion is completed, the converted package is saved in
the destination path. You should always verify package functionality
when the conversion is completed.

When issues occur during the conversion, it is useful to enable the


Microsoft-AppV-PackageConverter/Debug logs. To enable these logs is
explained in Displaying additional App-V Client Event Logs

Virtualizing Microsoft Office


Deploying Microsoft Office as a Microsoft Application Virtualization
(App-V) package is possible. At the time of writing, App-V 5 supports
Microsoft Office 2016, Microsoft Office 2013, Microsoft Office 2010,
and Microsoft 2007.

In this book, I will focus only on the deployment of Office 2013.


Click-to-Run
Office 2013 uses Click-to-Runs streaming technology to download,
install, convert and start Office. Because Office 2013 is already provided
in the App-V format, there is no need to sequence the application. Click-
to-Run does not generate an App-V package like the sequencer does but
it uses App-V technology and is an alternative to the traditional Windows
Installer-based (MSI) method, where an application is installed on the
computer.
When launching an application from the Office 2013 suite using Click-
to-Run the following command line will be started:
C:\Program Files\Microsoft Office 15\ClientX64\officec2rclient.exe
/launch root\Office15\WINWORD.EXE
The officec2rclient.exe is the Click-to-Run client which is used to start
the virtual environment of, in this case, Word.
Click-to-Run is available for Office, Visio, Project, SharePoint Designer
and Lync. If you want to use Visio 2013 or/and Project 2013 along with
Office, they must be included in the same package with Office.
Using Click-to-Run to install Office 2013

1. Office can be installed directly from the internet by logging into your
Office 365 account and running the installation from the Downloads
section.

Navigate to https://portal.office.com/ and click on Sign In


2. Click on Install Now

3. Start the downloaded setup and wait for the Getting things ready
screen to finish.


Do not disconnect from the internet since the
installation will stream Office 365 from the internet
on your local system.


4. When the setup is complete, Office is available from the start menu.

Converting Office 2013 Click-to-Run to an App-V package


By default, Office 2013 installations that uses Click-to-Run will
download the Office suite from the internet, with full graphical user
interface and with automatic updates enabled. These default settings can
be modified by using the Office Deployment Tool (ODT).
As said, Click-to-Run uses the App-V architecture but does not generate
an App-V package. By using the Office Deployment Toolkit, it is
possible to convert the files downloaded with Click-to-Run to an App-V
package.


You cannot use the App-V Sequencer to create or
modify an Office 2013 App-V package.


When the Office package is converted, it is ready for deployment. It can
be deployed in the same manner as any other App-V packages that are
created by using the sequencer.
When deploying the virtual Office 2013 package, there are requirements:
Only one Office package is allowed on each client;
The Office package must be published Globally for the extension
points to function. Extension points are Shortcuts, File-Type
associations, URL Protocols, AppPaths, Software Clients (Send
to Mail, Default Program), Environment Variables and COM;
Scripting must be enabled for the App-V client to publish Office
2013 packages successfully;
To verify the status of the Office 365 subscription, systems must
have internet access every 30 days;
Users must be local administrators on their systems to install
Click-to-Run.

The user and computer settings for Office can still be configured using
Group Policy
Creating an Office 2013 package using the Office Deployment Tool

Make sure that the .NET Framework 4 is installed on the computer that is
being used to create the package. You need to create the App-V package
of Office 2013 on a computer running the 64-bit version of Windows.
Although Windows is 64 bit, the package will also work on 32-bit
computers.
1. Download the Office Deployment Toolkit for Click-to-Run from the
Microsoft Download Center. http://www.microsoft.com/en-
us/download/details.aspx?id=36778
2. After the download is complete, start the setup and extract the files

3. Navigate to the extracted files and, in a text editor, open the file
Configuration.XML
4. Remove both <! and > and change the \Server\Share\ location to
a network share where Office 2013 will be placed when it is
downloaded.
Optional: Change the 32 value to 64 to use the 64-bit version of
Office.
5. The Product ID value can be modified to include Visio and/or
Project. You can specify O365ProPlusRetail, ProPlusVolume,
VisioProRetail, and ProjectProRetail.

By default, Visio is added, it is recommended to remove it when Visio


is not used.
6. Optional: Change or add the Language ID.
For example, add: <Language ID=ja-jp />
Search for Language tags (language IDs) and/or LCIDs for the fully
localized languages list.
7. It is possible to upgrade Office from a network, local, or HTTP path
of a Click-to-Run source. If UpdatePath is not set, Click-to-Run
installations obtain updates from the Microsoft Click-to-Run source
by default.

In an Enterprise environment, it is wise to disable updates or to


change the values to download the updates from the local network. It
is also possible to modify the update path using Group Policy.
You can use Deadline with Target Version to update Office to a
particular version by a particular date. Users receive multiple
reminders to install the updates but when the deadline is reached
users receive 15 minutes to save their work before the Office
applications are closed automatically.
8. Office 365 Click-to-Run products are already set to activate
automatically, so there is no need to change the AUTOACTIVE
setting.
9. Save the Configuration.XML file

10. Start an elevated Command Prompt


11. Run the command line:
C:\ODT\setup.exe /download C:\ODT\configuration.xml
12. After the download of Office 2013 is complete, it can be converted
into an Office 2013 App-V package.
Run the following command line:

C:\ODT\setup.exe /packager C:\ODT\configuration.xml C:\OF2013


13. Wait for the App-V package to be created.


14. When the conversion is complete, the App-V package is generated
and can be used for deployment.

Enabling Office plug-ins
Since you cannot virtualize Office 2013 using the App-V sequencer,
plug-ins cannot be included in the Office 2013 package and need to be a
separate package that only contains the plug-in. This separate package
can then be linked to the Office 2013 package using Connection Groups.
When virtualizing the plug-in, make sure the following requirements are
in place:
Office 2013 must be installed;

Make sure that COM Mode is set to Integrated in the Dynamic
Deployment file of the plug-in package. This will enable COM to
integrate with the local system;

Make sure that InProcessEnabled and OutOfProcessEnabled is
set to True in the DeploymentConfig file of the plug-in package.

In-process is implemented in a dynamic linked library (DLL), and


out-of-process is implemented in an executable file (EXE).
Out-of-process can reside either on the local system or on a
remote system.
In-process (a DLL) can run in an alternate EXE process to gain
the advantage of being able to run the process on a remote
system;

Make sure that Objects Enabled is set to False in the
DeploymentConfig file of the plug-in package;


Make sure that the Dynamic Deployment file is used when
deploying the package of the plug-in.

When the plugin is created, it can be included in a Connection Group
together with the Office 2013 package.
See Creating a Connection Group within the Management console how
to do this.

Summary
This chapter covered all aspects of the creation of virtual applications
using the sequencer, the PVAD/VFS and what limitations the sequencer
has. You learned how to optimize packages and use package accelerators
to quickly create a new package.

Then Add-ons/Plug-ins, Dynamic Configurations Files and scripts were
examined. Connection Groups were explained and converting packages
was touched upon. You saw how to perform the virtualization of Office
2013 using Click-to-Run.

We can turn our attention to delivering our virtual applications to our
users and start looking at the lifecycle of these virtual application and
how to save changes the user makes to their applications.
Chapter 5 - Package Deployment
Virtual applications go through a lifecycle of sequencing, adding,
publishing, launching, upgrading, and removal. This chapter focuses on
choosing the right delivery method or methods for the virtual
applications in your environment and to your managed devices.
In this chapter:
Choosing the right delivery method
Deployment using PowerShell
Deployment using the Full Infrastructure
Deployment using System Center Configuration Manager
Cloud deployment
Package update deployment
Publishing packages
User State Virtualization
Repairing an App-V package
Usage reports

Deployment using Full Infrastructure


The App-V Full Infrastructure is the tool that comes with the App-V
product to deploy virtual applications. It provides the streaming method
of application deployment.
The Full Infrastructure is designed to only deploy App-V packages. A big
benefit is that it supports all the latest features of the App-V product. At
the moment of writing, other deployment products like SCCM do not
include all the features that the App-V Full Infrastructure offers, like
optional connection groups.
Adding packages to the Application Virtualization
Management console

When an application is virtualized, the packaged should be placed in the
file repository where the packages reside. From there, the packages can
be added to the App-V Management console.
1. Open the App-V Management console
2. Click on Packages on the left side of the navigation pane
3. Click on Add or Upgrade Packages
4. Navigate to the location of the .APPV file on the network or enter the
HTTP(s) address where the package resides on the network.

5. Click on Add Package

The package is imported on the App-V Management server and


visible in the Packages list.
6. Click on the package that you just added
7. Click on Edit next to AD Access
8. Click on Add AD Group
9. Type the name of the Active Directory group in the format
domain\group and click on Check
10. Click on the suggested group and click on Grant Access


11. Now that we have assigned a group of users or computer to the
package, we can Publish the package so it becomes available.
Click on Publish in the lower right corner.
The package is now published to the appropriate AD group(s) and will be
available the next time the App-V client for the users or computers in the
group is synchronized with the App-V Publishing Server.
Because the synchronization runs at an interval, it may take a few
minutes (default value is 10 minutes) for application to become available.
There are two ways to speed this up.
1. Manual restart the AppvPublishing Application Pool in IIS on the
Publishing server.
2. Change the refresh interval in the registry.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\AppV\Server\PublishingS
PUBLISHING_MGT_SERVER_REFRESH_INTERVAL = 600
(default setting in seconds / 10 minutes)
PUBLISHING_MGT_SERVER_REFRESH_INTERVAL = 60
(common value used for test environment / 1 minutes)

The amount of data that will be streamed to the client is dependent on the
size of the package containing the application or applications and how
the package was sequenced.


It may take a couple of minutes before the package
becomes visible since the Publishing Server needs
to synchronize with the App-V database.

Editing package configurations from the Management


console
When a package is added to the Management console the
AppxManifest.xml from within the .APPV file is imported and the
settings defined in this file are applied.
From within the Management console you can easily edit or overwrite
the configuration that is applied to the package.

1. Open the App-V Management console
2. Click on Packages on the left side of the navigation pane


Near the top of the Packages list, you see a Search
box. As its name implies, it allows you to search
for packages based on a word or phrase.


3. Click on the package that you want to edit.
4. Click on Edit Default Configuration in the lower right corner.
5. From the Applications tab it is possible to enable or disable virtual
applications. Click on the Enable or Disable button on the lower right
corner to change the status.
6. In the Shortcuts tab it is possible to Add, Edit and Remove shortcuts.
It is not possible to disable shortcuts and every shortcut must be
bound to an application from the Applications tab.
Using the dropdown list, you can set the location for a shortcut. It
offers a set of standard locations but you are free to choose Custom to
define your own location.


7. All the File Types associated with the package are displayed in the
File Types Association tab. File Types cannot be added, edit or
removed from the Management Console.
8. The Advanced Tab offers the possibility to export the current settings
to a Dynamic Configuration file. This file can be modified and, using
the Import and Overwrite this Configuration button, imported so it
overwrites the current settings.
The export feature can also be used as a safety net to restore the
settings before making modifications.

Assigning a User Configuration to an Active Directory group


In the Management Console it is possible to assign a custom
configuration that is applied to the package to a specific group of
users.
1. Open the App-V Management console
2. Click on Packages on the left side of the navigation pane.


Near the top of the Packages list, you see a Search
box. As its name implies, it allows you to search
for packages based on a word or phrase.


3. Click on the package that you want to edit.
4. Click on the down arrow next to the Active Directory group you want
so assign a custom configuration and click on Custom

5. Click on Edit User Config


6. In the Custom Configuration screen, it is possible to change, for
example, the shortcuts for a specific group of users. Changes take
effect immediately.

Adding a Publishing Server to the client using Group Policy


Group Policy is the most flexible way to apply a Publishing Server to the
App-V client. When the Publishing server is added and the policy is
applied, the App-V client will synchronize with the Publishing server to
request accessible packages.
1. The first step is to download the Microsoft Desktop Optimization
Pack Group Policy Administrative Templates from the Microsoft
Download Center, http://www.microsoft.com/en-
us/download/details.aspx?id=41183
2. Start the MDOP_ADMX_Templates.exe file and extract the files
3. On the server where the Group Policy editor is available, move the
appv.admx file to C:\Windows\PolicyDefinitions
4. Move the .ADML files in the subfolder of your language to
C:\Windows\PolicyDefinitions\*language folder*
5. Start the Group Policy editor.
6. Create and link a new Group Policy to the Organizational Unit where
the systems are located in.
7. Navigate to Computer Configuration, Administrative Tools, System,
App-V.
8. Here you can modify the settings of the App-V client.
9. Navigate to Publishing and open Publishing Server 1 Settings
10. Enter the correct information for your publishing server and the
values for the refresh that best suits your environment.
11. When ready, click on Ok to confirm the settings.
12. When the GPO is applied to the App-V client. The App-V client will
apply the settings and synchronize with the Publishing server.

Adding a Publishing Server to the App-V client using


PowerShell

Using PowerShell, it is possible to add, remove and force
synchronization with an App-V Publishing server.

1. Open PowerShell as an Administrator
2. Run the following command to add a App-V Publishing server to the
system so the App-V client can request accessible packages.

Add-AppvPublishingServer -Name MyServer -URL


http://Myserver.domain.com:8080

Add-AppvPublishingServer -Name MyServer -URL


http://Myserver.domain.com -GlobalRefreshOnLogon $true -
UserRefreshOnLogon $true

When the PowerShell command is executed, it creates a
Scheduled Tasks that runs at login to synchronize with the
publishing server. The publishing refresh is done at user logon by
default, can be triggered by the user, and can be configured to
occur at a timed interval.
When the GlobalRefreshEnabled parameter is added to the
command, it creates a second scheduled task. The latter will also
run at login and gets the packages that are published globally
(computer-based targeting).

The 1_user_logon executes: SyncAppvPublishingServer.exe 1


NetworkCostAware
The 1_global_logon executes: SyncAppvPublishingServer.vbs 1 -Global
NetworkCostAware

The number 1 will be increased when multiple Publishing servers are
added.
When the Publishing server is removed, it also removes the Scheduled
Task(s).

Force synchronization with the Publishing Server from the


App-V client.
To speed up the availability of the App-V package on the client, it is
possible to synchronize with the Publishing Server.

1. Open PowerShell as an Administrator
Run the following command to synchronize with all the App-V
Publishing servers available. Change the name of Microsoft to the
name of your publishing server.

Get-AppvPublishingServer Name * | Sync-AppvPublishingServer


Deployment using PowerShell


PowerShell can be used as the command-line interface for administering
the entire stack of Micr osoft products. Everything IT
professionals can administer their Windows-based systems through
Windows PowerShell. It is used across Microsoft products, from
Windows to Exchange, Lync, SharePoint, System Center, and SQL.
Also App-V can be administered by PowerShell. It empowers the
standalone deployment of virtual applications. This is a manual
deployment because it provides no automation, thereby forcing the
administrator or user to add these applications manually.
The App-V client comes with a PowerShell module to manage the client.
It needs to be imported by running: Import-Module AppVClient.


Before the App-V PowerShell commands can be
used, the AppVClient module must be imported.


Adding packages to the system using PowerShell

1. Open PowerShell as an Administrator
2. Run the following command to add a package to the system, publish
the contents and mount the package so it is fully loaded in the App-V
cache. Change the name of ACDsee to your package name.

Add a package that is stored locally:

Add-AppvClientPackage -Path C:\App-


V\ACDSee_Photo_Manager_2009\ACDSee_Photo _Manager_2009.appv |
Publish-AppvClientPackage | Mount-AppvClientPackage


Add a package using HTTP:

Add-AppvClientPackage -Path http://App-


V/ACDSee_Photo_Manager_2009/ACDSee_Photo _Manager_2009.appv |
Publish-AppvClientPackage | Mount-AppvClientPackage

Add a package globally (for every user on the system) using SMB:

Add-AppvClientPackage -Path \fileserver01\App-


V\ACDSee_Photo_Manager_2009\ACDSee_Photo _Manager_2009.appv |
Publish-AppvClientPackage Global | Mount-AppvClientPackage


Adding all packages from a folder to the system using PowerShell
To easily import all packages in sub folders from a directory use the
following script:

1. Open PowerShell as an Administrator
2. Run the following command to add all package in a subfolder to the
system, publish the contents globally and mount the package so it is
fully loaded in the App-V cache.
Get-ChildItem -Filter *.appv -Recurse | ForEach-Object {Add-AppvClientPackage -Path
$_.FullName | Mount-AppvClientPackage | Publish-AppvClientPackage -Global}
The import may take a while depending on the number of packages and
integration points that exists in the package.
Applying a Dynamic Deployment Deployment configuration file
The following command configures an already existing App-V Client
Package using a Dynamic Deployment configuration file.
1. Open PowerShell as an Administrator.
2. Run the following command to apply the settings in a Dynamic
Deployment configuration file to the package.

Set-AppvClientPackage -Name MyApp -Version 1 -Path


C:\MyApps\MyApp.appv
DynamicDeploymentConfiguration C:\DynamicConfigurations\MyApp.xml


Remove a package
Although Remove-AppVClientPackage is sufficient to remove an
application from the system, sometimes the package is in use and needs
more commands to successfully be removed.
1. Open PowerShell as an Administrator
2. Run the following command to force closure of the application and
afterwards unpublish and remove the package.

Get-AppvClientPackage -name *yourpackage* | Stop-AppvClientPackage | Unpublish-


AppvClientPackage | Remove-AppvClientPackage

Remove all packages that are available on the system

Get-AppvClientPackage -All | Remove-AppVClientPackage

Stop all running virtual applications from every package

Get-AppVClientPackage -name * | Stop-AppvClientPackage


Revert the application settings for WinRAR to its original settings.

Get-AppVClientPackage -name *WinRAR* | Repair-AppVClientPackage

Open CMD in the virtual environment of ACDSee

$package = Get-AppvClientPackage ACDSee*


Start-AppvVirtualProcess -AppvClientObject $package cmd


Synchronise with the publishing server

Get-AppvPublishingServer Name MyServer | Sync-AppvPublishingServer


Add App-V Connection Group

Add-AppvClientConnectionGroup -path C:\MyApps\MyGroup.xml

Deployment using System Center


Configuration Manager
System Center Configuration Manager 2012 SP1 and higher includes the
capabilities to integrate with App-V. This is installed and enabled by
default. It provides a complete deployment and update service for
applications, both virtual and physical, through a single management
console.
At a high level, managing virtual applications with Configuration
Manager requires applications to be sequenced, published using
Configuration Manager Advertisements, and delivered to the end clients.
When using SCCM, a Publishing Server isnt required anymore.
When deploying App-V applications using SCCM, you still need the
App-V Client on your end user devices or RDS servers and from a
licensing perspective, you still need a MDOP license.
The SCCM client is used to deploy the advertisement and to control the
App-V client; it doesnt completely replace the App-V client. The SCCM
takes over the App-V client as the first package is deployed using SCCM.
There are two methods for delivering virtual applications to clients using
SCCM:
1. Streaming delivery
Streaming of virtual applications can be done through HTTP(s) from
a distribution point. The client contacts a management point to
determine which distribution point to use and then the application is
streamed from the distribution point. SCCM 2012 SP1 and higher
distribution point supports App-V streaming out-of-the box.
2. Local delivery (download and execute)
Downloads the entire virtual application package through
Background Intelligent Transfer Service (BITS) into the
Configuration Manager client cache, and then it instructs the App-V
Client to stream the application from the Configuration Manager
cache into the App-V cache.
Because App-V and SCCM are two different products the integration
between the two products has some limitations. At the moment of writing
SCCM does not include all the features that the App-V Full Infrastructure
offers, like optional connection groups.
The recommended practice for application delivery to Remote Desktop
servers using SCCM is to target the server (not users) with mandatory
advertisements. In this situation, the advertisement executes even when
no one is logged in and the applications will to be available for all users
that log into the system remotely.

Adding App-V applications to System Center Configuration Manager

1. Open the SCCM Management console
2. Click on Software Library
3. Expand Application Management
4. Click on Applications
5. In the ribbon at the top, click on Create Application
6. Select Automatically detect information about the application
installation files
7. From the dropdown menu, choose Microsoft Application
Virtualization 5

8. Click Browse and locate your .AppV file


9. Click Next to import the package
10. Click Next on the summary screen
11. Fill in the requested information and click on Next
12. In the summary, click on Next
13. Wait for the progress to finish and click on Close

The package is now added to the SCCM Management console and from
here it can be deployed to the clients.


Deploying App-V applications using System Center Configuration Manager
After an App-V package is added to the Applications part of SCCM, it
can be distributed to the distribution point and from there deployed to the
client.
When deploying App-V applications using System Center Configuration
Manager (SCCM), you still need to ensure the App-V Client is deployed
to your end user. There also needs to be a collection available where the
clients reside that needs to receive the virtual application.
1. Open the SCCM Management console
2. Click on Software Library
3. Expand Application Management
4. Click on Applications
5. Click on the application that needs to be deployed.
6. From the ribbon at the top, click deploy.
7. Click the Browse button next to Collection and select the correct User
or Computer collection.
8. Click Ok
9. Click Next
10. In the content screen of the wizard, click Add and select Distribution
Point.
11. Check the content Distribution Point and click on Ok
12. Click on Next
13. The next screen allows the package to be deployed mandatory
(Required) or that the end user can select the application from the
Software center (Available).
14. Click Next.
15. By default, the application will be available as soon as possible but it
is also possible to delay the deployment. To delay the deployment,
select Schedule the application to be available at and select a data
and time. Click Next.
16. The next screen allows setting the user notifications that the user
receives.
17. If you are using System Center Operations Manager, it is possible to
set the system to Maintenance. Click Next.
18. Click Next in the summary screen
19. Wait for the progress to finish and click Close.

Now that the wizard is complete, the package will be distributed to the
distribution point of SCCM and from the copied to the SCCM client
cache. When it is fully downloaded it is placed in the App-V client cache.


When using System Center Configuration Manager
to deploy virtual applications, the packages are
placed twice on the system. Once in the SCCM
cache and once in the App-V client cache.

Deployment using MSI


When creating an App-V package using the App-V sequencer, an MSI is
automatically created unless this has explicit been disabled in the
Sequencer options.
The MSI file does not contain the full package but is a wrapper for
publishing the App-V package on the system. It always has the same size
(520 Kb). The MSI is great for rarely connected end users to add
packages to their system from a removable disk or network path.
Other benefits from the MSI are that they can be deployed using
Enterprise Software Deployment (ESD) software like Microsoft System
Center Configuration Manager. But also Group Policy can be used to
deploy the packages.
The MSI requires Administrative rights to complete the installation.

Package update deployment


Deploying an updated package
Packages can be updated using the sequencer and deployed using the
App-V Management console.
An updated package has new version GUID. When the client
synchronizes with the App-V Publishing server it detects that there is a
new version and will replace the current version with the new version.
1. Open the App-V Management console and click on Packages.
2. Click on Add or Upgrade in the bottom right.
3. Click on Browse and select the .AppV file of the updated package.
Click on Add Package.
4. The Management console asks if you want to copy access and
configuration from the previous version.

5. Select the package and click on Publish.


The clients will now receive the updated version when they
synchronize with the App-V Publishing server.

Publishing packages
Global and User Publishing
App-V packages can be published to a user and to a system. When it is
published to a user, it is only available to that user or a subset of the
users. Shortcuts are stored in the current user account profile and other
extension points are stored in the registry in the
HKEY_CURRENT_USER hive.
If it is published global, it is published to the system and it then becomes
available to everyone that logs on to that system so all users on that
machine can use it. Shortcuts are stored in the All Users profile location
and other extension points are stored in the registry in the
HKEY_LOCAL_MACHINE hive.
By using the PowerShell command: Get-AppVclientPackage you can see
if the package is published Globally or if the package is published to a
user.

Publish or unpublish packages for a specific user (UserSID)


Using PowerShell, it is possible to publish a package for a different user.
The drawback of the is that you must know the users SID (Security
Identifier). To easily find the SID for the user, you can use PsGetSid
from Sysinternals. Afterwards use the following command to publish a
package for another user on the system:
Publish-AppvClientPackage -name <application name> -UserSID <SID>
For example:
Publish-AppvClientPackage -name *coffee* -UserSID S-1-5-21-1676528663-802255465-
4272012724-1000

Integration with local applications


By default, locally installed applications cannot see or communicate
directly with virtualized applications. Although this is intended behavior
of the application isolation that is provided by App-V. It is possible to
allow locally installed applications running on a client to communicate
with virtualized applications.

This is a useful when you:


Want to run a native application on client computers, but want to
virtualize and run specific add-on or plug-in that works with that
local application;
Must troubleshoot a virtual application and want to open a local
application within the virtual environment.

Use any of the following methods to open a local application inside the
App-V virtual environment:
RunVirtual registry key
Get-AppvClientPackage PowerShell cmdlet
Command line switch /appvpid:<PID>
Command line hook switch /appvve:<GUID>

Each method accomplishes essentially the same task, but some methods
may be better suited for some applications than others, depending on
whether the virtualized application is already running.

RunVirtual
Since Service Pack 2, App-V 5 offers the possibility to use a registry key
to run a locally installed application in a virtual environment.
First this was only available for packages that were published Global but
since SP3 this feature also works for packages that are published to the
use.


RunVirtual cannot be set using the
Management console. Use other tools to
configure the RunVirtual registry key.


1. Open PowerShell
2. Run the command: Get-AppVClientPackage All
3. All the packages on the system become visible.
4. Find the PackageId and the VersionId of the add-on or plug-in
5. Navigate to
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\AppV\Client\RunVirtu
6. Create a new subkey that contains the executable name of the local
application. For example, Excel.exe
7. In the Default key, add the <PackageId>_<VersionId>

Now when Excel is started, the virtual application will be visible from
the local application.
If you want to use the RunVirtual key for packages that are published to
users, change to registry location to
HKEY_CURRENT_USER\SOFTWARE\Microsoft\AppV\Client\RunVirtual

PowerShell
The PowerShell cmdlet Start-AppVVirtualProcess can be used to start a
native application process within the virtual environment.
The first step is to store the package information in an environment
variable and use that information to start the virtual environment.
$Package = Get-AppvClientPackage *<Part of package name>*
Start-AppvVirtualProcess -AppvClientObject $Package cmd.exe

Command line switch /appvpid


The /appvpid:<PID> switch can be used to start a native application
within a virtual process that you select by specifying its process ID
(PID). To find the process ID (PID) of the App-V process, run the
command tasklist.exe from an elevated command prompt or Get-Process
in PowerShell.
The /appvpid:<PID> switch method launches the native application in
the already running virtual environment.
Example: cmd.exe /appvpid:8108

Command line hook switch /appvve


The /AppVve command makes it possible to launch locally installed
applications inside the App-V virtual environment without having to
make any modifications to that package.
This is a great feature to use when troubleshooting virtual applications.
The AppVve makes use of the Package GUID and Version GUID of the
virtual application. So before this command can be used, these values
must be known.
1. Open PowerShell
2. Run the command: Get-AppVClientPackage All
3. All the packages on the system become visible.
Find the Package GUID and Version GUID for the package that you
want to use.
4. Now that the Package GUID and Version GUID are known, use the
following command to access the virtual environment from a locally
installed application:
<application path and name> /appvve:PackageGUID_VersionGUID
For example, C:\Windows\System32\notepad.exe /appvve:4e7fcd9f-
17d9-49d1-bf35-7a12f5d13ad4_52957500-ccf5-4af7-a10f-
80579a390533
5. In this example, notepad can now access the installation folder of
Notepad++.

The next example uses /appvve to open the virtual environment and copy
a file from a server to the virtual environment:
cmd.exe /appvve:d2a8cc9e-9238-4a57-8486-c3695af05881_0c28a8bc-ee97-4d77-925c-
34983f297492 /c xcopy \server\content\SAP-GUI-7.30-UK\saplogon.ini
%appdata%\SAP\Common /Y

User State Virtualization


Users need the ability to customize their application environment so it
best fit their needs to be productive. By default, when using SBC
environments or using pooled VDI, these customizations to the
applications are lost when the user logs off.
Using User State technologies like User Experience Virtualization (UE-
V) or User Profile Disks (UPD) user data and settings can be transferred
to a centralized location in the data center, eliminating the limitations of
local storage and allow users to access their data and settings from any
desktop.
Another benefit of UE-V and UPD is that is allows to save the App-V
publishing information. This could reduce the logon time in a pooled
environment.
Lets take a closer look at these two Microsoft solutions.
User Experience Virtualization
User Experience Virtualization (UE-V) is a user state virtualization tool
that makes it possible to capture and centralize application settings. With
UE-V Windows and application settings can roam across Microsoft RDS,
VDI and physical desktops using Windows Folder Redirection and
Offline Files.
For example, if a user changes the toolbar in an application this is written
to the registry. UE-V saves this value and restores it when the user logs
on to another system, including desktop computers, laptop computers,
virtual desktop infrastructure (VDI) sessions and Remote Desktop
sessions (RDS).
UE-V and App-V are both part of MDOP so with the same license it is
possible to use both products.
To setup UE-V there are some requirements:
A client is needed on every system that needs to read and save
user settings;
A UE-V Generator which is used to generate custom application
setting templates;


A network location to store data from application settings, default
the home folder will be used.

Installing and configuring the client and generating profiles is beyond
scope of this book but on the Microsoft website there is plenty of
information available that will guide you step-by-step through this
process.

User Profile Disks


User Profile Disks (UPD) is a solution from Microsoft which integrates
directly into RDS as well as VDI environments.
User profile disks centrally store user and application data on a per-user
virtual disk that is dedicated to a users profile that stores changes to the
user data and settings.
When the user logs on, their profile disk is attached to their session and
detached when the user logs off. With this process, there is no copying of
files on logon or logoff. This reduces the need for Roaming Profiles that
uses expensive disk space on RDS servers or VDI desktops.
Setting up User Profile Disks
User Profile Disks require a file share to place the virtual disk with the
users profile and needs an RDS collection.

1. Create a folder and share it with everyone Read access
2. Open the Server Manager and click on Remote Desktop Services
3. Expand Collections and click on the collection which need to be
enabled for UPD
4. In the top right, click on Tasks and click on Edit Properties
5. Click on User Profile Disks and enable the checkbox before Enable
user profile disks
6. Specify the maximum size of the disk
7. Click on Ok

Now that UPD is enabled, the RDS systems in the Resource pool have full
control permission on the share where the UPD files reside.


There are also 3rd party solution to manage user
settings and these offer even more functionality
than UE-V and RDS User Profile Disks. These
tools are out of scope of this book.

PreserveUserIntegrationsOnLogin
When using tools like UE-V and UPD to save the user settings, this can
also include the App-V information like the integration points. This
information is restored at logon prior to publishing.
Since this can lead to conflicts, the App-V client has a built-in cleanup
phase which checks if the App-V information on the client
correspondents with packages on the system. If not, it removes the
information and reapplies them during the publishing phase.


During the cleanup it could be that icons are
removed and restored after a few seconds when the
publishing completes.


When using UE-V or UPD, this cleanup phase could be disabled, because
both solutions apply the user integrations to the system prior to
publishing. To disabled the cleanup phase, App-V has an option since
SP2 Hotfix 4 that is called PreserveUserIntegrationsOnLogin.
Enable PreserveUserIntegrationsOnLogin on the client

1. Open Regedit as administrator
2. Navigate to:
HKEY_LOCAL_MACHINE\Software\Microsoft\AppV\Client\Integration\
3. Create a new DWORD called PreserveUserIntegrationsOnLogin
4. Enter the value 1
5. Restart the App-V Client or the system.

PreserveUserIntegrationsOnLogin is now enabled.


Usage reports
App-V 5.0 contains a reporting feature that provides information about
virtual application package usage, the client operating system and
architecture and the client information. It gathers this information from a
centralized database which is specified during the installation of the App-
V server.
Usage information for applications are even if the user is offline or not
connected to the App-V infrastructure


Reporting is not enabled by default.


Client Setup
The App-V client sends the reporting data at a specific interval or when
the PowerShell command Send-AppvClientReport is executed. After the
reporting server receives the data it sends the data to the reporting
database. When the database receives and processes the client data, the
local reporting cache of the App-V client is emptied unless you configure
it to preserve the cache.
To enable the client to send the usage information to the reporting server,
run the PowerShell command:
Set-AppVClientConfiguration ReportingServerURL
http://servername/reportingsite -ReportingStartTime 30 -ReportingInterval 1 -
ReportingRandomDelay 60

It is also possible to set the values using the App-V Group Policy
extension:
Reporting
To retrieve information from the reporting database and create reports
using App-V 5, Microsoft SQL Server Reporting Services is necessary.
Afterwards, there are 9 sample reports from Microsoft that can be
uploaded to the reporting server to provide reports about App-V
applications, users, and computers, these are:
Total running time by virtual application
List of virtual applications by user
List of execution details for virtual applications by user
List of distinct virtual applications by user
Count of distinct virtual applications by user
Count of all instances of virtual applications by user
Count of all instances of virtual applications by computer
Count of all Instances of virtual application packages
Computers with a specific virtual application

The reports can be downloaded from http://www.microsoft.com/en-
us/download/details.aspx?id=42630

Uploading a Microsoft sample report to SQL Server


Reporting Services
1. Open the SQL Server Reporting Services website
2. Click on Upload File
3. Click on Browse and select the .RDL file downloaded from Microsoft
4. Enter a name for the Report
5. Click on Ok
6. Click on the Report to view its contents

Summary
In this chapter, we looked at the deployment of App-V packages and
Connection Groups.
First, we learned how to choose the right delivery method. We learned
how to deploy using PowerShell, the Full Infrastructure and SCCM.
After the deployment was done, we showed how to modify and upgrade
a package. This is an important step to keep your applications up to date
and correctly configured.
In the next chapter, we will look into backing up and harden the App-V
environment. We also show you how to recover an App-V environment.
Chapter 6 - Backup, Security and
Recovery
You cant anticipate events in the future but you can be prepared when
things might not go as planned. Being prepared means that you build
safety nets so you can revert to a stage where everything works fine.
Does your organization have a process and the tools to ensure that you
can revert to such a stage? Thats great, then you can use this process and
tools for your App-V infrastructure. If not, make sure that you create one
because when failure occurs, you will need it.
In this chapter:
Backing up the server
Secure the App-V environment
Recover an App-V environment

Backing up the server


It is vital that you make backup copies of the App-V files and
configurations on your servers on a regular basis. This will prevent you
from losing valuable data if your servers encounter problems.
When using the Full Infrastructure, the configuration is saved in the App-
V database. For enterprise environments, it is recommended to use the
full version of SQL and not the Express version.
When using the full version of SQL, it offers a Management Plan. This
can be used to backup the App-V database on an interval and perform
maintenance tasks.
Creating a Management Plan in SQL is outside the scope of this book,
conduct your Database Administrator how to setup a Management Plan
within SQL server.

Secure the App-V environment


In todays connected world, with an ever increasing number of threats
and risks, security is an incredibly important topic. Now that the App-V
environment is up and running and applications are virtualized lets find
out how you can securely enable App-V in your organization. Increasing
security in any environment requires looking at all exposure to possible
threats in the environment.
Below is a list of key security configuration options for the App-V
environment.

Operating System
Every App-V component runs on a Windows operating system. General
security hardening should be performed since this component could be a
weakness if not proper secured, patched and hardened. Make sure to keep
current with all software updates since this provides solutions to known
security issues. A system that is up-to-date is difficult for attackers to
exploit vulnerabilities.

SSL/TLS/HTTPS
The Management console and the Publishing server make use of HTTP
and are unsecure by default. So it is best practice to get a certificate and
assign it to the website to achieve higher levels of security. Certificates
are used for securing many types of network communication in an App-V
infrastructure. The certificate name must match the DNS record of the
website.
When using HTTP for streaming packages from the content store this
also can be secured using HTTPS but the consequence is that every
package will be send encrypted over the wire. This has a negative impact
on performance since the CPUs need to decrypt all the content bit by bit.

Firewall
Utilizing a firewall on the server can help reduce the attack surface area.
Windows Firewall with Advanced Security includes a host-based firewall
component that is a protective boundary for the local computer, which
monitors and restricts information that travels between your computer
and its attached networks or the Internet. It provides an important line of
defense against someone who might try to access your computer without
your permission.

In Windows the Firewall with Advanced Security is turned on by default,


with unsolicited inbound network traffic blocked, and all outbound traffic
allowed. You can create rules to permit specific inbound connections if
your computer hosts a service or program that must be able to receive
inbound unsolicited network traffic.
To control outbound network traffic, you can create outbound block rules
that prevent unwanted network traffic from being sent to the network.
Alternatively, you can configure the default outbound behavior to block
all traffic, and then create outbound allow rules that permit only that
traffic that you
Before you install and configure the App-V 5.0 servers, you must specify
a port where each component will be hosted.


The App-V installer does not modify firewall
settings. You must also add the associated firewall
rules to allow incoming requests to access the
specified ports.


All communication between the App-V Publishing Server and App-V
Client is initiated by the App-V Client. The built-in Windows Firewall
requires no additional configuration in order for the client to
communicate in this fashion.

File Security
Data leakage has always been a concern for the Enterprise customers,
packages will be placed in a file repository that must be accessible for
end-user so they can retrieve their applications. These resources need to
be as secure as possible to better protect the data for any possible
leakage.
Although users need access to the packages they are entitled to use, other
packages on the location where the packages reside should be protected
by NTFS permissions by applying the most restrictive permissions.
Since the App-V Management Console associates the right to use an
individual application with an Active Directory group, the same group
can be used to only assign read rights on the package location.

AppLocker
The goal of AppLocker is to improve the security of each computer by
blocking unwanted processes that are not permitted to run. Processes that
do not match the rule set configured are blocked.
Be careful with prohibited processes like AppVSHNotify.exe and
AppVStreamingUX.exe since these are required by App-V and
responsible to send notifications to the Windows Shell. This process runs
under the user context and only runs if there are applications published to
the user.

Management Console
Be careful allowing users to the App-V Management console since it has
no delegation of control, every user that has access to the Management
Console has full control over the whole App-V environment.

Antivirus exclusions
Antivirus provides an important line of defense against someone who
might try to modify your computer without your permission. Especially
App-V is a risk since Windows Defender and other antivirus applications
should be turned off prior to sequencing. This means that is best practice
to scan the installation sources before sequencing and scan the sequencer
after installation. If an applications setup file must be downloaded from
the internet, make sure to download it from a computer with active
antivirus.
There are no recommended antivirus or antimalware exclusions for App-
V 5 by Microsoft.
Although there are no recommendations, there are a few locations that
can be excluded to gain a performance gain:

Component Exclusion

App-V PackageInstallationRoot (default: %programdata%\App-V)


Client

Management %SystemRoot%\system32\inetsrv
Server
%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files
Reporting
Server

Publishing %SystemRoot%\system32\inetsrv
Server
%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files

Content
Share
Windows %SystemDrive%\Pagefile.sys
Server
%WinDir%\System32\spool\
% WinDir %\SoftwareDistribution\Datastore
%WINDIR%\SoftwareDistribution\Datastore\Logs
%WINDIR%\Security\Database
%SYSTEMROOT%\System32\GroupPolicy

SQL Server C:\Program Files\Microsoft SQL


Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup
*.mdf
*.ldf
*.ndf
*.bak
*.trn
*.trc
C:\Program Files\Microsoft SQL
Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn\sqlservr.exe
C:\Program Files\Microsoft SQL
Server\MSRS10_50.MSSQLSERVER\Reporting
Services\ReportServer\bin\ReportingServicesService.exe

PackageStoreAccessControl
Since App-V 5 SP2, the PackageStoreAccessControl is discontinued.
This setting used to lockdown the PackageInstallationRoot (cache
location) to who has not been authorized to access a particular package.
Although it does not protect the user from downloading a package and
use it on another system, the RequirePublishAsAdmin feature could still
prevent user from adding packages unauthorized.

RequirePublishAsAdmin
This setting enables only administrators to publish and unpublish
packages. By default, non-administrators are allowed to publish
applications on the system.
This is great for example, laptop users since this makes it possible for
end users to add their own applications. But from an administrative or
security perspective this might not be desirable. App-V allows an
administrator to disable end users to publish applications on the system.
To enable this feature, and thus disabling publishing by end users, run the
following PowerShell command:
Set-AppvClientConfiguration -RequirePublishAsAdmin $true


In App-V 5, in contrast to version 4, users do not
require authorization for cached applications. This
means that applications that have been streamed
from the server will not require authorization from
the App-V infrastructure before launching.

Disaster Recovery
One thing is for sure, failures occur. High availability can help toward
mitigating the negative impacts of small and simple failures but the most
common data loss scenario is simply a user inadvertently deleting or
overwriting a file and high availability does not cover that.
One of the most-ignored activities in disaster recovery is the need to
ensure that the plan can actually be used. A good disaster recovery plan
should include periodic verification of backup data and failover/failback
tests of the replica system.
The data in an App-V environment resides in two different types of
storages. Data is stored for the App-V infrastructure in the SQL database,
while virtualized applications and user data are housed on separate
storage. Backup both to avoid data loss in the event of a disaster.

Restore the App-V database(s)
1. Log in to a SQL Server on the Delivery Controller.
2. Launch Microsoft SQL Server Management Studio and then connect
to the database engine.
3. Expand the Databases node and navigate to the App-V database
4. Right-click on the database and select Tasks, then click on Restore,
and finally Database.
5. Select the backup set from which you want to restore. Click on Ok
6. After a successful restore operation, you will need to restart each
App-V server.

Summary
In this chapter, you learned what is important for the continuity of your
App-V environment.
We looked at how to backup your App-V environment and the things we
can do to secure the infrastructure. We did this by restricting our users
from access the file repository where the packages reside and using
security features like SSL/TLS and PackageStoreAccessControl.
In the next chapter, we will look into performance and how to improve
this for the App-V environment, maintenance tasks that need to be
carried out weekly, monthly and yearly and how to proper monitor the
environment.

Chapter 7 Performance, Maintenance
and Monitoring
A technical solution is only viable and considered a success if users have
an experience they wish.
So far we have gone through different scenarios of installation,
configuration, deployment as well as backup and security. In this chapter
we will focus on how we can tune our solution to gain better
performance.
Each release of App-V brings the promises of improved stability, better
performance, faster publishing, and so on. Although this might be true in
some scenarios, optimization might be necessary to achieve this.
In this chapter:
Performance guidance
Maintenance
Monitoring

Performance guidance
In the latest releases of App-V, performance became more and more
important and minor improvements have been made in making the
performance better. Especially publishing times in a hosted desktop and
integration with User Profile Management (UPM) solutions had a great
focus.
Some amazing facts:
20,000 clients can target a single publishing server to obtain the
package refreshes;
A single management server can support up to 50 publishing
servers for package metadata refreshes;
A single reporting server can process 500 concurrent/active
connections;
A single reporting server can process a maximum 1500
concurrent connections;
You can support 500.000 clients with:
5 publishing servers
2 reporting servers (requirement: with 4 hours random delay)
1 management servers
1 database
Despite the improvements to performance made in version 5 there still
may be times when it doesnt work as quickly as you might hope.
The most frequent complaint that App-V administrators receive from
users is about applications starting slowly. They certainly do not consider
the fact that, at least for the first time, when you launch a virtualized
application, an entire streaming process takes place.
Performance is closely tied to certain configuration choices made when
selecting (virtual) hardware variables such as the number of CPU cores,
memory speed and storage. But also software variables such as profile
type, mounting packages and tuning. These variables play crucial roles in
the delivery of an uncompromised user experience, system density and
scalability.
How to optimize your App-V environment depends on the type of
workspace that is being used. In a hosted desktop in the datacenter,
storage is more expensive and often a limited amount is available. A fat
client or laptop often has enough local storage and profiles arent
removed at logoff. Both types of workspaces require a different approach
for performance tuning.
Hosted Desktop
A hosted desktop offers a user desktop environment in the datacenter
where users share the underlying hardware. The desktop consists of a
combination of technologies like a hypervisor, broker and profile
virtualization.
In general, there are three forms of hosted desktops:
1. Virtual Desktop Infrastructure (VDI) - Persistent desktop
Changes to the desktop are saved when a user logs off. This is the
most user friendly form of a hosted desktop.
2. Virtual Desktop Infrastructure (VDI) - Non-Persistent desktop
Changes to the desktop are lost when the user logs off and the
desktop is returned to a pool of desktops and is available for other
users.
3. Server Based Computing (SBC)
When using Server Based Computing, there are multiple users
working on the same desktop and changes are lost when logging off.
Challenges with VDI Non-Persistent and SBC are that the modifications
users make to their desktop are lost when they log off. This is due to the
fact that the profile is removed at logoff or the user is redirected to a
different desktop at logon so their settings are not available.
Building a new profile at logon requires time and when the profile is
created the virtual applications arent available before the
synchronization has been run.
UE-V makes it possible to save the modification(s) the user makes to
their desktop and restore those settings when the user logs on. This
makes the logon process quicker and makes it possible to save and
restore the publishing state of the App-V packages for the user. See
chapter 5 for more details about UE-V.
When using VDI, there is a virtual machine in the datacenter for every
user that logs on. These virtual machines are stored on more expensive
storage than storage that is available for desktops and laptops. When
using App-V to deliver the virtual applications to those desktops, the data
of the packages is written to the storage multiple times and thus using
more expensive storage.
Since App-V 5 it is possible to use the Shared Content Store (SCS)
feature. When using SCS, only publishing data is placed on hard disk and
the virtual application is streamed into memory (RAM) over the network.
This save a tremendous amount of storage in the datacenter making it a
must have for every VDI implementation.
The Shared Content Store (SCS) uses the same location where the virtual
applications reside as when not using SCS. You only need to set the SCS
option to true using PowerShell, Group Policy or installation parameter.
When using the Shared Content Store it is advisable that the files of the
virtual application are placed on storage with low latency to the App-V
client because the bits are streamed from the network when the client
needs them.

Enabling Shared Content Store using PowerShell



1. Open PowerShell as administrator
2. Run the command:
Set-AppvClientConfiguration -SharedContentStoreMode $true

The Shared Content Store is now enabled.


Enabling Shared Content Store using the installation


parameters

1. Open CMD as administrator
2. Run the command:
appv_client_setup(_RDS).exe /SHAREDCONTENTSTOREMODE=1 /q

The Shared Content Store is now enabled after the product is installed.

Enabling Shared Content Store using Group Policy
Make sure that the Microsoft Desktop Optimization Pack Group Policy
Administrative Templates are imported.

1. Open the Group Policy editor
2. Navigate to Computer Configuration, Administrative Tools, System,
App-V, Streaming
3. Open Shared Content Store (SCS) Mode
4. Click on Enabled
5. Click on OK

The Shared Content Store is now enabled.


A publishing refresh creates excessive CPU usage.
In a Server Based Computing environment, it is
recommended to limit the publishing refreshes.

Limiting the publishing refreshes


1. Open Regedit
2. Navigate to
HKEY_LOCAL_MACHINE\Software\Microsoft\AppV\Client\Publishing
3. Create the DWORD value MaxConcurrentPublishingrefresh
4. Give the DWORD value the maximum number of concurrent
publishing refreshes.

This setting is active without a reboot.


Speed up the Publishing phase
When using small packages, it generally seems fast, starting rapidly and
responding at speed to whatever you ask it to do.
With large packages that contain integration points, it could take longer
before the package is added, published and mounted. The number of files
and Extension Points affect time-to-publish.
PreserveUserIntegrationsOnLogin and UE-V or other user profile tools
can speed up the publishing phase.
Also, an Application Pool is recycled every 29 hours. So the first request
that reaches IIS after the application pool is recycled will process very
slowly because the application pool is set to work on demand. Recycling
can be disabled by setting the value to 0 in the Advanced Settings of the
Application Pool.

Maintenance
Maintaining the status of the App-V environment is very important to
keep all the systems in prime condition. An App-V environment that is
not available has a high impact on the end-users productivity so keeping
it available is important.

Daily service checks


These are all examples of daily checks that should be made for an App-V
environment:
Check event logs on the Publishing, Reporting and Management
servers for unusual events.
Confirm that backups of the App-V database and the packages
have been made and successfully saved to a secure location.
Monitor disk space to ensure servers wont run out of disk space.
Check whether any services are running correct.
Look into the task manager to view resource usage.
For SQL, use the Activity Monitor to view resource usage.

Weekly activities
Rebuild database table indexes
See if any services need scaling up (more CPU/memory/disk) or
out (more instances) to meet requirements.

Monthly activities
Check for security updates
Review permissions in the App-V Management console. The set
of App-V administrators should be kept to a minimum.

Yearly activities
Restore backups to another test server in order to verify that they
can be restored.

Monitoring
To operate effectively, most organizations rely on IT as a core function.
And so, a process should be in place that can include examining
application logs or viewing performance graphs on servers to help
resolve an issue or prevent an issue that might occur in the environment.
This chapter focuses on which components of App-V to monitor.
There are many monitoring solutions available to automate this. For
example, System Center Operations Manager (SCOM). Operations
Manager provides performance, health and availability monitoring of the
infrastructure, applications and services in the IT environment.
SCOM can be extended with Management Packs, there is also a
Management Pack available for App-V.
This pack includes:
Discovery of the Application Virtualization 5.0 Services:
Management, Publishing, Reporting;
Alerts indicating availability/configuration/security issues that
require administrative intervention;
Collection Rules defined for significant events in ETW logs of
each App-V 5.0 Service;
Verification that dependent services are running;
Notification of security issues involving admin access attempts,
admin added/deleted on App-V 5.0 Management Server.

This can be download from: https://www.microsoft.com/en-
us/download/details.aspx?id=38418

App-V Data Store Growth


The App-V Data Store is a database stored on a Microsoft SQL Server
that contains configuration information, application objects for
publication. In order to plan the Data Store for an App-V
implementation, it needs to be considered that there are several processes
that will cause the Data Store to grow in size. There are many
contributing factors to database size and growth, for example:
Importing an Application
Clients synchronizing to the App-V Publishing server
Monitoring data growth over time lets you see what tables are growing
rapidly and can also help in estimating future growth and disk space
requirements.
Is also can help prevent the system running out of disk space
unexpectedly.

Services
The App-V infrastructure is highly dependent on running Windows
Services. Sometimes these services fail to start or accidentally stop, and
this leads to outages and user productivity losses.
The following services should be monitored that they are running:

Role Service name Display name

Publishing Server W3SVC World Wide Web Publishing


Service

Management W3SVC World Wide Web Publishing


Server Service

Client AppVClient Microsoft App-V Client

SQL Server MSSQLSERVER SQL Server (MSSQLSERVER)

General
Its difficult to define which values are good for the counters in advance;
this usually depends on the size of the infrastructure, the number of
connected users, and so on. A better approach is to record the values
during normal conditions (baselining) and compare the actual values with
the baseline.
Make sure the next performance counters.
Disk activity
Since the App-V clients will read the package contends from the file
repository, it is crucial that the disks where the packages reside has
enough capacity and performance as needed. Also check the
fragmentation level of the non-ssd disks regularly because if a disk is
highly fragmented, it takes the machine longer time to get the package
content and deliver it to the App-V clients.
Disks should be monitored with the following counters:
%Disk Time
Avg. Queue Length

Processor utilization
%Processor Time

Memory usage
Available bytes

Summary
In this chapter, you learned what you can do to improve the performance
of App-V. This is extremely important since it involves the end-user
experience with the product.
We looked at what the Shared Content store is and how to enable it for
the App-V Client. We also saw how to improve publishing performance
and what tasks need to be performed for our App-V environment to keep
it up and running.
Microsoft has done a good job as it has, out of the box, configured to
deliver the best performance, and it makes it a lot easier with the latest
release of Windows Server, but there is always room for improvement.
In the next chapter, we will look into troubleshooting and tools that will
make our life easier.
Chapter 8 - Troubleshooting
Implementing App-V or moving to a new version of App-V can result in
all kinds of subtle issues with your environment. A well designed and
implemented App-V infrastructure can run without disturbances for a
long time, but it is inevitable that you will be faced with unavailability of
the environment from time to time. Converted packages may fail to run
or different error messages pop-up. Dont rush to blame Microsoft
because the real cause of these problems often lies in the configuration of
the environment.
Dont start changing program settings, Windows settings, registry
settings, deleting files, and taking other action without an understanding
of what youre doing. Just as important, dont make lots of changes at
once. Instead, make a single change, see if it fixes the problem, and then
try the next if needed.
The most important step to solve problems is to find out the cause. App-
V offers different options to find the cause of a problem and see the
details.
In this chapter:
Troubleshooting Deployment
Troubleshooting Packages
Tools

Troubleshooting deployment
App-V Event Log
The most common way to start troubleshooting an App-V issue is to use
the Windows Event Log. App-V writes operational events to the event
log that is viewable by using Event Viewer.
In earlier versions of Windows, most information of interest to an
administrator was found in the System and Application logs. Starting
with Windows Vista and later versions of Windows, the Event Viewer
includes many predefined filtered views.
The original, unfiltered System and Application logs can be found under
Windows Logs. The filtered list of App-V with Admin, Operational and
Virtual Applications events can be found under Application and Services
Logs, Microsoft, AppV, Client.
These three event logs display the most common errors, warnings and
informational events.
Opening the App-V Client Event Logs
1. Click Start, click Administrative Tools, and then click Event Viewer.
2. In the navigation pane, expand Applications and Service Logs,
expand Microsoft, expand AppV, expand Client.
3. Click on Admin, Operational or Virtual Applications to display the
events.

Displaying additional App-V Client Event Logs


App-V provides additional event logs for advanced troubleshooting.
When enabling these additional event logs, first determine what scenario
you wish to analyze. For example, Publishing, Streaming or Reporting.
Then the corresponding event log(s) can be enabled.

1. Click Start, click Administrative Tools, and then click Event Viewer.
2. In the navigation pane, expand Applications and Service Logs,
expand Microsoft, expand AppV, expand Client.
3. Click on one of the three App-V event logs
4. Click on View
5. Click on Show Analytic and Debug Logs
The additional event logs are now displayed but they arent enabled.

6. Navigate to the event log that corresponds best with your
troubleshooting scenario.
7. Right click on the event log and select Enable and click on OK to
confirm.
8. At this point in a real troubleshooting situation, you would reproduce
the problem and see if the event log is filled with information.


The Event Logs for the sequencer are under
Microsoft, AppV, Sequencer and contains Admin
and Operational information. The sequencer also
contains Analytic and Debug logs.

Packages not upgrading to a newer version


When publishing a new version of an application, it could be that the
previous version is in use and it cannot be replaced by the new version at
that time.

How to determine if a package is in use


1. Open PowerShell
2. Enter the command: Get-AppVClientPackage name <name of
package>
3. If the package is in use, the parameter InUse is set to true, the
package is in use.


If the package is in use when a new version is available and ready to be
published, the App-V client will add the package to the system and create
a key in the registry with the PackageId and the VersionId.
For user published applications the key will be created under
HKEY_CURRENT_USER\Software\Microsoft\AppV\Client\PendingTasks
named PublishPackage.
For global published applications the key will be created under
HKEY_LOCAL_MACHINE\Software\Microsoft\AppV\Client\PendingTasks
A user published application is replaced at the next logon. A global
published application is replaced at the next reboot. After the new verion
of the package is successfully published, the registry key will be
removed.
Please note that although there are two parameters, UserPending and
GlobalPending, in the PowerShell command Get-AppVClientPackage to
display the current update status, these both do not display the correct
state. The registry will display the correct state.

Disable package integration when publishing fails


Integration points are parts of the virtual environment on the local
system. For example, a shortcut to an application in the virtual
environment. Read more about Integration points.
During publishing of an App-V package, the client integrates these
integration points to the native operating system.
When Publishing fails, it could be an integration point that was
unsuccessfully added to the operating system. The best way to start
troubleshooting Publishing failures is to look in the Event Log. When
you have determined that an Integration Point was the cause of the
Publishing failure, that Integration Point can be disabled. When a
subsystem gets disabled, its extensions will not be integrated.
This guide provides a step-by-step walkthrough that enables you to
disable an integration point.
1. Find the integration point in the Dynamic Configuration file, for
example <Shortcuts Enabled=true>
2. Change the value to False
3. Re-apply the Dynamic Configuration file, either by adding it to the
App-V Management console or by PowerShell by using
Set-AppvClientPackage -name <package name> -
DynamicDeploymentConfiguration <path to Dynamic Configuration file>
For example:
Set-AppvClientPackage -name WinMerge -DynamicDeploymentConfiguration
C:\VirtualApps\WinMerge_2.6.6\WinMerge_2.6.6_DeploymentConfig.xml

Publishing fails when using Dynamic Configuration files


Dynamic Configuration files are great, since they allow adjusting the
virtual application behavior without using the sequencer to change it.
But, since the Dynamic Configuration files are XML files, a mistake is
easily made. Mainly since XML is case sensitive and <Machine> or
<machine> makes a different.
If there is a mistake made in the modification of a Dynamic
Configuration file, it will fail when it is used.
The error that is displayed is in PowerShell is:

The error that is displayed in the Management console is:

The error also is written to the Event Log so more details about the error
can be found there.
For example:
Failed to load provided xml.
DOM Error: 0xC00CEE3B
Reason: The name in the end tag of the element must match the
element type in the start tag.
Line: 395
Column: 25
Offset: 0
This displays where the error is located (line 395) so opening the file in a
text editor with line numbers, like Notepad++, makes it easy to locate the
location where the error is. In this example the end tag of the element
was removed. Often it is a mistake that an element is removed or text is
entered in lower case. Using the Event Viewer, it is easy to trace where
the error is located.
To avoid errors when modifying Dynamic Configuration files, you can
use the freeware application: App-V 5 Configuration Editor (ACE) to
modify the files.

Viewing publishing metadata


The App-V client contacts the Publishing Server to request the packages
and Connection Groups that are entitled to the client system and the
current user. The client does this by opening a website that displays the
packages and Connection Groups in an XML format.
For troubleshooting purposes, it is possible to view the XML website to
determine if there are issues contacting the Publishing Server.
Prior to SP3, it was possible to just browse to the Publishing Server and
view the contents, since SP3 this has changed and you need to specify the
client version and the Windows client version to view the data.
1. Open Windows and Features from the Control Panel and find the
Microsoft Application Virtualization (App-V) Client. In the column
Version, find the current version of the App-V client.
2. Find your current operating system in the table:

Operating System Architecture Operating string string value

Windows 10 64-bit WindowsClient_10_x64

Windows 10 32-bit WindowsClient_10_x86

Windows 8.1 64-bit WindowsClient_6.3_x64

Windows 8.1 32-bit WindowsClient_6.3_x86

Windows 8 64-bit WindowsClient_6.2_x64

Windows 8 32-bit WindowsClient_6.2_x86

Windows Server 2012 R2 64-bit WindowsServer_6.3_x64

Windows Server 2012 R2 32-bit WindowsServer_6.3_x86

Windows Server 2012 64-bit WindowsServer_6.2_x64

Windows Server 2012 32-bit WindowsServer_6.2_x86

Windows 7 64-bit WindowsClient_6.1_x64

Windows 7 32-bit WindowsClient_6.1_x86

Windows Server 2008 R2 64-bit WindowsServer_6.1_x64

Windows Server 2008 R2 32-bit WindowsServer_6.1_x86


3. Enter the correct values in the URL:
http://APPVPUB:9001/?
clientversion=5.0.10066.0&clientos=WindowsClient_6.2_x64

It is also possible to view the packages and Connection Groups that
others are entitled to use by opening the browser in their security context
and open the Publishing Servers webpage.
Running it in the system context displays the Global published packages
and Connection Groups.

Troubleshooting Packages
By default, locally installed applications cannot view the virtual file
system of an App-V package. If it is necessary to view the virtual file
system from an application that is locally installed, there are a few
options.

Repairing an App-V Package


When a package does not function correctly it is not necessary to remove
it and re-add it since a package can be repaired. The user will lose all
changes that have been made for the package. The user then re-launches
the application and the problem is gone.
When repairing a package, the following steps take place:
1. Content in the Copy-on-Write locations is removed;
2. Extension points are removed and then re-applied;
The package is now reverted to the pristine state where it was since it
was added and published to the client.

Repairing an App-V package

1. Open PowerShell as Administrator.
2. Enter the command:

Repair-AppvClientPackage -name *<packagename>*

For example, Repair-AppvClientPackage -name *UltraCompare*


This will repair the complete package, including the extension points and
the user state.
If it is not necessary to repair the whole package, the parameter
UserState or Extensions can be used to only repair a subset of the
package.
For example:
Repair-AppvClientPackage -name *ultra* -Extensions $false
Repair-AppvClientPackage -name *ultra* -UserState $false

Using the command line


By using the command line, it is possible to start a local application
within the virtual environment.
Use the following command to open a Command Prompt in the virtual
environment:
4. First we need to request information about the App-V package and
put this information into a variable.
Open PowerShell and run
$package = Get-AppvClientPackage *PSPad*

Change the name of PSPad to a part of the application that you want
to use.
5. Now that the information is in the variable $package it is possible to
use that information to start a local process.
6. In the same PowerShell window, run
Start-AppvVirtualProcess -AppvClientObject $package cmd

Now that the Command Prompt is opened it is possible to view the
contents of the virtual application by navigation to the installation folder.

Application crashes after it is started


Some applications only work when they are fully loaded into the cache
before they are launched.
When using the Fault Streaming option, where new bits are transferred
into the cache when the package needs them, it does not work well for
these applications.
To get these packages to work, the best option is to use a Feature Block
that contains the application that crashes or to use the option Force
application(s) to be fully downloaded before launching. Both options are
available in the sequencer wizard in the Streaming phase when choosing
Customize.

Tools
Tools make the life of an administrator easier and improve the usability
of the App-V product. Fortunately, there are a lot of (free) tools available
to use. Using the tools directly on a local computer is useful to view and
manage the current configuration that is active on the computer and the
packages that are added.

Microsoft Application Virtualization Server 5.0 Best


Practice Analyzer
The App-V Best Practice Analyzer (BPA) is a diagnostic tool that
verifies configuration settings for a computer running a App-V Server.
Gathers information about a Server and a Microsoft Application
Virtualization 5.0 Management, Publishing, and/or Reporting
service instance installed on that Server;
Determines if the configurations are set according to the
recommended best practices;
Reports on all configurations, indicating settings that differ from
recommendations;
Indicates potential problems in the installed instance of App-V
Server 5.0;
Recommends solutions to potential problems;
Produces an HTML report with all errors and warnings.

The Microsoft Application Virtualization Server 5.0 Best Practice


Analyzer is available from http://www.microsoft.com/en-
us/download/details.aspx?id=38844

AppV_Manage (free)
This is a tool to test and debug your new packages. Especially useful for
people packaging in App-V 5 for performing the initial tests on their
sequenced packages. It is used on an App-V client test machine, and
requires no back-end servers (although a file share where the packages
are stored is typically used). You sequence, copy the package up to the
share, and bounce over to the client to test.
Available from http://www.tmurgent.com

App-V Commander (free)


App-V Commander is a free portable tool to analyze, test and
troubleshoot App-V 5 packages. Its scope is focused on App-V 5
packagers/system administrators and IT consultants. This tool contains
several features like adding/editing local Connection groups, launching
applications directly within packages, quick repairing of packages and
groups, Dynamic Configuration Editor for managing Virtual subsystems
with direct add.

Available on http://www.adminscope.com/downloads/app-v-commander/

GAP-IT (free)
GAP-IT has the ability to provide an administrator insight in the App-V 5
publishing times. These times are reported per individual package which
is useful information for further package optimizations.
Available from http://www.logitblog.com

Login App-V Client Diagnostic and Configuration tool


(ACDC) 2 (free)
ACDC is a is simple yet useful front-end to App-V 5. It provides access
to a variety of App-V 5 client tasks, like launching, repairing or
debugging virtual applications, identifying the overall state of packages
or modifying essential client configuration settings.
Available from http://www.loginconsultants.com

App-V 5 Configuration Editor (ACE) (free)


ACE provides a user interface for editing App-V 5 machine or user
dynamic configuration files without manually modifying the underlying
XML files.
Available from http://virtualengine.co.uk

App-V Scheduler (Free community edition)


The App-V Scheduler makes the deployment and management of App-V
5 packages in your environment easier. It is best suited for environments
where there the App-V 5 full infrastructure or System Center
Configuration Manager is not sufficient.
Available from http://www.appvscheduler.com/


The tools listed in this chapter are by no means an exhaustive list of the
tools that are available for App-V (troubleshooting). It is important
always to be on the lookout for new tools and to experiment with the
various tools that are available.

Summary
This chapter has been all about the many ways you can troubleshoot the
App-V environment. We looked at the Event Log which is the first step
in troubleshooting App-V.
Then we looked at some options the App-V Client offers to troubleshoot
when errors occur and afterwards we looked at some of the tools
available from 3th parties which offer help when troubleshooting issues.
The next chapter will focus on some of the more advanced features of
App-V.
Chapter 9 For the experienced
If youre an advanced user and want to be able to get more out of App-V,
the next chapters are for you.
In this chapter:
PowerShell scripting
Package content
Copy-on-Write excluded extensions
Integration Points
Tokens
Pass-through keys
Dynamic Virtualization

PowerShell Scripting
The App-V components can be completely managed using PowerShell. If
the user account is a standard account, there are some limitations to what
the user can do. Basically, the standard account cannot make any changes
to the system that would affect other users.


Running PowerShell scripts can have very serious
consequences. Who dont have sufficient
knowledge to understand the risks involved in
using PowerShell should not run these commands.

Managing the App-V Management server using PowerShell


The App-V Management server can be configured using PowerShell, this
is useful when you need to, for example, import many package at a
migration or want to add an Active Directory group to many packages.
Here are example commands how the App-V Management server can be
configured. Before you can start using the command, import the
AppVServer module by running:
Import-Module AppVServer

Import or add an App-V package to the Management console:
Import-AppvServerPackage -PackagePath
\server\PackageFolder\Name.appv


Import or add all App-V package in a directory to the Management console:

Get-childitem -recurse -force -include *.appv | ForEach-Object {Import-


AppvServerPackage -PackagePath $_.FullName}


Give an Active Directory group access to an App-V package:

Grant-AppvServerPackage -PackageID <PackageId =packageGuid> -Groups


<DOMAIN\GROUP>


Publish an App-V package in the Management console

Publish-AppvServerPackage -Name *<packagename>*


Remove a App-V package from the Management console:

Remove-AppvServerPackage -name


Assign an Active Directory group to all App-V packages:

Get-AppvServerPackage | ForEach-Object {Grant-


AppvServerPackage -PackageID $_.PackageGuid -Groups
<DOMAIN\GROUP>}


Add a package to a Connection Group

Add-AppvServerConnectionGroupPackage -ConnectionGroupID
<ConnectionGroupId> -Optional -PackageName
WinMerge_2.6.6_EN_V1 UseAnyPackageVersion


Create a new Connection Group

New-AppvServerConnectionGroup -Name SAP and WinMerge



Append a package to the end of a Connection Group package list
First, get the Connecion Group ID by running:
Get-AppvServerConnectionGroup
Then, get the name of the Package that you want to add by running: Get-
AppvServerPackage
Afterwards, run the following command after changing the values:

Add-AppvServerConnectionGroupPackage -ConnectionGroupID
105b1ead-1981-4f34-9d0a-375297a3ab42 -PackageName
CoffeeCup_HTML_Editor_15.1_781


Edit details about the connection group package (optional, etc)

First, get the Connecion Group ID by running:


Get-AppvServerConnectionGroup
Afterwards, run the following command after changing
the values:
Set-AppvServerConnectionGroup -GroupID 105b1ead-1981-4f34-
9d0a-375297a3ab42 -Priority 10


Remove a package from a Connection Group package list
First, get the Connecion Group ID by running:
Get-AppvServerConnectionGroup
Then, get the name of the Package that you want to add by running: Get-
AppvServerPackage
Afterwards, run the following command after changing the values

Remove-AppvServerConnectionGroupPackage -
ConnectionGroupID 105b1ead-1981-4f34-9d0a-375297a3ab42 -
PackageName CoffeeCup_HTML_Editor_15.1_781 -
PackageVersionID 15c8adbd-c4f7-4b35-89c9-12135079136f

Managing the App-V Client using PowerShell


Create a new Connection Group
New-AppvServerConnectionGroup -Name SAP and WinMerge

Adding a Publishing server


Add-AppvPublishingServer -name PUBSRV -URL http://PUBSRV.domain.local:8081/ -
GlobalRefreshEnabled $true -GlobalRefreshOnLogon $true -GlobalRefreshInterval 1 -
GlobalRefreshIntervalUnit hour -UserRefreshEnabled $true -UserRefreshOnLogon
$true -UserRefreshInterval 1 -UserRefreshIntervalUnit hour

Shuts down the virtual environment for the specified

Stop-AppvClientPackage -Name MyPackage


Package content
The .APPV file contains all the files, registry keys and settings captured
during the sequencing process. When saving a package the .APPV file is
the outcome. When opening the file, the following content becomes
visible:

ROOT
The ROOT folder contains all the files captured during sequencing.
In the ROOT folder there is default a subfolder called VFS unless the
PVAD is used. The PVAD creates a folder with the application name. For
more information about PVAD/VFS see the PVAD/VFS chapter.
Scripts
The Scripts folder contains the scripts added during sequencing. See the
chapter about adding scripts during sequencing for more information
how to add and how to use scripts.
[Content_Types].xml
Contains a list of the essential files within the .APPV file using the Open
XML format Content Type. For example:
<Default Extension=ico ContentType=appv/vfs-file />
AppxBlockMap.xml
This file contains a layout of the App-V file to proof the authentication of
the App-V package.
AppxManifest.xml
Contains information that is needed when a package is added, published
and launched. For example, FTA information and shortcuts.
FilesystemMetadata.xml
All the files and directories that are captured during sequencing and
information about them, like the shortname. For example:
<Entry Long=WinMergeU.exe Short=WINMER~1.EXE />
PackageHistory.xml
Contains information about how the package is created, for example
information about the sequencing machine (processor, user, locale, save
mode, etc.).
Registry.dat
The registry keys and their values captured during the sequencing
process.
StreamMap.xml
Contains the list of files for Feature Block 0 and 1.
Feature Block 0 is the Publishing Feature Block, it contains everything
required for to publish the packages such as a portion of files (EXE and
DLL), shortcuts and icons.
Feature Block 1 is created during the Streaming phase in the sequencer
and contains all the application parts that need to be available first when
a user starts the virtual application.

Copy-on-Write
The Package Store contains a pristine copy of the package files that have
been streamed from the publishing server.
The changes and end-user makes to an application are not stored in the
package store in order to preserve the ability to repair the application,
which removes these changes.
Modifications made by the user to the package store are written to two
Copy-on-Write (COW) locations. Depending on how the application is
programmed, it will use the roaming or non-roaming location to store the
modifications.
%AppData%\Microsoft\AppV\Client\VFS
Location for package modifications that are written in roaming
locations.
%LocalAppData%\Microsoft\AppV\Client\VFS
Location for package modifications that are written in non-
roaming locations.
For example, if an application writes to AppData, it is placed in
this folder since this is a location that is not being roamed when
using a roaming profile.
In the non-roaming location there could be folders which contain
an S. The S indicates a restricted location which is being created
when a different, elevated, user makes changes.

Excluded extensions
The App-V client contains a list of excluded file types, which are not
allowed to be written into the virtual environment. In 5.1 the App-V
client does not allow the following file types:
.exe
.dll
.com
.ocx

Integration Points
Each virtual application is isolated from the local system and runs in a
bubble. However, sometimes it is necessary to break out of the bubble
and integrate parts of the virtual environment on the local system. For
example, a shortcut to an application in the virtual environment.
App-V contains manifest and Dynamic Configuration files that contain
extension points.
The current App-V extension points are:
Shortcuts
Shortcuts are the main mechanisms by which a user can launch
an application. The Shortcuts subsystem captures shortcuts that
were created during installation.
File Type Associations
This subsystem allows file extensions to be associated with
applications. For example, if the user double clicks a .DOCX file
the virtual package of Word 2013 will be opened and the
document is displayed.
Shell Extensions
Shell extensions enable end users to right-click on a file and see
options available which use Windows Explorer to send paths and
file names as arguments to App-V executables before they launch.

COM
In charge of integrating COM objects from the virtual application
to the native operating system.
Software Clients
This will include virtual applications to be set as default programs
for certain activities.



Application capabilities
Displays the capabilities of the virtual application to the operating
system. Using this feature, it is possible to set virtual applications
as defaults for file types and protocols.

URL Protocol Handler


Displays the URL protocol handing capability of an application to
native operating system. For example, mailto:
AppPath
This subsystem works like the PATH variable; it contains the
folder where the operating system will check if the user only
types an executable name.
Virtual Application
A list of applications captured during sequencing.

Shell extensions are embedded in the package and detected and added
automatically by the sequencer. It is not possible to add, edit or remove
them in the sequencer, but that is possible by modifying the Dynamic
Configuration files.
Extension Points
Each integration point can contain multiple extension points. An
integration point can be a File Type Association or shortcuts.
Integration point example
In the Dynamic Configuration files, an extension points are easily visible.
They start with the line:
<Extension Category=<name>>
For example: <Extension Category=AppV.Shortcut>

Shell Extensions
Shell Extensions are a great feature since they offer the same
functionality for the end-user as local installed applications. The
following extensions are available:
Context Menu
Adds menu items to the context menu. Load in UltraCompare is a
Context Menu integration example.

Drag-and-drop
Displays options when a user drag-and-drops on the virtual
application.
Property sheet
Add or replaces pages in the properties sheet of the dialog box.
For example, if you package an application that extends the
features of a special mouse. That application can replace the tab
of the Windows Mouse Control panel so it becomes visible.
Infotip
Allows retrieving flags and infotip information for an item and
displaying it inside a popup tooltip upon mouse hover.
Data object
Defines what to do when a file from the virtual environment is
copied to the clipboard.
Drop target
Defines what to do when a file is dropped onto the virtual
application.
Column
Enables creating custom columns in Windows Explorer Details
view and by this, extend sorting and grouping.

Pass-through Keys
Pass-through keys enable an administrator to configure certain keys so
they can only be read from the native registry, bypassing the Package and
COW locations.
This is designed to ensure that a virtual application does not write data in
the virtual registry that is required by a native application for successful
operation or integration.


It is not recommended to modify the pass-through
keys! If it is necessary, only add keys and do not
remove keys.


The pass-through keys are saved in a registry key located in
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\AppV\Subsystem\VirtualReg
The following locations are default included in this key:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentV
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\even
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI
HKEY_LOCAL_MACHINE_CURRENT_USER\SOFTWARE\Microsof
Settings
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\Perflib
HKEY_LOCAL_MACHINE\SOFTWARE\Policies
HKEY_CURRENT_USER\SOFTWARE\Policies
Dynamic Virtualization
Dynamic Virtualization is a great feature that is available since App-V 5
SP2 that makes it possible to automatically make virtual components,
like shell extensions and Active-X controls, available when a local
process like explore or iexplore is started. Dynamic Virtualization is
sometimes called JITV or Just-in-Time Virtualization.
The processes that are specified for Dynamic Virtualization are listed in
ProcessesUsingVirtualComponents. Default explore.exe and iexplore.exe
are added.
Without Dynamic Virtualization, the end-user always has to start the
virtual environment by using, for example, shortcuts. This less user
friendly, especially when using Internet Explorer plug-ins or applications
that integrate in the context menu.
With Dynamic Virtualization, applications can integrate in the context
menu so there is no difference between native and virtual applications.


In the above screenshots, UltraCompare and published it to the system.
In the left screenshot Dynamic Virtualization is turned on (default) so
Load in UltraCompare is integrated in the context menu. In the right
screenshot, Dynamic Virtualization is turned off and the Load in
UltraCompare option is not available anymore.
Although it is not available from the context menu, UltraCompare is still
published and available from the start menu, but the end-user must open
a file by starting the application and open it via File, Open. This is less
user friendly and takes more steps to complete.

Disabling Dynamic Virtualization


Dynamic Virtualization is enabled by default and explore.exe and
iexplore.exe are added to the list of processes. It is possible that there are
issues when using Dynamic Virtualization.
Dynamic Virtualization can be disabled completely or by removing the
process from the list of processes.

Disable Dynamic Virtualization completely

1. Open PowerShell as Administrator and enter the command:

Set-AppvClientConfiguration -EnableDynamicVirtualization $true


Removing processes from Disable Dynamic Virtualization

The easiest way to remove a process so it wont be used by Dynamic
Virtualization is to edit the registry.
2. Open regedit and navigate to
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\AppV\Client\Virtualizatio
3. Remove the process from the key ProcessesUsingVirtualComponents

Summary
In this chapter, we did a deep dive into some of the more advanced
features of App-V. You learned where the .AppV file exists of and how
integration points work.
We looked at Dynamic Virtualization and how this can improve the user
experience.
Thats it, we have come to the end of a long App-V journey. In this book
weve described what Application Virtualization is and the components
that App-V exists of. Then we installed and configured the product and
virtualized applications. Afterwards we made these available using the
Full Infrastructure, PowerShell or System Center Configuration Manager.
In the last chapters we improved our environment by implementing
backups, security and performance. In the Troubleshooting chapter we
looked at the features available when things go wrong and in the chapter
was all about advanced features of App-V.
The next chapters will focus on where you can even be learning more
about App-V.
Learn more
The following websites are a great additional resource to read more about
App-V. They have been collected here for ease of reference.

Microsoft App-V 5 product site


http://technet.microsoft.com/en-us/library/jj713487.aspx

Microsoft Wiki: Virtualization Portal


http://social.technet.microsoft.com/wiki/contents/articles/705.wiki-
virtualization-portal.aspx

App-V 5 Supported Configurations
https://technet.microsoft.com/en-us/library/jj713426.aspx

App-V 5 Capacity Planning


https://technet.microsoft.com/en-us/library/dn595131.aspx

Server Performance Tuning Guidelines for Microsoft Windows


Server 2012 R2
https://msdn.microsoft.com/library/windows/hardware/dn529133.aspx

Best Practices for Sequencing


http://go.microsoft.com/fwlink/?LinkId=269953

App-V Team Blog


http://blogs.technet.com/b/appv/
Jargon buster

.NET Framework Technology that supports building and running the


next generation of applications and XML Web
services.

ActiveX A method to embed native Windows technology


into the web browser. The way web technologies
such as Flash, Silverlight, Java and PDF plugins
would typically get integrated into the browser

Add-on Component that can be added to extend an


application.

AppLocker Provides blocking unwanted processes that are not


permitted to run.

Asset Part of the virtual application package.

AutoLoad Option to specify how new packages will be


loaded by App-V 5.0 on a specific system

Background A component that facilitates prioritized, throttled,


Intelligent Transfer and asynchronous transfer of files between
Service (BITS) machines using idle network bandwidth.

Browser Helper Plugin for Microsofts Internet Explorer to provide


Object (BHO) additional functionality. Most commonly used to
build third-party search toolbars, etc.

Bubble Virtual application environment which has, by


default,.no visibility of one another virtual
application environment

Cache Location which holds a copy of the virtual


application packages

Certificate A file that is certifying the authenticity of


something.

Clean state Desired state of a system. Often the starting point


for sequencing.
Click-to-Run A streaming and virtualization technology that is
used to install Office products.

Collection Group of Computer or Users in SCCM which can


be used to assign a deployment to.

COM Responsible for communication channels and


interactions between applications

COM+ COM+ is an extension of Component Object


Model (COM). COM is building block approach
for developing application programs.

Connection Group Enables virtual applications to interact with other


applications, middleware or plug-ins that have
been virtualized in separate virtual application
packages by sharing a common virtual
environment.

Conversion Transition of a package from the 4.x format to the


5.x format.

Copy-on-Write Location where package modifications made by


(CoW) the end user are stored.

DDoS Attack on a computer system or network causing a


loss of service to users

Dynamic File that contains custom changes to the default


Deployment behavior of the package.
Configuration File

Distributed A set of Microsoft concepts and program


Component Object interfaces in which client program object s can
Model (DCOM) request services from server program objects on
other computers in a network

Distribution Point A file share where SCCM places the content for
distribution to clients.

ExecutionPolicy PowerShell security feature to configure which


types of scripts are allowed to run.

Extension Point Enables the application to integrate with the local


operating system.
Extensible Markup Langue to set up text in a format which is both
Language (XML) human-readable and machine-readable.

Fault Streaming Option to only transfers new bits into the cache
when the package needs them.

Feature Block Specification of which part of the package needs


to be streamed to the client first before the
application is launched.

Globally Unique Unique reference number used as an identifier.


Identifier (GUID)

Graphical User Interface that allows users to interact through


Interface (GUI) graphical icons and visual indicators.

Group Policy Can be used to extend the use of registry-based


Administrative policy settings for new programs and components.
Templates

Group Policy Provides the centralized management and


Object (GPO) configuration of operating systems, applications,
and users settings in an Active Directory
environment

HTML5 A core technology markup language of the


Internet used for structuring and presenting
content for the World Wide Web. It is the fifth
revision of the HTML standard.

Hypertext Transfer Default transport protocol for communication with


Protocol (HTTP) a web server.

In-place upgrade Transition to a new version by overwriting the


existing version.

Integration Point Parts of the virtual environment on the local


system. For example, a shortcut to an application
in the virtual environment.

Internet Information Microsofts version of a web server.


Services (IIS)

IsOptional Parameter to set the package as optional (true) or


mandatory (false).
Management Plan A set of tasks within Microsoft SQL Server to
allow maintenance.

Manifest File that contains information that is needed when


a package is added, published and launched. For
example, File Type Association information and
shortcuts

MigrationMode Option that needs to be enabled when running


both the App-V 4 and App-V 5 clients.

Office 365 Brand name used by Microsoft for a group of


software plus services subscriptions that provides
productivity software and related services.

Office Deployment Tool to customize and manage Office 2013 Click-


Tool (ODT). to-Run deployments. This tool will help
administrators to manage installations sources,
product/language combinations, and dynamic
deployment configuration options for Office
Click-to-Run.

Package Folder with several files that contain all the files
for the virtual applications.

Package Accelerator File which contains all the settings that were
changed from the default.

Package A file that contains all the information how a


Accelerators package is build using the sequencer used for
speeding up the packaging process

Plug-in Component that can be added to extend an


application.

PowerShell A task automation and configuration management


framework from Microsoft, consisting of a
command-line shell and associated scripting
language built on the .NET Framework.

PowerShell module Add-on to PowerShell that extends the PowerShell


capabilities with more commands

Prerequisite Software that is required in advance.


Primary Virtual Directory where to install the application in
Application previous App-V versions. Still available for legacy
Directory (PVAD) purposes.

Process ID (PID). Number assigned to a process which runs on a


system.

Publishing Making the package available for the end user or


system.

Remote Desktop Workplace in the datacenter which is shared with


Services (RDS) multiple users at the same time.

Remote Procedure A protocol that a program can use to request a


Call (RPC) service from a program located in another
computer in a network without having to
understand network details.

Reporting Feature that provides information about virtual


application package usage, the client operating
system and architecture and the client information.

Repository Location where files are stored.

RunVirtual Allows the start of a virtual environment when the


locally installed application/executable is started.

Script Code to modify the configuration on a computer.

Secure Sockets Protocol that enables secure transmission of


Layer (SSL) information over the World Wide Web
(Computers)

Security ID (SID) Unique identifier for a user or computer to control


access to various resources like Files, Registry
keys, network shares etc.

Sequencing Converting an application to a virtual application


package.

Server Message Default transport protocol for transferring bits


Block (SMB), over the network.

Shared Content Shared Content Store offers the ability to reduce


Store (SCS) the size of the footprint since only disk space is
taken by the publishing data.
Side-by-Side Option that needs to be enabled when running
both the App-V 4 and App-V 5 clients.

Silverlight Framework for writing and running rich Internet


applications, with features and purposes similar to
those of Adobe Flash.

Streaming Transport the virtual application package to the


client.

System Center Software product for managing large groups of


Configuration computers.
Manager (SCCM).

System Center Software product that provides performance,


Operations Manager health and availability monitoring of the
(SCOM) infrastructure, applications and services in the IT
environment

Transport Layer Predecessor of Secure Sockets Layer (SSL), to


Security (TLS) provide communication security over the Internet.

Unpublishing Not making a virtual application visible to the user


or system.

User Account Security feature in Windows for limiting


Control (UAC) application software to standard user privileges
until an administrator authorizes an increase or
elevation.

User Experience User state virtualization tool that makes it possible


Virtualization (UE- to capture and centralize application settings.
V)

User Profile Disks Software product to centrally store user and


(UPD) application data on a per-user virtual disk that is
dedicated to a users profile that stores changes to
the user data and settings.

User Profile Tools that make it possible to capture and


Management centralize application settings.
(UPM)

User State Software product that can allows user data and
Virtualization settings to be transferred to a centralized location
in the data center, eliminating the limitations of
local storage and allow users to access their data
and settings from any desktop.

Virtual Desktop Workplace in the datacenter which is not shared


Infrastructure (VDI) with multiple users at the same time.

Virtual SCCMs translation for Connections Groups


Environments

Virtual File System Location where all the files and folders are that are
(VFS) captured during sequencing.

Windows Defender Software product that helps protect against


malware.

XML schema Description of a type of XML document

Data Store A database stored on a Microsoft SQL Server that


contains configuration information, application
objects for publication

Repair Reverting the package to the pristine state where it


was since it was added and published to the client.

App-V Best Diagnostic tool that verifies configuration settings


Practice Analyzer for a computer running a App-V Server
(BPA)

Tokens Variables that can be used in scripts.

Pass-through key Keys that can only be read from the native
registry, bypassing the Package and COW
locations.

Dynamic Make virtual components, like shell extensions


Virtualization and Active-X controls, available when a local
process like explore or iexplore is started.

Just-in-Time Make virtual components, like shell extensions


Virtualization (JIT- and Active-X controls, available when a local
V) process like explore or iexplore is started

Excluded extension A file type which is not allowed to be written into


the virtual environment.
Index
.AppV file 20
.APPVT 21
.CAB 21
.MSI 21
Active Directory
Active Directory group 61, 151
ADM Template 62
Authorization 73
Group Policy Administrative Templates 62
Group Policy editor 63, 152
Group Policy objects (GPOs) 62
Organizational Unit 63
Override local settings 64
Security group filtering 62
Adding a script to the package 111
Advanced Group Policy Management 16
AntiVirus exclusions 182
Antivirus Software 91
Applications
Disable 149
Enable 149
Run locally 167
Stop all running 157
AppLocker 182
App-V 15
App-V 5.1 client configuration options 65
App-V for RDS 17
AppxManifest 149
AppxManifest.xml 81
Architecture 23
cache 74
Catalog 76
Client installation 44
Client settings using PowerShell 64
Coexistence with App-V 4.6 54
COM+ 85
Configuring client settings using Group Policy 62
Configuring client settings using the registry 70
Configuring Remote Desktop client settings 71
Configuring the App-V client using Group Policy 62
Device drivers 84
EnablePackageScripts 69
EnablePublishingRefreshUI 69
File repository 23
File System
Import a directory into the virtual file system 83
Graphical User Interface application 50
Installation 33
Installing the App-V sequencer 53
Installing the App-V server components 42
Installing the client silently 46
Limitations 84
Management Console access 61
Microsoft Application Virtualization Desktop Client 19
Microsoft Application Virtualization Management Server 17
Microsoft Application Virtualization Publishing Server 18
Microsoft Application Virtualization Remote Desktop Services (RDS) Client 20
Microsoft Application Virtualization Sequencer 20
Optimization 87
PackageInstallationRoot 73
Planning 33
Post installation steps 60
Prerequisites 35
Publishing refresh progress bar 69
RDS Client Access License 17
Registry
Import and Export 82
Registry locations 75
REGISTRY.DAT 74
Server installation 42
Shared Content Store Mode 72
SharedContentStoreMode 72
Side-by-Side or Migration Mode 53
Upgrade 53
Upgrading clients from 4.x 58
Upgrading from 4.x 53
Upgrading from 5.0 55
Upgrading server components to 5.1 55
Upgrading the client 57
Upgrading the sequencer 57
Whats new 24, 28
App-V 4
Package quality 137
AppX 20
AppxManifest 30
Autoload 90
Backup
Server backup 179
Best Practices 92
BitLocker 16
Bookmarks 29
Browser Helper Objects 30
Enable Browser Helper Objects 100
Change History 98
Click-to-Run 139
COM objects 100
Connection Group
Add 158
Connection Groups 122
Active Directory access 123
Adding 124
Creating 122, 124
Enabling 124
IsOptional See Optional Packages
Managing 132
Optional Packages 127
Priority 133
System Center Configuration Manager 131
Copy-on-Write 219
DeploymentConfig.XML 110
Disaster Recovery 185
Dynamic Configuration files 110
Applying 157
Dynamic Virtualization 227
Disable 228
Removing processes 229
Editing package configuration
Packages 149
Event Log 197
Additional 198
App-V Client 198
Excluded extensions 221
Export 150
Extension Points 223
Fault Streaming 89
Feature Block 0 88
Feature Block 1 88
File repository 37
File Type Associations 101, 150
Full download 88
HTML5 17, 28
HTTPS 180
Import 150
Installation Report 95
Integration 166
appvpid 167
Benefits 167
Integration Points 221
Application capabilities 222
AppPath 223
COM 222
Example 223
File Type Associations 221
Shell Extensions 221
Shortcuts 221
Software Clients 222
URL Protocol Handler 223
Virtual Application 223
isolation 100
IsOptional See Optional Packages
JavaScript 28
JITV See Dynamic Virtualization
Just-in-Time Virtualization See Dynamic Virtualization
Maintenance 187
Daily service checks 192
Monthly activities 193
Weekly activities 193
Yearly activities 193
MDOP 16
Merge 99
Microsoft Office 139
Deploying 139
Microsoft SQL Server 17
CreateStoredProcs.sql 41
CreateTables.sql 41
Creating the App-V database using SQL scripts 38
Creating the database 37
database.sql 40
Database.sql 40, 41
Extract the SQL scripts 39
InsertVersionInfo.sql 41
Management Plan 179
Modify the Management database SQL scripts 40
Permissions.sql 40, 41
Reporting Services 176
Restore 185
SQL database 22
UpdateTables.sql 41
Version support 37
Microsoft update 91
Monitoring 187
Data Store Growth 194
Disk activity 195
General 195
Memory usage 196
Processor utilization 196
Services 195
System Center Operations Manager 194
MSI 163
Benefits 164
Deployment using 163
Wrapper 164
named objects 99
Notification area 29
Office 2013
Convert 139
Converting 141
Download 139
Group Policy 141
Install 139
Office Deployment Tool (ODT) 141
officec2rclient.exe 140
Plug-ins 144
Project 2013 140
Publishing 141
Requirements 141
Scripting 141
Office 365 140
Subscription 141
Open Packaging Conventions (OPC) 20
OSD files 136
Override Local Directory 99
Overwrite 150
Package Accelerators 117
Creating 117
Using 119
Package GUID 98
Package Name 109
PackageId 168
Packages
Conflicts 133
Content 218
AppxBlockMap 219
AppxManifest 219
FilesystemMetadata 219
PackageHistory 219
Registry 219
StreamMap 219
Conversion
OSDsToIncludeInPackage 136
Testing 137
Converting
Debug logs 139
Converting 135, 137
Custom configuration 151
Deploying an update 164
Deployment
Full Infrastructure 146
Deployment 146
Edit 149
Global published 133
GUID 164
Mount 156
Remove 157
Remove all 157
Repair 205
Revert 157
Search 149
Unpublishing 133
Updating 133
Pass-through Keys 225
Peformance
Optimize 188
Performance 187
Capacity Planning 231
Improvements 188
Performance guidance 187
Speed up the Publishing phase 192
Tuning Guidelines 231
Permissions.sql 40
PowerShell 169
Adding a Publishing Server 153
Adding packages 155
App-V client commands 65
App-V PowerShell module 64
Commands 214, 217
Configure the App-V client options 64
Deployment 155
ExecutionPolicy 64
Import all packages 156
Importing the App-V client module 64
Scripting 214
Publishing 165
Global 165
User 165
UserSID 166
Publishing metadata 204
Publishing Server Settings 152
PVAD 85
EnablePVADControl 86
Re-enabling the PVAD from the command line 86
Re-enabling the PVAD from the registry 86
Refresh Interval 148
Replace 30
Reporting 175
Client Setup 175
Retrieve information 176
Sample reports 176
Requirements
App-V 5.1 client and sequencer 34
Hardware requirements 33
RequirePublishAsAdmin 31
RTSP(S) 26
SCOM See System Center Operations Manager
Scripts 111
AddPackage 112
EnablePackageScripts 114
ExitProcess 113
Multiple scripts 114
PublishPackage 112, 113
RemovePackage 112
ScriptRunner 114
Single event trigger 31, 114
StartProcess 113
StartVirtualEnvironment 113
TerminateVirtualEnvironment 113
Triggers 112
UnpublishPackage 113
SCS See Shared Content Store
Security 179
File Security 182
Firewall 180
Hardening 180
PackageStoreAccessControl 184
RequirePublishAsAdmin 184
Sequencer
Template 121
Workstation Configuration 91
Sequencing
Add-ons 105
Best Practices 231
How to sequence a plugin 107
How to sequence an add-on 105
Plug-ins 105
Silently 104
Unattended sequencing 103
Server Based Computing (SBC) 189
Shared Content Store
Enabling
Group Policy 191
Installation 190
PowerShell 190
Shared Content Store 189
Shell Extensions 224
Column 225
Context Menu 224
Data object 225
Drag-and-drop 224
Drop target 225
Infotip 225
Property sheet 225
Shortcuts 101
Add, Edit and Remove 149
Edit Location 102, 151
Remove 102
Silverlight 17, 28
Software Assurance 16
SSL 180
Synchronization 148
Default value 148
System Center Configuration Manager 158
Adding App-V applications 159
Advertisements 159
Application Management 161
Available 162
Collection 162
Delay the deployment 162
Deploying App-V applications 161
Deployment using 158
Distribution Point 162
Download and execute 159
Integration 159
Limitations 159
Required 162
Streaming delivery 159
System Center Operations Manager 193
Management Pack 194
Target OS 96
TLS 180
Tokens 116
Tools 207
ACDC 2 210
ACE 211
App-V Commander 209
App-V Scheduler 212
AppV_Manage 208
Best Practice Analyzer 208
GAP-IT 210
Troubleshooting 197
Event Log 197
Fault Streaming 207
Integration 201
InUse 201
Packages 205
Publishing fails 202
User Profile Management 187
User State Virtualization 170
Benefits 171
PreserveUserIntegrationsOnLogin 174
User Experience Virtualization (UE-V) 171, 189
User Profile Disks
Setting up 172
User Profile Disks 171
UserConfig.XML 110
Version GUID 98
VersionId 168
VFS 85
Write Access 100
Virtual applications
Creating 92
Virtual Desktop Infrastructure (VDI) 188
Virtual Registry 99
Virtual Services 99
Windows 10 28
Windows Defender 91
Windows Search 91
Appendix A List of tokens
The following table outlines a list of tokens that are available:

Token Value

AccountPictures C:\Users\<username>\AppData\Roam

Administrative Tools C:\Users\<username>\AppData\Roam


Menu\Programs\Administrative Tools

AppData C:\Users\<username>\AppData\Roam

Application Shortcuts C:\Users\<username>\AppData\Local

Cache C:\Users\<username>\AppData\Local
Files

CD Burning C:\Users\<username>\AppData\Local

Common Administrative Tools C:\ProgramData\Microsoft\Windows\

Common AppData C:\ProgramData

Common Desktop C:\Users\Public\Desktop

Common Documents C:\Users\Public\Documents

Common Programs C:\ProgramData\Microsoft\Windows\

Common Start Menu C:\ProgramData\Microsoft\Windows\

Common Startup C:\ProgramData\Microsoft\Windows\

Common Templates C:\ProgramData\Microsoft\Windows\


CommonDownloads C:\Users\Public\Downloads

CommonMusic C:\Users\Public\Music

CommonPictures C:\Users\Public\Pictures

CommonRingtones C:\ProgramData\Microsoft\Windows\

CommonVideo C:\Users\Public\Videos

Contacts C:\Users\<username>\Contacts

Cookies C:\Users\<username>\AppData\Roam

CredentialManager C:\Users\<username>\AppData\Roam

CryptoKeys C:\Users\<username>\AppData\Roam

Desktop C:\Users\<username>\Desktop

Device Metadata Store C:\ProgramData\Microsoft\Windows\

DocumentsLibrary C:\Users\
<username>\AppData\Roaming\Micr
ms

Downloads C:\Users\<username>\Downloads

DpapiKeys C:\Users\<username>\AppData\Roam

Favorites C:\Users\<username>\Favorites

Fonts C:\windows\Fonts

GameTasks C:\Users\<username>\AppData\Local

History C:\Users\<username>\AppData\Local
ImplicitAppShortcuts C:\Users\<username>\AppData\Roam
Launch\User Pinned\ImplicitAppShor

Libraries C:\Users\<username>\AppData\Roam

Links C:\Users\<username>\Links

Local AppData C:\Users\<username>\AppData\Local

LocalAppDataLow C:\Users\<username>\AppData\Local

MusicLibrary C:\Users\
<username>\AppData\Roaming\Micr

My Music C:\Users\<username>\Music

My Pictures C:\Users\<username>\Pictures

My Video C:\Users\<username>\Videos

NetHood C:\Users\<username>\AppData\Roam

Personal C:\Users\<username>\Documents

PicturesLibrary C:\Users\
<username>\AppData\Roaming\Micr

Podcast Library C:\Users\


<username>\AppData\Roaming\Micr
ms

Podcasts C:\Users\<username>\Podcasts

PrintHood C:\Users\<username>\AppData\Roam

Profile C:\Users\<username>

ProgramFiles C:\Program Files


ProgramFilesCommon C:\Program Files\Common Files

ProgramFilesCommonX64 C:\Program Files\Common Files

ProgramFilesCommonX86 C:\Program Files (x86)\Common File

ProgramFilesX64 C:\Program Files

ProgramFilesX86 C:\Program Files (x86)

Programs C:\Users\<username>\AppData\Roam
Menu\Programs

Public C:\Users\Public

PublicAccountPictures C:\Users\Public\AccountPictures

PublicGameTasks C:\ProgramData\Microsoft\Windows\

PublicLibraries C:\Users\Public\Libraries

Quick Launch C:\Users\<username>\AppData\Roam


Launch

Recent C:\Users\<username>\AppData\Roam

RecordedTVLibrary C:\Users\Public\Libraries\RecordedTV

ResourceDir C:\windows\resources

Ringtones C:\Users\<username>\AppData\Local

Roamed Tile Images C:\Users\<username>\AppData\Local

Roaming Tiles C:\Users\<username>\AppData\Local

SavedGames C:\Users\<username>\Saved Games


Searches C:\Users\<username>\Searches

SendTo C:\Users\<username>\AppData\Roam

Start Menu C:\Users\<username>\AppData\Roam

Startup C:\Users\<username>\AppData\Roam
Menu\Programs\Startup

System C:\windows\system32

SystemCertificates C:\Users\<username>\AppData\Roam

SystemX86 C:\windows\SysWOW64

Templates C:\Users\<username>\AppData\Roam

User Pinned C:\Users\<username>\AppData\Roam


Launch\User Pinned

UserProfiles C:\Users

VideosLibrary C:\Users\
<username>\AppData\Roaming\Micr

Windows C:\windows

Custom Token Custom Token Expansion

AppVAllUsersDir C:\Users\All Users

AppVComputerName <USERNAME>-LT02

AppVCurrentUserSID S-1-5-21-124525095-708259637-154

AppVEnvironmentVariableCommonProgramFiles %commonprogramfiles%

AppVEnvironmentVariableProgramFiles %ProgramFiles%
AppVPackageDrive C:

AppVPackageRoot C:\AppInstallFolder

AppVSystem32Catroot C:\windows\system32\catroot

AppVSystem32Catroot2 C:\windows\system32\catroot2

AppVSystem32DriversEtc C:\windows\system32\drivers\etc

AppVSystem32Driverstore C:\windows\system32\driverstore

AppVSystem32Logfiles C:\windows\system32\logfiles

AppVSystem32Spool C:\windows\system32\spool


Now that youve read the book
Was it useful?
Did it teach you what you wanted to learn?
Was there room for improvement?

Let us know at http://www.packagingsupport.nl

S-ar putea să vă placă și