<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Aaron Parker &#187; Virtualisation</title>
	<atom:link href="http://blog.stealthpuppy.com/category/virtualisation/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.stealthpuppy.com</link>
	<description>on application delivery with application virtualization, server-based computing, desktop virtualization and more</description>
	<lastBuildDate>Fri, 18 May 2012 14:08:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Migrating packages from App-V 4.x to App-V 5.0</title>
		<link>http://blog.stealthpuppy.com/virtualisation/migrating-packages-from-app-v-4-x-to-app-v-5-0/</link>
		<comments>http://blog.stealthpuppy.com/virtualisation/migrating-packages-from-app-v-4-x-to-app-v-5-0/#comments</comments>
		<pubDate>Fri, 06 Apr 2012 17:50:26 +0000</pubDate>
		<dc:creator>Aaron Parker</dc:creator>
				<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[App-V]]></category>

		<guid isPermaLink="false">http://blog.stealthpuppy.com/?p=2696</guid>
		<description><![CDATA[With the App-V 5.0 beta having been sprung upon us, it&#8217;s time to starting talking about it. Here&#8217;s how to automate the migration of packages from the old 4.x format to the new App-V 5.0 format. To perform a migration &#8230; <a href="http://blog.stealthpuppy.com/virtualisation/migrating-packages-from-app-v-4-x-to-app-v-5-0/">Continue reading <span class="meta-nav">&#8594;</span></a><p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/migrating-packages-from-app-v-4-x-to-app-v-5-0/">Migrating packages from App-V 4.x to App-V 5.0</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-2178" title="AppV46SequencerNew.png" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/03/AppV46SequencerNew.png" alt="" width="128" height="123" />With the <a href="http://www.microsoft.com/getappv5">App-V 5.0 beta</a> having <a href="http://windowsteamblog.com/windows/b/business/archive/2012/04/04/introducing-ue-v-and-app-v-5-0.aspx">been sprung upon us</a>, it&#8217;s time to starting talking about it. Here&#8217;s how to automate the migration of packages from the old 4.x format to the new App-V 5.0 format.</p>
<p>To perform a migration of packages, I&#8217;ve setup a Windows 7 virtual machine for hosting the App-V 5.0 Sequencer. This virtual machine is configured in exactly the same way that I&#8217;ve been configuring Windows for sequencing with App-V 4.x with the exception of a Q drive as this is no longer needed. For more information on how I recommend configuring a virtual machine, see this article: <a href="http://blog.stealthpuppy.com/virtualisation/delivering-office-with-app-v-sequencer-recommendations/">Delivering Office with App-V – Sequencer Recommendations &amp; Best Practices</a>.</p>
<p>Installing the App-V 5.0 Sequencer is very straight-forward process. Start the Sequencer setup from <em>appv_sequencer_setup.exe</em>:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="Sequencer Setup" src="http://blog.stealthpuppy.com/wp-content/uploads/2012/04/Screen-Shot-2012-04-06-at-13.03.06.png" alt="Sequencer Setup" width="660" height="461" border="0" /></p>
<p>You&#8217;ll need to accept the license agreement and joining the Customer Experience Improvement Program is not optional during the beta. Once the Sequencer is installed, two PowerShell modules are available – AppVPkgConverter and AppVSequencer. AppVPkgConverter is used for converting legacy packages to the new format.</p>
<p>To see the new modules, import the AppVPkgConverter module and list the available commands in that module, run the following commands from a PowerShell prompt:</p>
<pre class="brush: powershell; title: ; notranslate">Get-Module -ListAvailable
Import-Module AppVPkgConverter
Get-Command -Module AppVPkgConverter</pre>
<p>Which looks like this:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="Import AppVPkgConverter" src="http://blog.stealthpuppy.com/wp-content/uploads/2012/04/Screen-Shot-2012-04-06-at-13.40.15.png" alt="Import AppVPkgConverter" width="660" height="323" border="0" /></p>
<p>The AppVPkgConverter module has two commands – <em>ConvertFrom-LegacyAppvPackage</em> and <em>Test-LegacyAppVPackage</em>.</p>
<p>In my test environment, I have a number of legacy packages that I&#8217;m going to convert. I have 22 packages, totalling 4.5Gb:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="Packages" src="http://blog.stealthpuppy.com/wp-content/uploads/2012/04/Packages.png" alt="Packages" width="660" height="551" border="0" /></p>
<p>To test these packages before conversion, I can run the following command against a legacy package:</p>
<pre class="brush: powershell; title: ; notranslate">Test-LegacyAppvPackage &lt;path to legacy package&gt;</pre>
<p>One of my packages results in a warning when running Test-LegacyAppvPackage against it, in this case an issue that won&#8217;t prevent conversion:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="Screen Shot 2012-04-06 at 13.16.27" src="http://blog.stealthpuppy.com/wp-content/uploads/2012/04/Screen-Shot-2012-04-06-at-13.16.271.png" alt="Screen Shot 2012-04-06 at 13.16.27" width="660" height="273" border="0" /></p>
<p>To test all of my packages and convert those without errors (but include those with warnings), I can use the following example code:</p>
<pre class="brush: powershell; title: ; notranslate">$Source = &quot;Y:\Packages&quot;
$Dest = &quot;Y:\Packages.v5&quot;
Get-ChildItem -Path $Source | Test-LegacyAppvPackage | Where-Object {$_.Errors.Count -eq 0 } | ConvertFrom-LegacyAppvPackage -Target $Dest</pre>
<p>This will result in the packages being converted into the new format in the destination folder. In this example, the conversion process took a little over an hour.</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Screen Shot 2012-04-06 at 18.05.25" src="http://blog.stealthpuppy.com/wp-content/uploads/2012/04/Screen-Shot-2012-04-06-at-18.05.25.png" alt="Screen Shot 2012-04-06 at 18.05.25" width="660" height="408" border="0" /></p>
<p>To make this a little cleaner I&#8217;ve also added some code to move the converted packages into their own folder, so that each folder contains the APPV, MSI and XML files for a single package. Here&#8217;s the full code listing:</p>
<pre class="brush: powershell; title: ; notranslate">## Convert a folder of legacy App-V packages to v5 format

# Source and destination folders
$Source = &quot;Y:\Packages&quot;
$Dest = &quot;Y:\Packages.v5&quot;

# Test legacy packages and convert those without errors to the new format
Get-ChildItem -Path $Source | Test-LegacyAppvPackage | Where-Object {$_.Errors.Count -eq 0 } | ConvertFrom-LegacyAppvPackage -Target $Dest

# Move packages and related files to a sub-folder per-package
$Packages = Get-ChildItem -Path $Dest -Filter &quot;*.appv*&quot;
foreach ($Package in $Packages) {
	$Name = $Package.Name.substring(0,($Package.Name.length - 5))
	$PackageItems = Get-ChildItem -Path $Dest -Filter &quot;$Name*&quot;
	New-Item -Path $Dest\$Name -Type Directory
	For ($n=0; $n -le $PackageItems.Count -1; $n++) { Move-Item $PackageItems[$n].FullName $Dest\$Name }
}
</pre>
<p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/migrating-packages-from-app-v-4-x-to-app-v-5-0/">Migrating packages from App-V 4.x to App-V 5.0</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stealthpuppy.com/virtualisation/migrating-packages-from-app-v-4-x-to-app-v-5-0/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Configuring Hyper-V Virtual Networks with PowerShell</title>
		<link>http://blog.stealthpuppy.com/virtualisation/configuring-hyper-v-virtual-networks-with-powershell/</link>
		<comments>http://blog.stealthpuppy.com/virtualisation/configuring-hyper-v-virtual-networks-with-powershell/#comments</comments>
		<pubDate>Fri, 16 Mar 2012 17:11:18 +0000</pubDate>
		<dc:creator>Aaron Parker</dc:creator>
				<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[Hyper-V]]></category>

		<guid isPermaLink="false">http://blog.stealthpuppy.com/?p=2671</guid>
		<description><![CDATA[I&#8217;ve been configuring a Windows Server 2008 R2 Hyper-V deployment in the lab via MDT to a couple of ProLiant DL380 G5&#8242;s. I&#8217;ve been keeping the deployment as simple as possible, so there&#8217;s no SCVMM integrated at this point and as &#8230; <a href="http://blog.stealthpuppy.com/virtualisation/configuring-hyper-v-virtual-networks-with-powershell/">Continue reading <span class="meta-nav">&#8594;</span></a><p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/configuring-hyper-v-virtual-networks-with-powershell/">Configuring Hyper-V Virtual Networks with PowerShell</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been configuring a Windows Server 2008 R2 Hyper-V deployment in the lab via MDT to a couple of ProLiant DL380 G5&#8242;s. I&#8217;ve been keeping the deployment as simple as possible, so there&#8217;s no SCVMM integrated at this point and as such I&#8217;ve need to configure the Hyper-V networking once the OS is deployed to the machine. Naturally, I don&#8217;t want to do that manually.</p>
<p>I&#8217;ve taken the opportunity write something in PowerShell that can perform the configuration via the MDT task sequence. To do that I&#8217;ve had to resort to the <a title="PowerShell Management Library for Hyper-V" href="http://pshyperv.codeplex.com/">PowerShell Management Library for Hyper-V</a>. A special thanks to <a href="https://twitter.com/#!/JeffWouters">Jeff Wouters</a> for pointing me in the right direction with a couple of the Hyper-V specific commands.</p>
<p>An odd occurrence when deploying Windows Server to these boxes is that the adapter names often change between each deployment. So what might be <em>HP NC373i Multifunction Gigabit Server Adapter #13</em> today becomes <em>HP NC373i Multifunction Gigabit Server Adapter #14</em> when I next re-deploy Windows to that box.</p>
<p><img class="alignnone size-full wp-image-2676" title="Hyper-V Virtual Networks" src="http://blog.stealthpuppy.com/wp-content/uploads/2012/03/HyperVVirtualNetworks.png" alt="Hyper-V Virtual Networks" width="660" height="324" /></p>
<p>Because the <em>New-VMExternalSwitch</em> and <em>Remove-VMSwitchNic</em> commandlets to used configure the virtual networks require the adapter description, I&#8217;ve had to come up with a way to grab the description based on some that remains static &#8211; the MAC address. List below is a script that contains a list of MAC addresses (you could improve on this by keeping the list in a file) for each target MAC address in each server.</p>
<p>It&#8217;s just a simple list, so if I add another server, I just add the new server&#8217;s MAC address to the list. The script returns the description of the adapter with that MAC address and then uses that to configure the new virtual network. Enjoy.</p>
<pre class="brush: powershell; title: ; notranslate">## Configures a Hyper-V external virtual network based on a supplied MAC address

## Variables ##
# Path to the PowerShell Management Library for Hyper-V
$HyperVLibrary = &quot;$env:ProgramFiles\modules\HyperV&quot;

# Virtual switch name
$SwitchName = &quot;External&quot;

# List of MAC addresses for the adapter in each server to be bound to a virtual switch
# HV1=00:1C:C4:D8:36:BA; HV2=00:19:BB:C9:63:04;
$MACAddressList = &quot;00:1C:C4:D8:36:BA&quot;, &quot;00:19:BB:C9:63:04&quot;

# If the PowerShell Management Library for Hyper-V exists, we're good to go
If (Test-Path $HyperVLibrary) {

    # Match a MAC address to a local adapter and return the adapter description
    $Adapters = get-wmiobject -query &quot;Select * From Win32_NetworkAdapterConfiguration&quot;
    For ($n=0; $n -le $MACAddressList.Count -1; $n++) {
        For ($i=0; $i -le $Adapters.Count -1; $i++) {
            If ($MACAddressList[$n] -eq $Adapters[$i].MACAddress) {
                $AdapterDecription = $Adapters[$i].Description
            }
        }
    }

    # Configure Hyper-V networking with the supplied MAC Address
    If ($AdapterDecription) {

        # Import the PowerShell Management Library for Hyper-V
	    Import-Module $HyperVLibrary

        # Create the Hyper-V network and remove the option 'Allow management operating system to share this network adapter'
        New-VMExternalSwitch -VirtualSwitchName $SwitchName -ExternalEthernet $AdapterDecription -force
        Remove-VMSwitchNic -Name $SwitchName -Force
    }
    Else {
        Write-Warning &quot;Unable to match a local adapter from the list of supplied MAC addresses.&quot;
    }
}
Else {
    Write-Warning &quot;'$HyperVLibrary' doesn't exist. Unable to continue without the PowerShell Management Library for Hyper-V.&quot;
}
</pre>
<p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/configuring-hyper-v-virtual-networks-with-powershell/">Configuring Hyper-V Virtual Networks with PowerShell</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stealthpuppy.com/virtualisation/configuring-hyper-v-virtual-networks-with-powershell/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Client Side Performance Testing coming to Login VSI</title>
		<link>http://blog.stealthpuppy.com/virtualisation/client-side-performance-testing-coming-to-login-vsi/</link>
		<comments>http://blog.stealthpuppy.com/virtualisation/client-side-performance-testing-coming-to-login-vsi/#comments</comments>
		<pubDate>Thu, 15 Mar 2012 10:48:50 +0000</pubDate>
		<dc:creator>Aaron Parker</dc:creator>
				<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[Login VSI]]></category>
		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://blog.stealthpuppy.com/?p=2664</guid>
		<description><![CDATA[I was invited to sit in on a preview of the new Client Side Performance Testing module for the Login VSI testing suite. The session was led by Mark Plettenberg, the lead developer of Login VSI. This new module looks &#8230; <a href="http://blog.stealthpuppy.com/virtualisation/client-side-performance-testing-coming-to-login-vsi/">Continue reading <span class="meta-nav">&#8594;</span></a><p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/client-side-performance-testing-coming-to-login-vsi/">Client Side Performance Testing coming to Login VSI</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-2665" title="Login VSI" src="http://blog.stealthpuppy.com/wp-content/uploads/2012/03/loginvsiheader.png" alt="Login VSI" width="186" height="35" />I was invited to sit in on a preview of the new Client Side Performance Testing module for <a href="http://www.loginvsi.com/en/product-overview">the Login VSI testing suite</a>. The session was led by <a href="https://twitter.com/#!/markplettenberg">Mark Plettenberg</a>, the lead developer of Login VSI. This new module looks very interesting because it will allow us to objectively measure and analyse the performance of remoting protocols such as Teradici PCoIP, Microsoft RDP, Citrix ICA/HDX and Quest EOP.</p>
<h1>What is Login VSI?</h1>
<p>If you&#8217;re not familiar with <a href="http://www.loginvsi.com/en/product-overview">Login VSI</a>, it&#8217;s essentially the gold standard in vendor independent testing suite for measuring the performance and scalability of desktop virtualization evironments (hosted virtual desktop and session-based desktops).</p>
<p>Login VSI was developed to solve the problem of sizing an environment correctly. Login VSI allows you to test and compare different hardware and software configurations in your environment. The results of those tests will ensure that you can scale your infrastructure confidently as well as understand the impact of changes to your environment.</p>
<p><img class="alignleft size-full wp-image-2666" title="Login VSI Archtecture" src="http://blog.stealthpuppy.com/wp-content/uploads/2012/03/LoginVSIArchtecture.png" alt="Login VSI Archtecture" width="660" height="408" /></p>
<h1>Client Side Performance Testing</h1>
<p><a href="http://loginconsultants.com/">Login Consultants</a> have been working to extend the testing of desktop virtualization environments to the client with the ability to test performance of remoting protocols. This is important because it gives us a full end-to-end picture of the user experience in desktop virtualization environments. Remoting protocols can now be tested for network characteristics like bandwidth and latency and the effects on the performance on the protocol.</p>
<p><img class="alignleft size-full wp-image-2667" title="Login VSI Overview" src="http://blog.stealthpuppy.com/wp-content/uploads/2012/03/LoginVSIClideOverview.png" alt="Login VSI Overview" width="660" height="472" /></p>
<p>The client-side measure launcher can now be used to perform these tests:</p>
<ul>
<li>Character response &#8211; what&#8217;s the response time from pressing a key on the keyboard to that character being displayed on screen</li>
<li>Desktop filling text &#8211; how long does it take to copy text from the local client clipboard and paste that text into a remote application</li>
<li>Mouse click feedback &#8211; how long does it take to register the a mouse click and show that change to the user</li>
<li>Image quality and loading times &#8211; how long does it take for an image to load and what is the resulting quality. This is very interesting because Login VSI can objectively measure the client-side image quality against the original lossless image</li>
</ul>
<h1>Scenarios</h1>
<p>With very little between the performance of the most common remoting protocols on the LAN, there are a number of scenarios that will make for interesting tests in your environment, including:</p>
<ul>
<li>Testing access from branch offices across the WAN</li>
<li>Branch access can also be tested using WAN simulator such as WANem</li>
<li>Check response time &#8211; what is the real world response time for your typical work loads?</li>
<li>Testing without caching enabled on the client for realistic results. Disabling caching enables you to test the raw performance of the remoting protocol</li>
</ul>
<h1>Additional Points</h1>
<p>This is the first release of the Client Side Performance Testing module, so there&#8217;s a few things to consider:</p>
<ul>
<li>Linux clients aren&#8217;t yet available &#8211; the client-side module is Windows only</li>
<li>This first version is aimed at typical office and line-of-business applications. Video and audio testing is planned for the next version and will be able to test audio and video sync</li>
<li>A (beta?) release is planned within 2 weeks</li>
<li>This module will be included in the Login VSI license</li>
</ul>
<p>For more info on the Client Side Performance Testing module keep an eye on the <a href="http://www.loginvsi.com/">Login VSI web site</a>.</p>
<p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/client-side-performance-testing-coming-to-login-vsi/">Client Side Performance Testing coming to Login VSI</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stealthpuppy.com/virtualisation/client-side-performance-testing-coming-to-login-vsi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Delivering Office with App-V – Sequencer Recommendations &amp; Best Practices</title>
		<link>http://blog.stealthpuppy.com/virtualisation/delivering-office-with-app-v-sequencer-recommendations/</link>
		<comments>http://blog.stealthpuppy.com/virtualisation/delivering-office-with-app-v-sequencer-recommendations/#comments</comments>
		<pubDate>Mon, 05 Mar 2012 15:00:14 +0000</pubDate>
		<dc:creator>Aaron Parker</dc:creator>
				<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[App-V]]></category>
		<category><![CDATA[Office]]></category>

		<guid isPermaLink="false">http://blog.stealthpuppy.com/?p=2629</guid>
		<description><![CDATA[Having had to travel to Australia and the US recently, I&#8217;ve not had that much time to work on an upcoming white paper, but I have been posting some of the early versions of the chapters. So here&#8217;s another in &#8230; <a href="http://blog.stealthpuppy.com/virtualisation/delivering-office-with-app-v-sequencer-recommendations/">Continue reading <span class="meta-nav">&#8594;</span></a><p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/delivering-office-with-app-v-sequencer-recommendations/">Delivering Office with App-V – Sequencer Recommendations &#038; Best Practices</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></description>
			<content:encoded><![CDATA[<p>Having had to travel to Australia and the US recently, I&#8217;ve not had that much time to work on an upcoming white paper, but I have been posting some of the early versions of the chapters. So here&#8217;s another in that series while I work on getting the paper finished.</p>
<p>Creation of successful App-V packages requires building on a solid base – that base is the machine used to perform sequencing. This section details recommendations for creating the perfect sequencing machine. Follow these recommendations for the best chance at creating clean, successful App-V packages.</p>
<h1>Obtain background information<strong><br />
</strong></h1>
<p>Microsoft has made available a number of documents as introductions to App-V and the sequencing of applications.</p>
<ul>
<li>Review the product documentation that was included together with App-V. This includes the following documents:
<ul>
<li><a href="http://download.microsoft.com/download/F/7/8/F784A197-73BE-48FF-83DA-4102C05A6D44/App-V/App-V%204.6%20SP1%20Trial%20Guide.docx">Microsoft Application Virtualization Version 4.6 SP1 Trial Guide</a></li>
<li><a href="http://technet.microsoft.com/library/cc843820.aspx">How to Install the Application Virtualization Sequencer</a></li>
<li><a title="App-V 4.6 Service Pack 1 Sequencing Guide" href="http://download.microsoft.com/download/F/7/8/F784A197-73BE-48FF-83DA-4102C05A6D44/App-V/App-V%204.6%20Service%20Pack%201%20Sequencing%20Guide.docx">App-V 4.6 Service Pack 1 Sequencing Guide</a></li>
</ul>
</li>
<li>Review the &#8220;Best practices to use for sequencing in Microsoft App-V &#8221; article. For more information, click the following article number to view the article in the Microsoft Knowledge Base: <a href="http://support.microsoft.com/kb/932137">932137</a> (http://support.microsoft.com/kb/932137/)</li>
<li>Install the Office suites and applications to become familiar with the functionality of the program. Additionally understand the deployment requirements for Office</li>
</ul>
<h1>Do&#8217;s and Don&#8217;ts<strong><br />
</strong></h1>
<p>Don&#8217;t make the sequencing machine an exact copy of your Standard Operating Environment (SOE) or add the machine to your domain. That is, do not create a sequencing machine directly from your SOE; instead create a new environment that closely matches your SOE. There are several reasons for this:</p>
<ul>
<li>Your SOE most likely has many pre-requisites or applications installed that may interfere with sequencing, such as security agents and anti-virus</li>
<li>Changes to your SOE may break virtual applications – if your SOE has a DLL required by a virtual application, that DLL wouldn&#8217;t be captured in the virtual application package. In the event of the SOE changing and the DLL being removed or the version changing, any virtual application package that doesn&#8217;t include that DLL may now not work</li>
<li>Domain computers may have services, process or scheduled tasks that will interfere with sequencing or may cause files or registry settings to be inadvertently captured – changes made by a process that starts during sequencing will be captured in the package</li>
<li>Domain computers may have policies applied that may be inadvertently captured in the package, causing issues with virtual applications or subsequent changes to those policies to be ignored</li>
</ul>
<p>Based on my own experiences and those of others that I&#8217;ve spoken to, the most successful App-V packages are created on vanilla installations of Windows.</p>
<h2>Don&#8217;ts</h2>
<ul>
<li>Don&#8217;t add the sequencing VM to the domain, unless sequencing an application that requires it</li>
<li>Don&#8217;t use an exact copy of your SOE</li>
<li>Don&#8217;t install anti-virus applications or other security agents</li>
<li>If possible, don&#8217;t access the Internet directly from the sequencing VM</li>
</ul>
<h2>Do&#8217;s</h2>
<ul>
<li>Do leave Windows in workgroup mode the majority of applications</li>
<li>Do use the same versions of components used in your SOE</li>
<li>Do choose carefully which of those components should be installed in the sequencing VM</li>
<li>Do scan the VM with the Microsoft Windows Malicious Software Removal Tool; optionally mount the VM&#8217;s virtual disk on your host machine and scan it with the anti-virus application on the host</li>
<li>Do create a snapshot of the sequencing VM in a clean state</li>
<li>Do patch the sequencing VM each month</li>
</ul>
<h1>Hardware</h1>
<p>Always use a virtual machine to host the sequencing machine – a virtual machine provides snapshots to allow you to capture a clean image of the sequencing VM and then rollback to that clean snapshot after sequencing an application.When taking a snapshot, ensure that the virtual machine is shutdown – do not leave the Sequencer running when taking a snapshot. Leaving the VM running puts you at risk of creating multiple packages with the same GUID. Every App-V package requires a unique GUID.</p>
<p>If you are using a local PC for sequencing, a second hard drive to host the VMs is recommended so that the sequencing process does not affect the host machine.Virtual machine software or hypervisors available for free include:</p>
<ul>
<li>Microsoft <a href="http://www.microsoft.com/download/en/details.aspx?id=3702">Windows Virtual PC</a> (Virtual PC does not support 64-bit guests)</li>
<li>Microsoft <a href="http://www.microsoft.com/download/en/details.aspx?id=20196">Hyper-V</a>, available as either a stand-alone product or as a component of Windows Server 2008 R2 SP1</li>
<li>VMware <a href="http://www.vmware.com/products/player/">Player</a> (note that Player does not support snapshots)</li>
<li>VMware <a href="http://www.vmware.com/products/vsphere-hypervisor/">vSphere Hypervisor</a></li>
<li>Oracle <a href="https://www.virtualbox.org/">VirtualBox</a></li>
<li>Citrix <a href="http://www.citrix.com/xenserver">XenServer</a></li>
</ul>
<p>Create a new virtual machine with the following virtual hardware:</p>
<ul>
<li>1 x vCPU – the Sequencer is still only single threaded and additional CPUs will make little difference</li>
<li>A minimum of 1 GB RAM – Windows XP may require less</li>
<li>Add NICs, a sound card, USB hubs, COM &amp; LPT ports as required</li>
<li>2 x vDisks – use fixed size disks if you have the space. Fixed size disks will offer better IO performance. Additionally the App-V 4.6 SP1 Sequencer can automatically create a Q: drive if none already exists; however a second vDisk is a better approach.</li>
</ul>
<p><img class="alignleft" style="margin-right: 10px;" src="http://blog.stealthpuppy.com/wp-content/uploads/2012/02/021412_1854_DeliveringO1.png" alt="" width="48" height="48" align="left" />If no secondary partition exists, the Sequencer setup will create a substituted drive letter for the virtual drive. A known issue exists where this configuration can cause an issue with new and upgraded packages because the Sequencer resolves the full path instead of the substituted drive letter.</p>
<p>This issue looks to be fixed with <a href="http://support.microsoft.com/kb/2571168">Hotfix 3 for the 4.6 SP1 Sequencer</a>; however it is still recommended that you create a second vDisk, rather than let setup create the drive for you.</p>
<h1>Windows<strong><br />
</strong></h1>
<p>Windows XP Professional or Windows 7 Enterprise editions are recommended for client OS deployments. If you are sequencing for both Windows XP/7 and Windows Server, sequence on the lowest common denominator (Windows XP in this example). If issues arise with testing a package on a different operating system, create a new version of the package for that OS.To create a clean Windows VM for sequencing, follow these steps:</p>
<ul>
<li>Install Windows via the ISO, or better still, create an unattended deployment using the <a href="http://technet.microsoft.com/en-us/solutionaccelerators/dd407791">Microsoft Deployment Toolkit</a> or your software deployment tool of choice, but keep the Windows deployment as vanilla as possible. Use the same Windows version and service pack level as your App-V client machines. This may mean creating multiple sequencing VMs. If you are deploying to both x86 and x64 clients, sequence on an x86 Windows machine, re-sequence the application on 64-bit Windows if required
<ul>
<li>Service Pack deployment is recommended via a slipstreamed Windows ISO (that is the ISO with the latest service pack integrated into it)</li>
</ul>
</li>
<li>Install the hypervisor tools or additions to install drivers and services required by the hypervisor to support the VM correctly</li>
<li>Enable Windows Firewall including the File and Printer Sharing rule to prevent remote PCs from connecting to the virtual machine</li>
<li>Active Windows inside the VM. A KMS will be make this simple; however if you are using a MAK key provided by your TechNet or MSDN subscription, this article is recommended reading: <a href="http://blog.stealthpuppy.com/general/managing-product-activation-with-a-technet-subscription-and-msdn-too/">Managing product activation with a TechNet subscription</a></li>
<li>Disable System Restore on Windows XP or System Protection on Windows 7</li>
<li>Disable Windows Defender on Windows 7 (or disable the service)</li>
<li>If deploying Windows 7, leave the following Optional Components enabled:
<ul>
<li>Windows Search</li>
<li>XPS Services</li>
<li>XPS Viewer</li>
</ul>
</li>
<li>If deploying Windows XP, remove the following Windows Components:
<ul>
<li>MSN Explorer</li>
<li>Internet Gateway Device Discovery and Control Client</li>
<li>Windows Messenger</li>
<li>Additionally it&#8217;s recommended to remove the Adobe Flash Player that comes with Windows XP: <a href="http://kb2.adobe.com/cps/141/tn_14157.html">http://kb2.adobe.com/cps/141/tn_14157.html</a></li>
</ul>
</li>
<li>If deploying Windows XP or Windows Server 2003, install the following updates from the Microsoft Download Centre: <a href="http://microsoft.com/downloads">http://microsoft.com/downloads</a>
<ul>
<li>XML Paper Specification Essentials Pack</li>
<li>Windows Search 4.0 (available via Windows Update)</li>
<li>Windows Media Player 11 (available via Windows Update)</li>
<li>Update for Root Certificates (available via Windows Update)</li>
</ul>
</li>
<li>Install the latest version of Internet Explorer for the target operating system – if you would prefer to match the IE version of your SOE, then stick with that version. Set the home page to <em>about:tabs</em>, this will ensure that if Internet Explorer is started during sequencing it won&#8217;t attempt to connect to the Internet</li>
<li>Install or enable the Microsoft .NET Framework – install the most recent version of the .NET Framework deployed in your environment. Note that .NET Framework 4.0 comes with all previous versions and .NET Framework 3.5 SP1 come with all its previous versions (and so on)</li>
<li>Install the Visual C++ Redistributables – 2005, 2008 and 2010 redistributables are recommended. Multiple versions of each redistributable may be required depending on application requirements. It is recommended to install these in order of release</li>
<li>Enable Microsoft Update</li>
<li>Update Windows with the latest updates – High Priority, Critical and Important updates should be installed at a minimum
<ul>
<li>Do not install Microsoft Silverlight – this important for Microsoft Lync or if you intend to sequence Silverlight</li>
<li>Windows Update may need to be run multiple times to ensure all updates have been detected and installed</li>
</ul>
</li>
<li>Configure the following services (some services are not available on Windows XP):</li>
</ul>
<table style="border-collapse: collapse;" border="0">
<tbody valign="top">
<tr>
<td><strong>Service</strong></td>
<td><strong>State</strong></td>
</tr>
<tr>
<td>Diagnostic Policy Service</td>
<td>Disabled</td>
</tr>
<tr>
<td>Offline Files</td>
<td>Disabled</td>
</tr>
<tr>
<td>Security Center</td>
<td>Disabled</td>
</tr>
<tr>
<td>Windows Defender</td>
<td>Disabled</td>
</tr>
<tr>
<td>Windows Search</td>
<td>Manual</td>
</tr>
<tr>
<td>Windows Update</td>
<td>Manual</td>
</tr>
</tbody>
</table>
<ul>
<li>At a minimum, run the following built in applications so that they make changes to the local profile and remove first-run dialogs:
<ul>
<li>Control Panel</li>
<li>Internet Explorer including the Internet Options Control Panel applet
<ul>
<li>Start Internet Explorer a couple of times</li>
<li>Set the home page to <em>about:tabs</em> so that if IE is launched during sequencing, it will not connect to the Internet</li>
</ul>
</li>
<li>Windows Media Player</li>
<li>Notepad</li>
<li>WordPad</li>
</ul>
</li>
<li>Restart the VM several times and log back on to ensure all first-run dialogs have been acknowledged or do not appear</li>
</ul>
<p>Additional pre-requisites should only be installed when required by an application. For example, if Office is a pre-requisite of another application (such as SAP products or a plug-in) only install Office when sequencing that application.</p>
<p><img class="alignleft" style="margin-right: 10px;" src="http://blog.stealthpuppy.com/wp-content/uploads/2012/02/021412_1854_DeliveringO2.png" alt="" width="48" height="48" align="left" />At this point you will have a VM that can be used as a sequencing environment as well as an App-V client. It is highly recommended that you create two VMs based on this environment so that you have a second VM to perform testing of packages to confirm that the sequenced applications work at runtime.</p>
<h1>Sequencer</h1>
<p>Office 2010 is only supported with the 4.5 SP2 and 4.6 SP1 version of the Sequencer. Office 2007 and Office 2003 can be sequenced with earlier versions. Where possible it is recommended to use the latest Sequencer – this often requires the matching version of the client to be deployed as well (although the App-V 4.6 SP1 Sequencer is backwardly compatible with the App-V 4.6 client).</p>
<p>Install the Sequencer into the VM along with the most recent hotfix rollup. At the time of publishing of this document the most recent versions of the Sequencer are:</p>
<ul>
<li>App-V 4.6 Service Pack 1 with Hotfix Rollup 3: <a href="http://support.microsoft.com/kb/2571168">http://support.microsoft.com/kb/2571168</a></li>
<li>App-V 4.5 Service Pack 2: <a href="http://support.microsoft.com/kb/980847">http://support.microsoft.com/kb/980847</a></li>
</ul>
<h1>Application Install Source</h1>
<p>Installing applications from a copy of the setup files located on a local disk inside the VM is recommended. Installation of the application from setup files located on a network share may cause files from that location to be captured during sequencing. Create a local folder inside the VM where application setup files will be copied to before sequencing. For example, use C:\Packages or C:\Source.</p>
<p>To ensure successful sequencing, it is not recommended to run setup applications directly from the networkEnsure that the folder is then added as an exclusion in your sequencing projects – often application setups may write log or temporary files to the same folder.</p>
<h1>Snapshots</h1>
<p>Once Windows has been configured, shutdown the VM – never take a snapshot of the virtual machine with the App-V Sequencer running. Each App-V package must have a unique GUID and snapshots with the Sequencer running are often a source of duplicate GUIDs. Additionally a VM in a shutdown state will take less room on disk for a snapshot because the VM&#8217;s RAM won&#8217;t be included in the snapshot.</p>
<p>Periodically rollback the VM to this snapshot to install the latest updates from Windows Update, then re-create the snapshot.</p>
<h1>Sequencer Template</h1>
<p>The App-V 4.6 SP1 Sequencer supports templates which will allow you to configure project options including exclusions, enabling Windows Update during sequencing and enabling compression when saving the package. Package templates can be used by multiple sequencing engineers or across multiple Office packages to ensure consistency.</p>
<h1>Package Options<strong><br />
</strong></h1>
<p>A number of options can be set in a sequencer template that may be required for an Office package:</p>
<ul>
<li>Allow Microsoft Update to run during monitoring – enable updating of an Office package via Windows Update</li>
<li>Allow all named objects and COM objects to interact with the local system – this enabled LOCAL_INTERACTION_ALLOWED in the OSD file. This will save you from having to set this option manually after sequencing. If you are creating an Office package that will co-exist with other Office packages or locally installed Office, do not enable this option</li>
<li>Compress Package – Reduce the size of your Office package with compression. Recommended for all Office packages.</li>
</ul>
<h1>Exclusions</h1>
<p><strong></strong>The table below lists the recommended exclusions to add when sequencing Office applications.</p>
<table border="0">
<tbody valign="top">
<tr>
<td><strong>Path</strong></td>
<td><strong>Description</strong></td>
</tr>
<tr>
<td>
<p style="font-size: small;">%CSIDL_COMMON_APPDATA%\Microsoft\RAC</p>
</td>
<td>
<p style="font-size: small;">Microsoft Reliability Analysis Component.</p>
</td>
</tr>
<tr>
<td>
<p style="font-size: small;">%CSIDL_PROFILE%\Lync Recordings</p>
</td>
<td>
<p style="font-size: small;">Microsoft Lync saved recordings folder. Just like documents, we don&#8217;t want these being saved into the virtual environment</p>
</td>
</tr>
<tr>
<td>
<p style="font-size: small;">%CSIDL_PROGRAM_FILES%\MSECACHE</p>
</td>
<td>
<p style="font-size: small;">Outlook Connector cache. Reduce the package size by excluding cached installers</p>
</td>
</tr>
<tr>
<td>
<p style="font-size: small;">%CSIDL_PROGRAM_FILESS%\OCSetup</p>
</td>
<td>
<p style="font-size: small;">Lync/Communicator cached setup files. Reduce the package size by excluding cached installers</p>
</td>
</tr>
<tr>
<td>
<p style="font-size: small;">%CSIDL_WINDOWS%\Installer</p>
</td>
<td>
<p style="font-size: small;">Windows Installer cache. Reduce the package size by excluding cached installers</p>
</td>
</tr>
<tr>
<td>
<p style="font-size: small;">%CSIDL_WINDOWS%\SoftwareDistribution</p>
</td>
<td>
<p style="font-size: small;">Windows Update. Ensure that these files are not cached to prevent breaking future updates to the package</p>
</td>
</tr>
<tr>
<td>
<p style="font-size: small;">%SFT_MNT%\Config.msi</p>
</td>
<td>
<p style="font-size: small;">Windows Installer rollback files. Reduce the package size by excluding cached installers</p>
</td>
</tr>
<tr>
<td>
<p style="font-size: small;">%SFT_MNT%\MSOCACHE</p>
</td>
<td>
<p style="font-size: small;">Microsoft Office installer cache. Reduce the package size by excluding cached installers</p>
</td>
</tr>
<tr>
<td>
<p style="font-size: small;">C:\MSOCACHE</p>
</td>
<td>
<p style="font-size: small;">Microsoft Office installer cache. Reduce the package size by excluding cached installers</p>
</td>
</tr>
<tr>
<td>
<p style="font-size: small;">&lt;Source Folder&gt; (e.g. C:\Packages)</p>
</td>
<td>
<p style="font-size: small;">A local folder that contains Office setup. Ensure that any changed files are not captured</p>
</td>
</tr>
<tr>
<td>
<p style="font-size: small;">Q:\Config.msi</p>
</td>
<td>
<p style="font-size: small;">Windows Installer rollback files. Reduce the package size by excluding cached installers</p>
</td>
</tr>
<tr>
<td>
<p style="font-size: small;">Q:\MSOCACHE</p>
</td>
<td>
<p style="font-size: small;">Microsoft Office installer cache. Reduce the package size by excluding cached installers</p>
</td>
</tr>
<tr>
<td>
<p style="font-size: small;">\REGISTRY\MACHINE\Software\Policies</p>
</td>
<td>
<p style="font-size: small;">Machine-level Group Policies. Ensure that Group Policy can deliver Office policies post deployment</p>
</td>
</tr>
<tr>
<td>
<p style="font-size: small;">\REGISTRY\USER\%SFT_SID%\Software\Microsoft\Tracing</p>
</td>
<td>
<p style="font-size: small;">Microsoft Tracing settings</p>
</td>
</tr>
<tr>
<td>
<p style="font-size: small;">\REGISTRY\USER\%SFT_SID%\Software\Microsoft\Windows\CurrentVersion\Internet Settings</p>
</td>
<td>
<p style="font-size: small;">User-level proxy server and other browser settings. Ensure that proxy settings aren&#8217;t cached in the package</p>
</td>
</tr>
<tr>
<td>
<p style="font-size: small;">\REGISTRY\USER\%SFT_SID%\Software\Microsoft\Internet Explorer</p>
</td>
<td>
<p style="font-size: small;">Internet Explorer settings. Ensure Internet Explorer settings aren&#8217;t cached in the package</p>
</td>
</tr>
<tr>
<td>
<p style="font-size: small;">\REGISTRY\USER\%SFT_SID%\Policies</p>
</td>
<td>
<p style="font-size: small;">User level Group Policies. Ensure that Group Policy can deliver Office policies post deployment</p>
</td>
</tr>
</tbody>
</table>
<h1>Using the Sequencer Template</h1>
<p>To create a sequencer template, open the Sequencer and choose Tools / Options to set the package options and exclusions. Then choose File / Save As Template to save the file to disk. Save the template to a file and open in a text editor such as Notepad. The new template will have a number of changes over a default templateUnder DEFAULTS, the following options will be set to Yes (if they aren&#8217;t change them to Yes):</p>
<pre class="brush: plain; title: ; notranslate">&lt;DEFAULT Name=&quot;AllowMUADuringMonitoring&quot; Value=&quot;Yes&quot;/&gt;
&lt;DEFAULT Name=&quot;CompressPackage&quot; Value=&quot;Yes&quot;/&gt;</pre>
<p>Additional exclusions should also be listed, for example:</p>
<pre class="brush: plain; title: ; notranslate">&lt;EXCLUSION Pattern=&quot;Q:\MSOCACHE&quot; Context=&quot;VFS_EXC&quot; Type=&quot;PSR_DataSystem&quot;/&gt;</pre>
<p>The DEFAULTOSD section sets the LOCAL_INTERACTION_ALLOWED option:</p>
<pre class="brush: plain; title: ; notranslate">&lt;DEFAULTOSD&gt;&amp;lt;SOFTPKG&amp;gt;&amp;lt;IMPLEMENTATION&amp;gt;&amp;lt;CODEBASE HREF=&quot;rtsps://%SFT_SOFTGRIDSERVER%:322/&quot;/&amp;gt;&amp;lt;OS VALUE=&quot;Win7&quot;/&amp;gt;&amp;lt;VIRTUALENV&amp;gt;&amp;lt;POLICIES&amp;gt;&amp;lt;LOCAL_INTERACTION_ALLOWED&amp;gt;TRUE&amp;lt;/LOCAL_INTERACTION_ALLOWED&amp;gt;&amp;lt;/POLICIES&amp;gt;&amp;lt;/VIRTUALENV&amp;gt;&amp;lt;/IMPLEMENTATION&amp;gt;&amp;lt;/SOFTPKG&amp;gt;
&lt;/DEFAULTOSD&gt;</pre>
<p>To use the template during sequencing, start the Sequencer and choose File / New from Template, and choose your Sequencer Template file.</p>
<p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/delivering-office-with-app-v-sequencer-recommendations/">Delivering Office with App-V – Sequencer Recommendations &#038; Best Practices</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stealthpuppy.com/virtualisation/delivering-office-with-app-v-sequencer-recommendations/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>App-V White Papers</title>
		<link>http://blog.stealthpuppy.com/virtualisation/app-v-white-papers/</link>
		<comments>http://blog.stealthpuppy.com/virtualisation/app-v-white-papers/#comments</comments>
		<pubDate>Tue, 28 Feb 2012 12:43:51 +0000</pubDate>
		<dc:creator>Aaron Parker</dc:creator>
				<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[App-V]]></category>

		<guid isPermaLink="false">http://blog.stealthpuppy.com/?p=2638</guid>
		<description><![CDATA[Update (28/03/2012): This list of white papers are now available on the Microsoft Download Centre: Microsoft Application Virtualization (App-V) Documentation Resources Download Page Microsoft TechNet recently went through a redesign that seems to have removed some content and in particular a &#8230; <a href="http://blog.stealthpuppy.com/virtualisation/app-v-white-papers/">Continue reading <span class="meta-nav">&#8594;</span></a><p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/app-v-white-papers/">App-V White Papers</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></description>
			<content:encoded><![CDATA[<p><em>Update (28/03/2012)</em>: This list of white papers are now available on the Microsoft Download Centre: <a href="http://www.microsoft.com/download/en/details.aspx?id=27760">Microsoft Application Virtualization (App-V) Documentation Resources Download Page</a></p>
<p>Microsoft TechNet recently went through a redesign that seems to have removed some content and in particular a list of App-V white papers that was on the previous <a href="http://technet.microsoft.com/en-us/hh710199">Application Virtualization TechCenter</a> no longer exists.</p>
<p>A couple of the white papers are currently available on TechNet, but the full list still includes a number of useful documents that are not. Here&#8217;s the original list of documents available for download:</p>
<table border="1" cellspacing="0" cellpadding="1">
<tbody>
<tr>
<td valign="top"><strong>Microsoft Application Virtualization Version 4.6 SP1 Trial Guide</strong></td>
<td valign="top">This Trial Guide is designed to help you quickly set up a limited Microsoft® Application Virtualization (App-V) evaluation in a test environment. This guide provides details of the steps necessary to install Microsoft Application Virtualization server components, for both Microsoft Application Virtualization Management Server and Microsoft Application Virtualization Streaming Server. You will install Microsoft Application Virtualization Desktop Client, publish the shortcuts of sequenced applications, and then stream and run these virtual applications on App-V clients. You will learn to virtualize a select set of applications using the Microsoft Application Virtualization Sequencer. You will also configure clients to run applications in a standalone environment.</td>
<td valign="top">March 10, 2011</td>
<td valign="top"><a title="App-V version 4.6 SP1 trial guide" href="http://download.microsoft.com/download/F/7/8/F784A197-73BE-48FF-83DA-4102C05A6D44/App-V/App-V%204.6%20SP1%20Trial%20Guide.docx">Download the white paper</a></td>
</tr>
<tr>
<td valign="top"><strong>Microsoft Application Virtualization 4.6 SP1 Sequencing Guide</strong></td>
<td valign="top">This whitepaper is designed to provide administrators with guidance for sequencing applications to create virtual packages that can be delivered to the end user. This document discusses setting up the App-V Sequencer, sequencing best practices, an example of sequencing, important information related to updating packages, and finally, examples of advanced OSD scripting.</td>
<td valign="top">March 10, 2011</td>
<td valign="top"><a title="App-V version 4.6 SP1 Sequencing Guide" href="http://download.microsoft.com/download/F/7/8/F784A197-73BE-48FF-83DA-4102C05A6D44/App-V/App-V%204.6%20Service%20Pack%201%20Sequencing%20Guide.docx">Download the white paper</a></td>
</tr>
<tr>
<td valign="top"><strong>Microsoft Application Virtualization Version 4.6 Trial Guide</strong></td>
<td valign="top">This guide is designed to help you quickly set up and evaluate a Microsoft Application Virtualization (App-V) environment. This guide outlines steps necessary to install Microsoft Application Virtualization server components, both System Center Application Virtualization Management Server and System Center Application Virtualization Streaming Server. You will install Microsoft Application Virtualization for Desktops, publish the shortcuts of sequenced applications, and then stream and run these virtual applications on App-V clients. You will learn to virtualize a select set of applications using System Center Application Virtualization Sequencer. You will also configure clients to run applications in a standalone environment.</td>
<td valign="top">September 27, 2010</td>
<td valign="top"><a title="App-V version 4.6 tria guide" href="http://download.microsoft.com/download/F/7/8/F784A197-73BE-48FF-83DA-4102C05A6D44/APP-V/APP-V%204%206%20Trial%20Guide%20Final.docx">Download the white paper</a></td>
</tr>
<tr>
<td valign="top"><strong>Virtual Application Management with Microsoft Application Virtualization 4.5 and System Center Configuration Manager 2007 R2</strong></td>
<td valign="top">This paper discusses the integration of System Center Configuration Manager 2007 R2 and Microsoft Application Virtualization 4.5, including supported scenarios, best practices, deployment planning considerations, and how to perform common virtual application management tasks with Configuration Manager 2007 R2.</td>
<td valign="top">March 15, 2010</td>
<td valign="top"><a href="http://download.microsoft.com/download/f/7/8/f784a197-73be-48ff-83da-4102c05a6d44/APP-V/App-V_and_ConfigMgr_Whitepaper_Final.docx">Download the white paper</a></td>
</tr>
<tr>
<td valign="top"><strong>Virtual Application Management with Microsoft Application Virtualization 4.6 and System Center Configuration Manager 2007 R2</strong></td>
<td valign="top">This paper discusses the integration of System Center Configuration Manager 2007 R2 and Microsoft Application Virtualization 4.6, including supported scenarios, best practices, deployment planning considerations, and how to perform common virtual application management tasks with Configuration Manager 2007 R2.</td>
<td valign="top">February 22, 2010</td>
<td valign="top"><a href="http://download.microsoft.com/download/f/7/8/f784a197-73be-48ff-83da-4102c05a6d44/APP-V/App-V_and_ConfigMgr_Whitepaper_Final.docx">Download the white paper</a></td>
</tr>
<tr>
<td valign="top"><strong>Microsoft Application Virtualization 4.6 Sequencing Guide</strong></td>
<td valign="top">This white paper is designed to provide administrators with guidance for sequencing applications to create virtual packages that can be delivered to the end user. This white paper discusses setting up the sequencer, sequencing best practices, an example of sequencing, important information related to updating packages, and finally examples of advanced OSD scripting.</td>
<td valign="top">February 22, 2010</td>
<td valign="top"><a href="http://download.microsoft.com/download/F/7/8/F784A197-73BE-48FF-83DA-4102C05A6D44/APP-V/App-46_Sequencing_Guide_Final.docx">Download the guide</a></td>
</tr>
<tr>
<td valign="top"><strong>App-V Application Publishing and Client Interaction</strong></td>
<td valign="top">This white paper provides information about how the client operates and where it stores data to support virtual applications.</td>
<td valign="top">February 22, 2010</td>
<td valign="top"><a href="http://download.microsoft.com/download/f/7/8/f784a197-73be-48ff-83da-4102c05a6d44/APP-V/AppPubandClientInteraction.docx">Download the white paper</a></td>
</tr>
<tr>
<td valign="top"><strong>App-V 4.6 Infrastructure Planning and Design Guide</strong></td>
<td valign="top">Use the IPD guide to maximize your organization’s time with step by step guidance to ease you through the process of planning your application virtualization infrastructure.</td>
<td valign="top">February 15, 2010</td>
<td valign="top"><a href="http://go.microsoft.com/fwlink/?LinkId=160978">Download the guide</a></td>
</tr>
<tr>
<td valign="top"><strong>Application Virtualization 4.5 for Terminal Services</strong></td>
<td valign="top">This whitepaper discusses the benefits, configurations and considerations when planning a TS (RDS) deployment that includes Microsoft Application Virtualization (App-V).<br />
This document was built to support designers and architects of Microsoft® Application Virtualization 4.5 infrastructures. Included in this document are performance data and recommendations for selecting the number and types of App-V components to use in an infrastructure.</td>
<td valign="top">September 29, 2009</td>
<td valign="top"><a href="http://download.microsoft.com/download/6/9/0/69095D7C-649D-4A0E-AF0B-17B26EACCF67/App-V%20Terminal%20Services.docx">Download the white paper</a></td>
</tr>
<tr>
<td valign="top"><strong>App-V 4.5 Server Sizing Guide</strong></td>
<td valign="top">This document was built to support designers and architects of Microsoft® Application Virtualization 4.5 infrastructures. Included in this document are performance data and recommendations for selecting the number and types of App-V components to use in an infrastructure.</td>
<td valign="top">February 16, 2009</td>
<td valign="top"><a href="http://download.microsoft.com/download/1/6/1/161042F3-9CDE-45F7-BC20-4FBDA8888890/AppV45_ServerSizingGuide_Final.docx">Download the white paper</a></td>
</tr>
<tr>
<td valign="top"><strong>Microsoft Application Virtualization Version 4.5 Trial Guide</strong></td>
<td valign="top">This guide is designed to help you quickly set up and evaluate a Microsoft Application Virtualization (App-V) environment. This guide outlines steps necessary to install Microsoft Application Virtualization server components, both System Center Application Virtualization Management Server and System Center Application Virtualization Streaming Server. You will install Microsoft Application Virtualization for Desktops, publish the shortcuts of sequenced applications, and then stream and run these virtual applications on App-V clients. You will learn to virtualize a select set of applications using System Center Application Virtualization Sequencer. You will also configure clients to run applications in a standalone environment.</td>
<td valign="top">August 27, 2009</td>
<td valign="top"><a href="http://download.microsoft.com/download/f/7/8/f784a197-73be-48ff-83da-4102c05a6d44/APP-V/MSAppVirt45Trial_Guide_Final.docx">Download the white paper</a></td>
</tr>
<tr>
<td valign="top"><strong>App-V Extensibility Today Before the SDK</strong></td>
<td valign="top">This white paper presents administrators with the available tools to automate common tasks in App-V 4.5, including sample scenarios and examples using the tools.</td>
<td valign="top">September 19, 2008</td>
<td valign="top"><a href="http://download.microsoft.com/download/f/7/8/f784a197-73be-48ff-83da-4102c05a6d44/APP-V/App-V_Extensibility_Today_Before_the_SDK.docx">Download the white paper</a></td>
</tr>
<tr>
<td valign="top"><strong>App-V Security Best Practices</strong></td>
<td valign="top">This white paper provides administrators with the starting place for designing security into the App-V infrastructure. The white paper also describes recommended security configurations available in App-V today.</td>
<td valign="top">September 15, 2008</td>
<td valign="top"><a href="http://download.microsoft.com/download/f/7/8/f784a197-73be-48ff-83da-4102c05a6d44/APP-V/AppV_Security_Best_Practices.docx">Download the white paper</a></td>
</tr>
<tr>
<td valign="top"><strong>App-V Security Operations Guide</strong></td>
<td valign="top">The purpose of this white paper is to provide the App-V administrator with steps to configure security settings. Some of the security settings are well-known configurations within Windows and the appropriate links will be provided.</td>
<td valign="top">September 15, 2008</td>
<td valign="top"><a href="http://download.microsoft.com/download/f/7/8/f784a197-73be-48ff-83da-4102c05a6d44/APP-V/AppV_Secuirty_Operations_Guide.docx">Download the white paper</a></td>
</tr>
<tr>
<td valign="top"><strong>Creating a New Application Virtualization 4.5 Database Using SQL Scripting</strong></td>
<td valign="top">This white paper explains and documents the procedure to install the Microsoft Application Virtualization Server when the administrator installing does not have “sysadmin” privileges to the SQL Server.</td>
<td valign="top">October 6, 2009</td>
<td valign="top"><a href="http://download.microsoft.com/download/1/6/1/161042F3-9CDE-45F7-BC20-4FBDA8888890/Creating_new_db_using_sql_scripting.docx">Download the white paper</a></td>
</tr>
<tr>
<td valign="top"><strong>Microsoft Application Virtualization (App-V) 4.5 ADM Template</strong></td>
<td valign="top">This white paper was designed to provide administrators with the steps necessary to deploy configuration for the App-V client with Group Policies. The App-V Client ADM Template was created to provide administrators with the ability to centrally manage the most commonly configured App-V client settings. A working knowledge of Group Policies in Active Directory is required to implement the ADM Template to the appropriate clients, and is not described in this document.</td>
<td valign="top">September 3, 2008</td>
<td valign="top"><a href="http://download.microsoft.com/download/F/7/8/F784A197-73BE-48FF-83DA-4102C05A6D44/APP-V/App-V_ADM_Template.docx">Download the white paper</a></td>
</tr>
<tr>
<td valign="top"><strong>App-V 4.5 Infrastructure Planning and Design Guide</strong></td>
<td valign="top">Use the IPD guide to maximize your organization’s time with step by step guidance to ease you through the process of planning your application virtualization infrastructure.</td>
<td valign="top">September 29, 2008</td>
<td valign="top"><a href="http://download.microsoft.com/download/5/b/c/5bc966bc-47d8-41df-95f2-fa9a2d816258/Microsoft%20Application%20Virtualization%204.5.zip">Download the guide</a></td>
</tr>
</tbody>
</table>
<p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/app-v-white-papers/">App-V White Papers</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stealthpuppy.com/virtualisation/app-v-white-papers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mailbag &#8211; Deploying multiple editions of Office 2010 with App-V</title>
		<link>http://blog.stealthpuppy.com/virtualisation/mailbag-deploying-multiple-editions-of-office-2010-with-app-v/</link>
		<comments>http://blog.stealthpuppy.com/virtualisation/mailbag-deploying-multiple-editions-of-office-2010-with-app-v/#comments</comments>
		<pubDate>Wed, 15 Feb 2012 17:45:14 +0000</pubDate>
		<dc:creator>Aaron Parker</dc:creator>
				<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[App-V]]></category>
		<category><![CDATA[Office]]></category>

		<guid isPermaLink="false">http://blog.stealthpuppy.com/?p=2633</guid>
		<description><![CDATA[I&#8217;m not sure why I didn&#8217;t think of this earlier – I get emails from readers fairly regularly and many of them make great topics for blog posts. So here&#8217;s the first in a series of posts where I&#8217;ll cover &#8230; <a href="http://blog.stealthpuppy.com/virtualisation/mailbag-deploying-multiple-editions-of-office-2010-with-app-v/">Continue reading <span class="meta-nav">&#8594;</span></a><p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/mailbag-deploying-multiple-editions-of-office-2010-with-app-v/">Mailbag &#8211; Deploying multiple editions of Office 2010 with App-V</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2012/02/Mail-Bag.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px; border: 0px;" title="Mail Bag" src="http://blog.stealthpuppy.com/wp-content/uploads/2012/02/Mail-Bag_thumb.png" alt="Mail Bag" width="128" height="128" align="right" border="0" /></a>I&#8217;m not sure why I didn&#8217;t think of this earlier – I get emails from readers fairly regularly and many of them make great topics for blog posts. So here&#8217;s the first in a series of posts where I&#8217;ll cover interesting questions I get via email and where I think other readers will benefit from a public response.</p>
<p>I&#8217;ve removed personally identifiable information from the original email.</p>
<h3>Question</h3>
<blockquote><p>We have set up Citrix / App-V environment and sequenced Office 2010 Pro Plus and we have installed the MSOffvirt kit [the Office 2010 Deployment Kit for App-V] using the Office Pro Plus Key on the Citrix PVS servers as part of the PVS image. Now our client has decided they also want to be able to deliver Office 2010 Std via app-v as well. Do we now need to change the license key that it is installed with the MSOffvirt kit or is there another way round it? We could of course silo it and have Office Pro Plus on some PVS servers and Office Standard on others.</p></blockquote>
<h3>Answer</h3>
<p>My first recommendation would actually be against virtualizing the primary version Office, but I&#8217;ll assume that your Office requirements are simple and virtualizing Office with App-V is working OK for you.</p>
<p>It sounds like you&#8217;re already aware that App-V doesn&#8217;t really allow you to juggle different editions of Office on the same machine, as the Deployment Kit handles licensing, you can only add a single edition (e.g. Standard or Professional Plus) to any single machine. If you&#8217;ve already got an existing PVS image, I would recommend cracking it open, uninstalling the Deployment Kit and reinstalling using the product key for the edition you need in each image. That way you can ensure you have a clean image.</p>
<p>My ideal approach to this would be to build the PVS image from an unattended source (such as the Microsoft Deployment Toolkit) where you&#8217;ve changed the product key, rather than manually make changes to the image.</p>
<p>From a licensing perspective, Microsoft doesn&#8217;t provide you the right to license a device for Office 2010 Professional Plus and then deploy Standard edition to that device. You can read more on licensing in this document: <a href="http://download.microsoft.com/download/6/8/9/68964284-864D-4A6D-AED9-F2C1F8F23E14/DOWNGRADE_RIGHTS.DOCX">Downgrade Rights &#8211; Microsoft Volume Licensing Programs, Original Equipment Manufacturer (OEM) License, and Full Packaged Product (FPP) License, February 2011</a></p>
<p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/mailbag-deploying-multiple-editions-of-office-2010-with-app-v/">Mailbag &#8211; Deploying multiple editions of Office 2010 with App-V</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stealthpuppy.com/virtualisation/mailbag-deploying-multiple-editions-of-office-2010-with-app-v/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Don&#8217;t put yourself at risk by virtualizing Adobe Reader X</title>
		<link>http://blog.stealthpuppy.com/virtualisation/dont-virtualize-adobe-reader-x/</link>
		<comments>http://blog.stealthpuppy.com/virtualisation/dont-virtualize-adobe-reader-x/#comments</comments>
		<pubDate>Thu, 08 Dec 2011 16:36:01 +0000</pubDate>
		<dc:creator>Aaron Parker</dc:creator>
				<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[Adobe Reader]]></category>

		<guid isPermaLink="false">http://blog.stealthpuppy.com/?p=2578</guid>
		<description><![CDATA[Adobe released a new security advisory for Reader and Acrobat 9 and X this week to address details of an upcoming fix to these versions for a 0 day vulnerability. Exploits for this vulnerability exist for Reader and Acrobat 9 and are currently &#8230; <a href="http://blog.stealthpuppy.com/virtualisation/dont-virtualize-adobe-reader-x/">Continue reading <span class="meta-nav">&#8594;</span></a><p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/dont-virtualize-adobe-reader-x/">Don&#8217;t put yourself at risk by virtualizing Adobe Reader X</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-2581" title="DontVirtualizeReader" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/12/DontVirtualizeReader.png" alt="" width="128" height="128" />Adobe released a new <a href="http://www.adobe.com/support/security/advisories/apsa11-04.html">security advisory for Reader and Acrobat 9 and X</a> this week to address details of an upcoming fix to these versions for a 0 day vulnerability. Exploits for this vulnerability exist for Reader and Acrobat 9 and are currently active:</p>
<blockquote><p>A critical vulnerability has been identified in Adobe Reader X (10.1.1) and earlier versions for Windows and Macintosh, Adobe Reader 9.4.6 and earlier 9.x versions for UNIX, and Adobe Acrobat X (10.1.1) and earlier versions for Windows and Macintosh. This vulnerability (CVE-2011-2462) could cause a crash and potentially allow an attacker to take control of the affected system. There are reports that the vulnerability is being actively exploited in limited, targeted attacks in the wild against Adobe Reader 9.x on Windows.</p></blockquote>
<p>Since the release of Reader and Acrobat X, there have been no malware that has been effective against the <a href="http://blogs.adobe.com/pdfitmatters/2011/06/protected-view-in-acrobat-x-version-10-1.html">Protected Mode</a> (sandbox) feature of version X. From <a href="http://blogs.adobe.com/asset/2011/12/background-on-cve-2011-2462.html">Adobe&#8217;s blog post on this issue</a>:</p>
<blockquote><p>I’d like to take this moment to encourage any remaining users still running Adobe Reader or Acrobat 9.x (or worse, older unsupported versions) to PLEASE upgrade to Adobe Reader or Acrobat X. We put a tremendous amount of work into securing Adobe Reader and Acrobat X, and, to date, there has not been a single piece of malware identified that is effective against a version X install. Help us help you by running the latest version of the software!</p></blockquote>
<p>If you have any version of Adobe Reader other than X deployed, you should seriously consider migrating to the new version as a matter of priority. That&#8217;s not &#8220;lets consider doing this in the next month&#8221; &#8211; you should stop reading this post and <a href="http://blog.stealthpuppy.com/deployment/deploying-adobe-reader-x/">get started deploying Reader X now</a>.</p>
<p>Furthermore if are deploying or have deployed Reader X, I can&#8217;t recommend virtualizing it with application virtualization. The reason for this is that Protected Mode is not compatible and is not supported with application virtualization. It doesn&#8217;t work with <a href="http://kb2.adobe.com/cps/907/cpsid_90705.html">Citrix App Streaming</a>, <a href="http://blog.stealthpuppy.com/virtualisation/virtualising-adobe-reader-x/">Microsoft App-V</a> or <a href="http://communities.vmware.com/thread/329118">VMware</a> <a href="http://communities.vmware.com/message/1714001">ThinApp</a> (it may be possible with the current version of ThinApp, but I haven&#8217;t confirmed).</p>
<p>[Update: thanks to prompting from <a href="https://twitter.com/packageologist/">Dan Gough</a>, I've confirmed that Protected Mode in Reader X (10.1.1), works under App-V 4.6.1.30091 (Hotfix 4)]</p>
<p>[Update 2: Protected Mode in Reader X is confirmed to work under ThinApp 4.6.2 and 4.7. You'll have to update your virtual applications and re-enable Protected Mode with the latest releases]</p>
<p>In short &#8211; leaving Protected Mode enabled will protect your users and devices and because Protected Mode has been incompatible with the isolation that application virtualisation introduces, I recommend that you do not deploy Reader X with application virtualization solutions unless you are using the very latest versions.</p>
<p>But.. what about those scenarios when a virtualized application needs to call a locally installed Reader X? Until the app virt vendors fully support Protected Mode, the best you can do is ensure that Protected Mode is only disabled when Reader runs within the virtualization environment (using a tool like <a href="http://www.gpanswers.com/1.html?w=PPXEND&amp;p=parker">PolicyPak</a>) and is not completely disabled. Until then, the best we can do is cross our fingers and hope it doesn&#8217;t happen to us.</p>
<p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/dont-virtualize-adobe-reader-x/">Don&#8217;t put yourself at risk by virtualizing Adobe Reader X</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stealthpuppy.com/virtualisation/dont-virtualize-adobe-reader-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sequencing Mozilla Firefox 8</title>
		<link>http://blog.stealthpuppy.com/virtualisation/sequencing-mozilla-firefox-8/</link>
		<comments>http://blog.stealthpuppy.com/virtualisation/sequencing-mozilla-firefox-8/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 12:00:42 +0000</pubDate>
		<dc:creator>Aaron Parker</dc:creator>
				<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[App-V]]></category>
		<category><![CDATA[Firefox]]></category>

		<guid isPermaLink="false">http://blog.stealthpuppy.com/?p=2476</guid>
		<description><![CDATA[Mozilla has just released Firefox 8, so it&#8217;s time to look at virtualizing the new version. It&#8217;s a simple task to virtualize Firefox, as it lends itself well to application virtualization; however getting it right takes a little more effort. &#8230; <a href="http://blog.stealthpuppy.com/virtualisation/sequencing-mozilla-firefox-8/">Continue reading <span class="meta-nav">&#8594;</span></a><p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/sequencing-mozilla-firefox-8/">Sequencing Mozilla Firefox 8</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.stealthpuppy.com/wp-content/uploads/2011/06/062611_1120_SequencingM1.png" alt="" align="right" />Mozilla has just released Firefox 8, so it&#8217;s time to look at virtualizing the new version. It&#8217;s a simple task to virtualize Firefox, as it lends itself well to application virtualization; however getting it right takes a little more effort. Here&#8217;s how to successfully sequence <a href="http://www.mozilla.com/en-US/firefox/">Mozilla Firefox 8.x</a>.</p>
<h3>What you lose by virtualizing Firefox</h3>
<p>Virtualizing Firefox with App-V will isolate the application from the OS, so the following features will not be available once Firefox has been sequenced:</p>
<ul>
<li>Firefox Jump Lists in the Start Menu and Taskbar</li>
<li>The ability set the browser as default</li>
</ul>
<h3>Firefox features to disable</h3>
<p>There are a couple of features that should be disabled when running Firefox under App-V:</p>
<ul>
<li>Automatic updates for Firefox – <em>Options / Advanced / Update &#8211; Automatically check for updates to: Firefox</em>. Firefox updates should be delivered via new App-V packages. Updates for Add-ons and Search Engines should be OK as these are written to the user profile</li>
<li>Default browser check – <em>Options / Advanced / General &#8211; Always check to see if Firefox is the default browser on startup</em>. Once Firefox is isolated from the OS, the user won&#8217;t be able to make it the default browser</li>
</ul>
<p>I will cover using a couple of customisation to ensure these features are disabled for any new Firefox profile.</p>
<h3>Managing the Firefox profile – virtualize or not?</h3>
<p><a href="http://kb.mozillazine.org/Profile_folder_-_Firefox">Firefox stores preferences, extensions and other user data</a> in:</p>
<ul>
<li>%APPDATA%\Mozilla (preferences, bookmarks etc.); and</li>
<li>%LOCALAPPDATA%\Mozilla (browser cache)</li>
</ul>
<p>The default behaviour of the App-V Sequencer is to exclude %LOCALAPPDATA% &#8211; this is a good thing and I don&#8217;t recommend removing this exclusion. %APPDATA% will be included by default and whether you leave this location included in the package will depend on your specific deployment requirements; however my recommendation is to exclude this location by adding <em>%CSIDL_APPDATA%\Mozilla</em>to the exclusion list in your sequence. On the client, Firefox will then create a new profile in the real file system when the user starts the browser for the first time. There are several reasons why this approach is a good idea:</p>
<ul>
<li>Some of the configuration files within the Firefox profile include hard-codes paths – challenging if your App-V virtual drive changes between clients</li>
<li>Virtualizing the profile increases the complexity of upgrading Firefox packages especially challenging given <a href="http://www.zdnet.com/blog/bott/mozilla-to-enterprise-customers-drop-dead/3497">Mozilla&#8217;s new approach to Firefox releases</a>. By storing the Firefox profile on the real file system, Firefox can be deployed via completely unrelated packages – no need to create upgrade versions</li>
<li>Users can potentially create multiple Firefox profiles, with each stored in the users&#8217; PKG file. The minimum size for a new Firefox profile is 12Mb – the PKG file will grow by 12Mb for each new Firefox profile created</li>
</ul>
<p>By excluding %APPDATA% and not virtualizing the user profile you will gain some flexibility with your Firefox deployment.</p>
<h3>Configuring Firefox Defaults</h3>
<p>If a Firefox profile is not virtualized within the package any options set during the monitoring phase won&#8217;t be captured. Fortunately Firefox can be configured with defaults for any new profile so that it will contain your required configuration options.</p>
<p>Mozilla has made it easy to deploy custom default settings and preferences – by adding files to <em>%ProgramFiles%\Mozilla Firefox\defaults\profile</em> (change the path to suit your environment), new Firefox profiles will pick up a copy of these files when the profile is created. I will walk through adding a couple of files to this location to ensure that any new Firefox profile receives the required settings. You can find more detailed documentation on these features in the following articles:</p>
<ul>
<li><a href="http://kb.mozillazine.org/User.js_file">User.js file</a></li>
<li><a href="http://kb.mozillazine.org/Prefs.js_file">Prefs.js file</a></li>
<li><a href="http://kb.mozillazine.org/UserChrome.css">UserChrome.css</a> and <a href="http://kb.mozillazine.org/UserChrome.css_Element_Names/IDs">Chrome element names and IDs</a></li>
<li><a href="http://www.binaryturf.com/enterprise-build-firefox-deployment/">Enterprise Build Of Firefox For Deployment</a></li>
</ul>
<p>To enforce user settings we can leverage <a href="http://kb.mozillazine.org/User.js_file"><em>user.js</em></a> and the use <a href="http://www-archive.mozilla.org/unix/customizing.html"><em>UserChrome.css</em></a> to remove those user interface elements. Available below is a copy of <em>user.js</em> that disables automatic updates of Firefox and checking whether it is the default browser:</p>
<p class="download"><img src="http://blog.stealthpuppy.com/images/downloads/green-download-arrow-grey-line.png" alt="Firefox user.js"/>  <a href="http://blog.stealthpuppy.com/wp-content/plugins/download-monitor/download.php?id=44" title="Downloaded 1427 times">Firefox user.js</a></p>
<p>A simple approach to extending the options in <a href="http://kb.mozillazine.org/User.js_file">user.js</a> and <a href="http://kb.mozillazine.org/Prefs.js_file">prefs.js</a> is to install Firefox and configure it the way you would like. Then open prefs.js from the new profile and use the entries to create custom versions.</p>
<p>Available here is a copy of <em>userChrome.css</em> that will remove from the user interface the options to enable browser updates and set Firefox as the default browser:</p>
<p class="download"><img src="http://blog.stealthpuppy.com/images/downloads/green-download-arrow-grey-line.png" alt="Firefox userChrome.css"/>  <a href="http://blog.stealthpuppy.com/wp-content/plugins/download-monitor/download.php?id=45" title="Downloaded 1159 times">Firefox userChrome.css</a></p>
<h3>Sequencing Platform</h3>
<p>I have sequenced Firefox 8 on a clean Windows 7 SP1 x86 VM with all current updates and no other applications other than the App-V Sequencer. I’ve configured a Q: drive using a second vDisk, rather than let the Sequencer create a Q: drive for me. I&#8217;ve used a VFS install and tested successfully; however if you would prefer a MNT install just change the install folder when installing Firefox</p>
<p>The Firefox version available from Mozilla is an x86 application (x64 build are available from other sources), so I generally recommend sequencing Firefox on Windows 7 x86 virtual machine even though you may be deploying to 64-bit Windows. However confirm this in your own environment and re-sequence for 64-bit platforms if required.</p>
<h3>Sequencer Configuration</h3>
<p>Before Sequencing, add the following exclusions:</p>
<ul>
<li>%CSIDL_APPDATA%\Mozilla</li>
<li>%CSIDL_COMMON_APPDATA%\Microsoft\RAC</li>
<li>\REGISTRY\USER\%SFT_SID%\Software\Microsoft\Windows\CurrentVersion\Internet Settings</li>
</ul>
<p>If you are adding Adobe Flash Player to the package, add these exclusions as well:</p>
<ul>
<li>%CSIDL_APPDATA%\Adobe</li>
<li>%CSIDL_APPDATA%\Macromedia</li>
<li>%CSIDL_WINDOWS%\Installer</li>
</ul>
<p>I have included these in a Package Template for Firefox that you can download from here:</p>
<p class="download"><img src="http://blog.stealthpuppy.com/images/downloads/green-download-arrow-grey-line.png" alt="App-V Package Template for Firefox"/>  <a href="http://blog.stealthpuppy.com/wp-content/plugins/download-monitor/download.php?id=46" title="Downloaded 1480 times">App-V Package Template for Firefox</a></p>
<h3>Installing Firefox</h3>
<p>Download the <a href="http://www.mozilla.com/firefox/all.html">Firefox installer in your target language from the Mozilla site</a>. Sequencing Firefox will require the following steps:</p>
<ul>
<li>Install Firefox</li>
<li>Configure profile defaults</li>
<li>Optionally add global add-ons and install plug-ins such as <a href="https://www.adobe.com/devnet/flashplayer/enterprise_deployment.html">Adobe Flash Player</a></li>
</ul>
<p>Automating this process as much as possible will create a cleaner package and make it faster to re-create a new Firefox package if required.</p>
<ul>
<li>Mozilla <a href="https://wiki.mozilla.org/Installer:Command_Line_Arguments">Firefox installer command line arguments</a> – use the INI file approach to control where Firefox is installed and to prevent the addition of a desktop shortcut, if required</li>
<li>After installing Firefox, copy <em>user.js</em> to <em>%ProgramFiles%\Mozilla Firefox\defaults\profile</em></li>
<li>Copy <em>userChrome.css</em> to <em>%ProgramFiles%\Mozilla Firefox\defaults\profile\chrome</em></li>
<li>Firefox also allows you to <a href="http://kb.mozillazine.org/Installing_extensions">add global add-ons by adding them to the Extensions sub-folder</a> of the Firefox installation folder</li>
<li>If you are including Adobe Flash player in the package, be sure to <a href="http://kb2.adobe.com/cps/167/16701594.html">disable the auto-update notification</a></li>
</ul>
<p>For an example script that will automate the install and configuration of Firefox, see the script below:</p>
<pre class="brush: plain; title: ; notranslate">@ECHO OFF
SET SOURCE=%~dp0
SET SOURCE=%SOURCE:~0,-2%

REM Create the Firefox answer file
ECHO [Install] &gt; %SOURCE%\Firefox8.ini
ECHO ; InstallDirectoryName=Firefox8 &gt;&gt; %SOURCE%\Firefox8.ini
ECHO ; InstallDirectoryPath=Q:\MozillaFirefox8_en-GB &gt;&gt; %SOURCE%\Firefox8.ini
ECHO QuickLaunchShortcut=false &gt;&gt; %SOURCE%\Firefox8.ini
ECHO DesktopShortcut=false &gt;&gt; %SOURCE%\Firefox8.ini
ECHO StartMenuShortcuts=true &gt;&gt; %SOURCE%\Firefox8.ini
REM Install Firefox - the START command will not work if the Firefox setup filename includes spaces
START /WAIT FirefoxSetup8.exe /INI=%SOURCE%\Firefox8.ini

REM Configure Firefox profile defaults
MD &quot;%ProgramFiles%\Mozilla Firefox\defaults\profile\chrome&quot;
COPY %SOURCE%\user.js &quot;%ProgramFiles%\Mozilla Firefox\defaults\profile\user.js&quot;
COPY %SOURCE%\userChrome.css &quot;%ProgramFiles%\Mozilla Firefox\defaults\profile\chrome\userChrome.css&quot;</pre>
<h3>Shortcuts</h3>
<p>If the monitoring phase was successful the Sequencer should create a single shortcut for Firefox. If you are including Flash Player, add an additional shortcut for the Flash Player Control Panel applet using &#8220;C:\Windows\System32\FlashPlayerCPLApp.cpl&#8221; as the target.</p>
<h3>First Run Tasks and Primary Feature Block</h3>
<p>If the steps above have been followed for exclusions, installation and configuration of Firefox, there will be no first run tasks to complete. Additionally the resultant package will be reasonably small so there is no need to create the Primary Feature Block. Because you don&#8217;t need to complete first run tasks or create the Primary Feature Block, you could automate the entire end-to-end process of creating a Firefox package using <a href="http://softwaredeployment.wordpress.com/2011/04/15/app-v-4-6-sp1-command-line-interface/">the App-V Sequencer command-line interface</a>.</p>
<h3>Finally</h3>
<p>Save your package and deploy. With compression enabled, the package should be around 22Mb.</p>
<p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/sequencing-mozilla-firefox-8/">Sequencing Mozilla Firefox 8</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stealthpuppy.com/virtualisation/sequencing-mozilla-firefox-8/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Sequencing Google Chrome 15</title>
		<link>http://blog.stealthpuppy.com/virtualisation/sequencing-google-chrome-15/</link>
		<comments>http://blog.stealthpuppy.com/virtualisation/sequencing-google-chrome-15/#comments</comments>
		<pubDate>Mon, 07 Nov 2011 15:00:00 +0000</pubDate>
		<dc:creator>Aaron Parker</dc:creator>
				<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[App-V]]></category>
		<category><![CDATA[Google Chrome]]></category>

		<guid isPermaLink="false">http://blog.stealthpuppy.com/?p=2466</guid>
		<description><![CDATA[Here&#8217;s how to successfully sequence Google Chrome 15; however the same approach should work for Chrome 13, 14 and 16 and maybe even some other versions. What you lose by virtualizing Chrome Virtualizing Chrome with App-V will isolate the application &#8230; <a href="http://blog.stealthpuppy.com/virtualisation/sequencing-google-chrome-15/">Continue reading <span class="meta-nav">&#8594;</span></a><p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/sequencing-google-chrome-15/">Sequencing Google Chrome 15</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></description>
			<content:encoded><![CDATA[<p><img style="background-image: none; margin: 0px 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px; border-width: 0px;" title="GoogleChrome" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/11/GoogleChrome.png" alt="GoogleChrome" width="128" height="128" align="right" border="0" />Here&#8217;s how to successfully sequence Google Chrome 15; however the same approach should work for Chrome 13, 14 and 16 and maybe even some other versions.</p>
<h3>What you lose by virtualizing Chrome</h3>
<p>Virtualizing Chrome with App-V will isolate the application from the OS, so the following features will not be available once Chrome has been sequenced:</p>
<ul>
<li>Chrome Jump Lists in the Start Menu and Taskbar</li>
<li>The ability set the browser as default</li>
<li>The Chrome <a href="http://dev.chromium.org/developers/design-documents/sandbox">sandbox</a> (maybe)</li>
</ul>
<p><strong>Note</strong>: Note that disabling the sandbox will reduce the browser security. This is not recommended and as such, I actually do not recommend virtualizing Chrome, if it is to be your regular browser.</p>
<h3>Managing the Chrome profile – virtualize or not?</h3>
<p><a href="http://www.chromium.org/user-experience/user-data-directory">Chrome stores preferences, extensions and other user data</a>in:</p>
<ul>
<li>%LOCALAPPDATA%\Google\Chrome\User Data\Default (preferences, bookmarks etc. <strong>and</strong> browser cache)</li>
</ul>
<p>I don&#8217;t know why Google has chosen this location by default, however I suspect that it may be to encourage users to signup for a Google account to enable the <a href="http://www.google.com/support/chrome/bin/answer.py?hl=en&amp;answer=165139&amp;topic=1693469">native syncing features of the browser</a>. The Chrome User Data folder can become very large and that&#8217;s without the Cache folder. You could potentially hit the limit of the user PKG file size.</p>
<p>Whether you the Chrome user profile in the package will depend on your specific deployment requirements; however my recommendation is to use this sync feature and leave the User Data outside of the App-V package.</p>
<p>There are a couple of reasons why this approach is a good idea:</p>
<ul>
<li>Some of the configuration files within the Chrome profile include hard-codes paths – challenging if your App-V virtual drive changes between clients</li>
<li>Virtualizing the profile increases the complexity of upgrading Chrome packages especially challenging given how often the browser is updated. By storing the Chrome profile on the real file system, Chrome can be deployed via completely unrelated packages – no need to create upgrade versions</li>
</ul>
<p>By not virtualizing the user profile you will gain some flexibility with your Chrome deployment.</p>
<p>However, if you absolutely must place the Chrome profile in the virtual environment, then here&#8217;s a couple of approaches to including the User Data folder in the App-V package:</p>
<ol>
<li>Use the <em>&#8211;user-data-dir</em> and <em>&#8211;disk-cache-dir</em> command line parameters to specify an alternate location for the User Data and Cache folders</li>
<li>Remove the exclusions for the Local AppData location from the Sequencer before sequencing</li>
</ol>
<p>For the first approach, add the parameters to the command line, placing <a href="http://www.chromium.org/user-experience/user-data-directory">the User Data folder</a> in the roaming portion of the profile and the browser cache in the local portion:</p>
<pre class="brush: plain; title: ; notranslate">chrome --user-data-dir=%AppData%\Google\Chrome\User Data --disk-cache-dir=%LocalAppData%\Google\Chrome\User Data</pre>
<p>The second approach doesn&#8217;t require any command line parameters, but it will require modifying the default Sequencer exclusions and some scripting:</p>
<ul>
<li>Remove the default exclusions of <em>%CSIDL_LOCAL_APPDATA%</em> and <em>%CSIDL_PROFILE%\Local Settings</em></li>
<li>Add an exclusion for <em>%CSIDL_LOCAL_APPDATA%\Google\Chrome\User Data\Default\Cache</em> or <em>%CSIDL_PROFILE%\Local Settings\Google\Chrome\User Data\Default\Cache</em>, depending on the operating system you are sequencing on</li>
<li>Post sequencing, set the folder to Merge with Local and add a pre-launch script that creates the Cache folder outside of the virtual environment</li>
</ul>
<p>The first approach would be the easiest way to go.</p>
<h3>Chrome features to disable</h3>
<p>There are a couple of features that should be disabled when running Chrome under App-V:</p>
<ul>
<li>Browser auto updates. Chrome updates should be delivered via new App-V packages</li>
<li>Default browser check. Once Chrome is isolated from the OS, the user won&#8217;t be able to make it the default browser</li>
</ul>
<p><a href="http://www.chromium.org/administrators/turning-off-auto-updates">Disabling browser auto updates</a> on Windows requires setting a policy. This can be done via Group Policy, delivered post sequence, or placing the policy directly into the package. To <a href="http://www.google.com/support/installer/bin/answer.py?answer=146164">deliver the setting via Group Policy</a>, ensure that the Policies key is not captured in the package.</p>
<p>To set the policy during sequencing, run the following command:</p>
<pre class="brush: plain; title: ; notranslate">REG ADD HKLM\SOFTWARE\Policies\Google\Update /v AutoUpdateCheckPeriodMinutes /d 0 /t REG_SZ /f</pre>
<p>Google Update should also be excluded from the package, which I discuss below. The default browser check can be disabled with a couple of approaches including the master preferences file.</p>
<h3>Configuring Chrome Defaults</h3>
<p>If a Chrome profile is not virtualized within the package any options set during the monitoring phase won&#8217;t be captured. Fortunately Chrome can be configured with defaults for any new profile so that it will contain your required configuration options. Google has made it simple to deploy custom default settings and preferences – by adding a preference file to the same folder where Chrome is installed, Chrome will use these master preferences for any new user who runs Chrome.</p>
<p>For information on what these master preferences are, see the <a href="http://www.chromium.org/administrators/configuring-other-preferences">Chromium administrators documentation on master preferences</a>. I&#8217;ve included a sample <strong>master_preferences</strong> file in which I have set several defaults including removing the default browser check, preventing Google from adding a shortcut to the user&#8217;s desktop on first run and setting a home page.</p>
<p class="download"><img src="http://blog.stealthpuppy.com/images/downloads/green-download-arrow-grey-line.png" alt="Google Chrome Master Preferences"/>  <a href="http://blog.stealthpuppy.com/wp-content/plugins/download-monitor/download.php?id=51" title="Downloaded 578 times">Google Chrome Master Preferences</a></p>
<p>Remove the .txt file extension to use</p>
<h3>Sequencing Platform</h3>
<p>I have sequenced Google Chrome 15.0.874.106 on a clean Windows 7 SP1 x86 VM with all current updates and no other applications other than the App-V Sequencer. I&#8217;ve configured a Q: drive using a second vDisk. I&#8217;ve used a VFS install because installing Chrome to the Q: drive isn&#8217;t an option, unless you want to move the application manually.</p>
<h3>Sequencer Configuration</h3>
<p>Before Sequencing, add the following exclusions:</p>
<ul>
<li>\REGISTRY\USER\%SFT_SID%\Software\Microsoft\Windows\CurrentVersion\Internet Settings</li>
<li>%CSIDL_COMMON_APPDATA%\Microsoft\RAC</li>
<li>%CSIDL_WINDOWS%\Microsoft.NET</li>
<li>%CSIDL_WINDOWS%\Installer</li>
<li>%CSIDL_PROGRAM_FILES%\Google\Update</li>
<li>%CSIDL_WINDOWS%\Tasks</li>
</ul>
<p>The last two exclusions will prevent Google Update related binaries from being captured. Additionally disable the option to &#8220;Allow Virtualization of Services&#8221; to prevent the capture of the Google Update services.</p>
<p>I have included these options in a Package Template for Chrome that you can download here:</p>
<p class="download"><img src="http://blog.stealthpuppy.com/images/downloads/green-download-arrow-grey-line.png" alt="Google Chrome App-V Sequence Template"/>  <a href="http://blog.stealthpuppy.com/wp-content/plugins/download-monitor/download.php?id=52" title="Downloaded 494 times">Google Chrome App-V Sequence Template</a></p>
<h3>Sequencing Chrome</h3>
<p>Download the <a href="http://www.google.com/chrome/eula.html?msi=true">Google Chrome Enterprise (or MSI) installer</a>. Sequencing Chrome will require the following steps:</p>
<ol>
<li>Install Chrome using the Windows Installer file</li>
<li>Delete the cached copy of the Chrome installer, which won&#8217;t be required once delivered with App-V</li>
<li>Move chrome.exe to the same folder as the current version&#8217;s binaries (or vice-versa).</li>
</ol>
<p>With the default folder structure, Chrome will execute during sequencing, but won&#8217;t execute once delivered to a client. The debug.log file will contain entries similar to this:</p>
<pre class="brush: plain; title: ; notranslate">[1106/180706:ERROR:client_util.cc(231)] Could not get Chrome DLL version.
[1106/180706:ERROR:client_util.cc(268)] Could not find exported function RelaunchChromeBrowserWithNewCommandLineIfNeeded</pre>
<ol>
<li value="4">Copy the <strong>master_preferences</strong> file to the same location as <strong>chrome.exe</strong> to configure user profile defaults</li>
<li value="5">Disable browser auto updates</li>
<li value="6">Prevent the Sequencer from deleting the Chrome application folder once the monitoring phase is finished. To see why the Sequencer may process a reboot task that deletes the Chrome install folder read this article: <a href="http://blog.stealthpuppy.com/virtualisation/the-case-of-the-disappearing-application-during-sequencing/">The Case of the Disappearing Application during Sequencing</a>.</li>
</ol>
<p>Automating this process as much as possible will create a cleaner package and make it faster to re-create a new Chrome package if required. Here&#8217;s an example script that will perform the tasks above:</p>
<pre class="brush: plain; title: ; notranslate">START /WAIT GoogleChromeStandaloneEnterprise.MSI ALLUSERS=TRUE /QB-
RD /Q /S &quot;%ProgramFiles%\Google\Chrome\Application\15.0.874.106\Installer&quot;
ROBOCOPY &quot;%ProgramFiles%\Google\Chrome\Application\15.0.874.106&quot; &quot;%ProgramFiles%\Google\Chrome\Application&quot; /mov /e
COPY master_preferences &quot;%ProgramFiles%\Google\Chrome\Application\master_preferences
REG ADD HKLM\SOFTWARE\Policies\Google\Update /v AutoUpdateCheckPeriodMinutes /d 0 /t REG_SZ /f
REG ADD &quot;HKLM\System\CurrentControlSet\Control\Session Manager&quot; /v PendingFileRenameOperations /d &quot;&quot; /t REG_MULTI_SZ /f</pre>
<h3>Shortcuts</h3>
<p>For Chrome to run successfully under App-V there are a few additional command line parameters that will need to be added to the Chrome shortcut at the configure applications stage:</p>
<ul>
<li>&#8211;disable-custom-jumplist: Disables the Windows 7 Jump List, which doesn&#8217;t work once Chrome is virtualized any way</li>
<li>&#8211;no-default-browser-check: A further flag to prevent the browser from prompting the user to set it as default</li>
<li>&#8211;in-process-plugins: Run plugins inside the renderer process. May be optional, but <a href="http://www.viridisit.se/eng/blog/sequence-google-chrome-5-beta/" class="broken_link">has been required in the past when virtualizing Chrome</a></li>
<li>&#8211;no-sandbox: Not required; however I have found that extensions do not install if this parameter has not been added</li>
</ul>
<p>For the full list of command-line parameters for Chrome and Chromium see this page: <a href="http://peter.sh/experiments/chromium-command-line-switches/">List of Chromium Command Line Switches</a></p>
<p>With the sandbox running, you will see an error similar to this when attempting to add an extension:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="ChromeExtension" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/11/ChromeExtension.png" alt="ChromeExtension" width="511" height="215" border="0" /></p>
<p><strong>Note</strong>: Note that disabling the sandbox will reduce the browser security. I recommend testing the browser functionality and see if you can get away without disabling the sandbox.</p>
<p>The browser will notify you when the sandbox is disabled:</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/11/GoogleChromeNoSandbox.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="GoogleChromeNoSandbox" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/11/GoogleChromeNoSandbox_thumb.png" alt="GoogleChromeNoSandbox" width="660" height="114" border="0" /></a></p>
<h3>First Run Tasks and Primary Feature Block</h3>
<p>If the steps above have been followed for exclusions, installation and configuration of Chrome, there will be no first run tasks to complete. Additionally the resultant package will be reasonably small so there is no need to create the Primary Feature Block. Because you don&#8217;t need to complete first run tasks or create the Primary Feature Block, you could automate the entire end-to-end process of creating a Chrome package using <a href="http://softwaredeployment.wordpress.com/2011/04/15/app-v-4-6-sp1-command-line-interface/">the App-V Sequencer command-line interface</a>.</p>
<h3>Finally</h3>
<p>Save your package and deploy. With compression enabled, the package should be around 36Mb.</p>
<p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/sequencing-google-chrome-15/">Sequencing Google Chrome 15</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stealthpuppy.com/virtualisation/sequencing-google-chrome-15/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Case of the Disappearing Application during Sequencing</title>
		<link>http://blog.stealthpuppy.com/virtualisation/the-case-of-the-disappearing-application-during-sequencing/</link>
		<comments>http://blog.stealthpuppy.com/virtualisation/the-case-of-the-disappearing-application-during-sequencing/#comments</comments>
		<pubDate>Fri, 04 Nov 2011 10:52:42 +0000</pubDate>
		<dc:creator>Aaron Parker</dc:creator>
				<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[App-V]]></category>

		<guid isPermaLink="false">http://blog.stealthpuppy.com/?p=2452</guid>
		<description><![CDATA[In the official Microsoft TechNet forums, a question had been asked about sequencing Google Chrome and the poster states that when using the Chrome Enterprise Installer (a downloadable MSI for deployment inside an organisation), Chrome installs OK during the monitoring &#8230; <a href="http://blog.stealthpuppy.com/virtualisation/the-case-of-the-disappearing-application-during-sequencing/">Continue reading <span class="meta-nav">&#8594;</span></a><p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/the-case-of-the-disappearing-application-during-sequencing/">The Case of the Disappearing Application during Sequencing</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></description>
			<content:encoded><![CDATA[<p>In the official Microsoft TechNet forums, a question had been asked <a href="http://social.technet.microsoft.com/Forums/en-GB/appvgeneralsequencing/thread/1683399a-fcaa-48bb-a354-733a57e9fd4b">about sequencing Google Chrome</a> and the poster states that when using the <a href="http://www.google.com/chrome/eula.html?msi=true">Chrome Enterprise Installer</a> (a downloadable MSI for deployment inside an organisation), Chrome installs OK during the monitoring phase, but the folder is deleted at the end of monitoring and thus isn&#8217;t captured.</p>
<p>I thought that that behaviour was a little strange, so decided to test this out myself and to my surprise I could replicate the issue. To track down what was going on, I had to perform some troubleshooting.</p>
<p>I tested this on a virtual machine running Windows 7 SP1 x86 and could see from browsing to the Google installation folder (C:\Program Files\Google\Chrome) that the Application sub-folder was being removed after the monitoring phase was complete. To work out which process was deleting the folder, I&#8217;ve used <a href="http://technet.microsoft.com/en-us/sysinternals/bb896645">Process Monitor</a>. To see what was going on, I&#8217;ve reset my VM back to a clean snapshot, started the App-V Sequencer and Process Monitor and set a filter in Process Monitor for <strong>Path</strong> beginning with<strong> C:\Program Files\Google\Chrome\Application</strong> and then re-started the sequencing process.</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="ProcessMonitorFilter" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/11/ProcessMonitorFilter1.png" alt="ProcessMonitorFilter" width="639" height="370" border="0" /></p>
<p>With this filter, I was able to see that the process that was deleting the folder is the Sequencer itself (SFTSequencer.exe). Click the screenshot for a larger view.</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/11/ProcessMonitorDeletes.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="ProcessMonitorDeletes" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/11/ProcessMonitorDeletes_thumb.png" alt="ProcessMonitorDeletes" width="660" height="270" border="0" /></a></p>
<p>The next most obvious place to look then is the Sequencer log file, hopefully it will hold some information about why the folder is being deleted. To view the Sequencer log, browse to <strong>C:\Program Files\Microsoft Application Virtualization Sequencer\Logs</strong> and open <strong>sft-seq-log.txt</strong>.</p>
<p>In this file I can see a number of lines where the Sequencer is attempting to copy files that no longer exist:</p>
<pre class="brush: plain; title: ; notranslate">[11/03/2011 21:45:34 VRB VFSX] ...failed getting long path name for the file (C:\Program Files\Google\Chrome). Error: 2
[11/03/2011 21:45:34 VRB CORE] GetShortPathName failure using: C:\Program Files\Google\Chrome. Error is: 2
[11/03/2011 21:45:34 VRB CORE] Could not copy C:\Program Files\Google\Chrome to Q:\Google Chrome\VFS\CSIDL_PROGRAM_FILES\Google\Chrome.  Error is: 2.
[11/03/2011 21:45:34 VRB VFSX] ...failed getting long path name for the file (C:\Program Files\Google\Chrome\Application). Error: 3
[11/03/2011 21:45:34 VRB CORE] GetShortPathName failure using: C:\Program Files\Google\Chrome. Error is: 2
[11/03/2011 21:45:34 VRB CORE] Could not copy C:\Program Files\Google\Chrome to Q:\Google Chrome\VFS\CSIDL_PROGRAM_FILES\Google\Chrome.  Error is: 2.
[11/03/2011 21:45:34 VRB CORE] CopyResourceToVFS failed.
[11/03/2011 21:45:34 VRB VFSX] ...failed getting long path name for the file (C:\Program Files\Google\Chrome\Application\15.0.874.106). Error: 3
[11/03/2011 21:45:34 VRB CORE] GetShortPathName failure using: C:\Program Files\Google\Chrome. Error is: 2
[11/03/2011 21:45:34 VRB CORE] Could not copy C:\Program Files\Google\Chrome to Q:\Google Chrome\VFS\CSIDL_PROGRAM_FILES\Google\Chrome.  Error is: 2.
[11/03/2011 21:45:34 VRB CORE] CopyResourceToVFS failed.</pre>
<p>A few lines previous to these is this line:</p>
<pre class="brush: plain; title: ; notranslate">[11/03/2011 21:45:26 VRB RTSK] Reboot processing detected need to delete \??\C:\Program Files\Google\Chrome.</pre>
<p>The Sequencer is doing exactly what&#8217;s it being told to do – process a reboot task at the end of the monitoring phase and delete the application. Interestingly though, only the Application sub-folder is being deleted, not the entire Chrome parent folder.</p>
<p>To get an idea of why, I&#8217;ve used <a href="http://exodusdev.com/products/whyreboot">WhyReboot</a>, a fantastic free tool for finding out why a reboot has been requested. How many times have you suspected that an application installer asks to reboot Windows when it&#8217;s not actually needed?</p>
<p>Going through the sequencing process again and running WhyReboot before ending monitoring, gives me an idea of why the reboot has been requested:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="WhyReboot" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/11/WhyReboot1.png" alt="WhyReboot" width="609" height="381" border="0" /></p>
<p><strong>Note</strong>: I could also use <a href="http://technet.microsoft.com/en-us/sysinternals/bb897556">PendMoves</a> another Sysinternals tool to query this information as well.</p>
<p><a href="http://technet.microsoft.com/en-us/library/cc960241.aspx">PendingFileRenameOperations</a> is a Registry value that lists file system operations that must be processed during a reboot or shutdown. Generally these types of operations need to be processed on reboot because there are open file handles that are only released once the system shuts down.</p>
<p>So what&#8217;s writing this entry to PendingFileRenameOperations and why does this only happen during sequencing? To find out, I&#8217;ve reached for Process Monitor again, but unfortunately I haven&#8217;t been able find which process is writing to the PendingFileRenameOperations value, as Process Monitor didn&#8217;t find any RegSetValue operations.</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/11/ProcessMonitorPendingFileRenameOperations.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="ProcessMonitorPendingFileRenameOperations" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/11/ProcessMonitorPendingFileRenameOperations_thumb.png" alt="ProcessMonitorPendingFileRenameOperations" width="660" height="167" border="0" /></a></p>
<p>Circumstantial evidence points to SETUP.EXE, but without Process Monitor giving me more information I can&#8217;t say for sure. I do however, have a workaround that allow me to sequence Chrome – before finishing the monitoring phase, I clear the PendingFileRenameOperations data with this command:</p>
<pre class="brush: plain; title: ; notranslate">REG ADD &quot;HKLM\System\CurrentControlSet\Control\Session Manager&quot; /v PendingFileRenameOperations /d &quot;&quot; /t REG_MULTI_SZ /f</pre>
<p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/the-case-of-the-disappearing-application-during-sequencing/">The Case of the Disappearing Application during Sequencing</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stealthpuppy.com/virtualisation/the-case-of-the-disappearing-application-during-sequencing/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Delivering Office with App-V &#8211; The User Profile</title>
		<link>http://blog.stealthpuppy.com/virtualisation/delivering-office-with-app-v-the-user-profile/</link>
		<comments>http://blog.stealthpuppy.com/virtualisation/delivering-office-with-app-v-the-user-profile/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 15:30:00 +0000</pubDate>
		<dc:creator>Aaron Parker</dc:creator>
				<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[App-V]]></category>
		<category><![CDATA[Office]]></category>

		<guid isPermaLink="false">http://blog.stealthpuppy.com/virtualisation/delivering-office-with-app-v-the-user-profile/</guid>
		<description><![CDATA[If you follow any of the following guidance from Microsoft for sequencing Office with App-V: Prescriptive Guidance for Sequencing Office 2010 in App-V 4.6 SP1 Prescriptive guidance for sequencing Office 2010 using Microsoft App-V 4.5 or 4.6 Prescriptive guidance for &#8230; <a href="http://blog.stealthpuppy.com/virtualisation/delivering-office-with-app-v-the-user-profile/">Continue reading <span class="meta-nav">&#8594;</span></a><p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/delivering-office-with-app-v-the-user-profile/">Delivering Office with App-V &#8211; The User Profile</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></description>
			<content:encoded><![CDATA[<p>If you follow any of the following guidance from Microsoft for sequencing Office with App-V:</p>
<ul>
<li><a href="http://support.microsoft.com/kb/2627274">Prescriptive Guidance for Sequencing Office 2010 in App-V 4.6 SP1</a></li>
<li><a href="http://support.microsoft.com/kb/983462">Prescriptive guidance for sequencing Office 2010 using Microsoft App-V 4.5 or 4.6</a></li>
<li><a href="http://support.microsoft.com/kb/939796">Prescriptive guidance for sequencing 2007 Office programs in Microsoft App-V</a></li>
</ul>
<p>you will end up with a package that will include the following folders in the virtualized user profile (those folders captured during sequencing that will end up in the PKG file):</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="CSIDL_APPDATA" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/10/CSIDL_APPDATA.png" alt="CSIDL_APPDATA Folders" width="660" height="416" border="0" /></p>
<p>The folders captured under %CSIDL_APPDATA%\Microsoft are those folders that have been created during the first-run tasks – folders created when you launch an Office application and perform some standard tasks.</p>
<p>If you&#8217;re familiar with delivering applications with App-V (or any type of application virtualization platform) and managing the user environment, the portions of the user profile for an application will also be virtualized (unless you do something like <a href="http://blog.stealthpuppy.com/virtualisation/sequencing-mozilla-firefox-7/">this</a>) and will end up in the PKG file.</p>
<p>To see what this looks like at runtime, here&#8217;s a view of a profile before running Office applications that have been delivered by App-V:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="BeforeOffice" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/10/BeforeOffice.png" alt="BeforeOffice" width="660" height="331" border="0" /></p>
<p>After executing each of the Office applications in the package (I&#8217;ve used a package with Office 2010 Professional Plus with Visio and Project) and using just about every feature in those applications:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="AfterOffice" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/10/AfterOffice.png" alt="AfterOffice" width="660" height="410" border="0" /></p>
<p>There&#8217;s an additional 10 folders that have been created with 8 of those related to Office. This has left me with the majority of the Office user profile being virtualized and stored in the PKG file, whilst the rest is now stored on the real file system. This probably doesn&#8217;t have too much impact to the user if I&#8217;m using Roaming Profiles so that Office settings follow the user, but what happens for support?</p>
<p>The service desk now has to manage Office settings for the user in two places. If the aim is repair the Office settings by resetting the App-V package deleting the PKG file, a portion of the Office settings will remain. This is not an ideal solution – the profile for an application should virtualized entirely or not be virtualized at all.</p>
<p>Do that, you will need to add an additional step during sequencing – create those folders that during the monitoring phase. I do this via a script (that also installs and configures Office) that will create the folders listed in the table below. If you do that, the entire Office profile will now be virtualized.</p>

<table id="wp-table-reloaded-id-29-no-1" class="wp-table-reloaded wp-table-reloaded-id-29">
<thead>
	<tr class="row-1 odd">
		<th class="column-1">Folder</th>
	</tr>
</thead>
<tbody>
	<tr class="row-2 even">
		<td class="column-1">%APPDATA%\Microsoft\AddIns</td>
	</tr>
	<tr class="row-3 odd">
		<td class="column-1">%APPDATA%\Microsoft\Bibliography</td>
	</tr>
	<tr class="row-4 even">
		<td class="column-1">%APPDATA%\Microsoft\Clip Organizer</td>
	</tr>
	<tr class="row-5 odd">
		<td class="column-1">%APPDATA%\Microsoft\CLView</td>
	</tr>
	<tr class="row-6 even">
		<td class="column-1">%APPDATA%\Microsoft\Document Building Blocks</td>
	</tr>
	<tr class="row-7 odd">
		<td class="column-1">%APPDATA%\Microsoft\Excel</td>
	</tr>
	<tr class="row-8 even">
		<td class="column-1">%APPDATA%\Microsoft\Forms</td>
	</tr>
	<tr class="row-9 odd">
		<td class="column-1">%APPDATA%\Microsoft\InterConnect</td>
	</tr>
	<tr class="row-10 even">
		<td class="column-1">%APPDATA%\Microsoft\MS Project</td>
	</tr>
	<tr class="row-11 odd">
		<td class="column-1">%APPDATA%\Microsoft\Office</td>
	</tr>
	<tr class="row-12 even">
		<td class="column-1">%APPDATA%\Microsoft\OneNote</td>
	</tr>
	<tr class="row-13 odd">
		<td class="column-1">%APPDATA%\Microsoft\Outlook</td>
	</tr>
	<tr class="row-14 even">
		<td class="column-1">%APPDATA%\Microsoft\PowerPoint</td>
	</tr>
	<tr class="row-15 odd">
		<td class="column-1">%APPDATA%\Microsoft\Proof</td>
	</tr>
	<tr class="row-16 even">
		<td class="column-1">%APPDATA%\Microsoft\Publisher</td>
	</tr>
	<tr class="row-17 odd">
		<td class="column-1">%APPDATA%\Microsoft\Publisher Building Blocks</td>
	</tr>
	<tr class="row-18 even">
		<td class="column-1">%APPDATA%\Microsoft\Queries</td>
	</tr>
	<tr class="row-19 odd">
		<td class="column-1">%APPDATA%\Microsoft\QuickStyles</td>
	</tr>
	<tr class="row-20 even">
		<td class="column-1">%APPDATA%\Microsoft\SharePoint Designer</td>
	</tr>
	<tr class="row-21 odd">
		<td class="column-1">%APPDATA%\Microsoft\Signatures</td>
	</tr>
	<tr class="row-22 even">
		<td class="column-1">%APPDATA%\Microsoft\Stationery</td>
	</tr>
	<tr class="row-23 odd">
		<td class="column-1">%APPDATA%\Microsoft\Templates</td>
	</tr>
	<tr class="row-24 even">
		<td class="column-1">%APPDATA%\Microsoft\UProof</td>
	</tr>
	<tr class="row-25 odd">
		<td class="column-1">%APPDATA%\Microsoft\Word</td>
	</tr>
	<tr class="row-26 even">
		<td class="column-1">%APPDATA%\Microsoft\Media Catalog</td>
	</tr>
	<tr class="row-27 odd">
		<td class="column-1">%APPDATA%\Microsoft\Graph</td>
	</tr>
	<tr class="row-28 even">
		<td class="column-1">%APPDATA%\Microsoft\InfoPath</td>
	</tr>
	<tr class="row-29 odd">
		<td class="column-1">%APPDATA%\Microsoft\Themes</td>
	</tr>
	<tr class="row-30 even">
		<td class="column-1">%APPDATA%\Microsoft\OIS</td>
	</tr>
	<tr class="row-31 odd">
		<td class="column-1">%APPDATA%\Microsoft\VSTAHost</td>
	</tr>
	<tr class="row-32 even">
		<td class="column-1">%APPDATA%\Microsoft\VSCommon</td>
	</tr>
	<tr class="row-33 odd">
		<td class="column-1">%APPDATA%\Microsoft\VSTA</td>
	</tr>
	<tr class="row-34 even">
		<td class="column-1">%APPDATA%\Microsoft\Web Server Extensions</td>
	</tr>
	<tr class="row-35 odd">
		<td class="column-1">%APPDATA%\Microsoft\IMJP10</td>
	</tr>
	<tr class="row-36 even">
		<td class="column-1">%APPDATA%\Microsoft\IME12</td>
	</tr>
	<tr class="row-37 odd">
		<td class="column-1">%APPDATA%\Microsoft\IMJP8_1</td>
	</tr>
	<tr class="row-38 even">
		<td class="column-1">%APPDATA%\Microsoft\IMJP9_0</td>
	</tr>
	<tr class="row-39 odd">
		<td class="column-1">%APPDATA%\Microsoft\IMJP12</td>
	</tr>
</tbody>
</table>

<p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/delivering-office-with-app-v-the-user-profile/">Delivering Office with App-V &#8211; The User Profile</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stealthpuppy.com/virtualisation/delivering-office-with-app-v-the-user-profile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Delivering Office with App-V &#8211; The Deployment Kit and Product Key issues</title>
		<link>http://blog.stealthpuppy.com/virtualisation/product-key-issues-when-installing-the-microsoft-office-2010-deployment-kit-for-app-v/</link>
		<comments>http://blog.stealthpuppy.com/virtualisation/product-key-issues-when-installing-the-microsoft-office-2010-deployment-kit-for-app-v/#comments</comments>
		<pubDate>Mon, 03 Oct 2011 22:37:38 +0000</pubDate>
		<dc:creator>Aaron Parker</dc:creator>
				<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[App-V]]></category>
		<category><![CDATA[Office 2010]]></category>

		<guid isPermaLink="false">http://blog.stealthpuppy.com/virtualisation/product-key-issues-when-installing-the-microsoft-office-2010-deployment-kit-for-app-v/</guid>
		<description><![CDATA[When attempting to install the Office 2010 Deployment Kit for App-V using a MAK activation key, via the following command-line (or similar): You might receive the following error: This is due to the key used on the command line and &#8230; <a href="http://blog.stealthpuppy.com/virtualisation/product-key-issues-when-installing-the-microsoft-office-2010-deployment-kit-for-app-v/">Continue reading <span class="meta-nav">&#8594;</span></a><p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/product-key-issues-when-installing-the-microsoft-office-2010-deployment-kit-for-app-v/">Delivering Office with App-V &#8211; The Deployment Kit and Product Key issues</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></description>
			<content:encoded><![CDATA[<p>When attempting to install the <a href="http://www.microsoft.com/download/en/details.aspx?id=10386">Office 2010 Deployment Kit for App-V</a> using a MAK activation key, via the following command-line (or similar):</p>
<pre class="brush: plain; title: ; notranslate">MSIEXEC /I OffVirt.msi PIDKEYS=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX USEROPERATIONS=1</pre>
<p>You might receive the following error:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Office-AppV-Activation" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/10/Office-AppV-Activation.png" alt="The product key you entered cannot be used on this machine. This is most likely due to previous Office 2010 trials being installed. (System error: -1073418219)" width="463" height="234" border="0" /></p>
<p>This is due to the key used on the command line and not actually any pre-existing component of Office, as the message suggests. If you are not using <a href="http://technet.microsoft.com/en-us/office/ee691939">a MAK key</a> – that is a key available for a volume license deployment of Office, then the installation will result in the error above. The only way to fix this issue is to ensure you are using a MAK or KMS key for Office 2010.</p>
<p>Keys from Retail or boxed media, or a TechNet or MSDN subscription cannot be used for deploying Office 2010 via App-V. Making it particularly difficult for those looking to get experience virtualizing Office 2010 with App-V without purchasing a volume license.</p>
<p>(Neither the Office or App-V teams at Microsoft have any control over keys available on TechNet or MSDN)</p>
<p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/product-key-issues-when-installing-the-microsoft-office-2010-deployment-kit-for-app-v/">Delivering Office with App-V &#8211; The Deployment Kit and Product Key issues</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stealthpuppy.com/virtualisation/product-key-issues-when-installing-the-microsoft-office-2010-deployment-kit-for-app-v/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sequencing Mozilla Firefox 7</title>
		<link>http://blog.stealthpuppy.com/virtualisation/sequencing-mozilla-firefox-7/</link>
		<comments>http://blog.stealthpuppy.com/virtualisation/sequencing-mozilla-firefox-7/#comments</comments>
		<pubDate>Thu, 29 Sep 2011 06:24:50 +0000</pubDate>
		<dc:creator>Aaron Parker</dc:creator>
				<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[App-V]]></category>
		<category><![CDATA[Firefox]]></category>

		<guid isPermaLink="false">http://blog.stealthpuppy.com/?p=2385</guid>
		<description><![CDATA[It&#8217;s easy to virtualize Firefox with App-V; however getting it right takes a little more effort. Here&#8217;s how to successfully sequence Mozilla Firefox 7.x. What you lose by virtualizing Firefox Virtualizing Firefox with App-V will isolate the application from the &#8230; <a href="http://blog.stealthpuppy.com/virtualisation/sequencing-mozilla-firefox-7/">Continue reading <span class="meta-nav">&#8594;</span></a><p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/sequencing-mozilla-firefox-7/">Sequencing Mozilla Firefox 7</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.stealthpuppy.com/wp-content/uploads/2011/06/062611_1120_SequencingM1.png" alt="" align="right" />It&#8217;s easy to virtualize <a href="http://blog.stealthpuppy.com/virtualisation/sequencing-mozilla-firefox-5/">Firefox with App-V</a>; however getting it right takes a little more effort. Here&#8217;s how to successfully sequence <a href="http://www.mozilla.com/en-US/firefox/">Mozilla Firefox 7.x</a>.</p>
<h3>What you lose by virtualizing Firefox</h3>
<p>Virtualizing Firefox with App-V will isolate the application from the OS, so the following features will not be available once Firefox has been sequenced:</p>
<ul>
<li>Firefox Jump Lists in the Start Menu and Taskbar</li>
<li>The ability set the browser as default</li>
</ul>
<h3>Managing the Firefox profile – virtualize or not?</h3>
<p><a href="http://kb.mozillazine.org/Profile_folder_-_Firefox">Firefox stores preferences, extensions and other user data</a> in:</p>
<ul>
<li>%APPDATA%\Mozilla (preferences, bookmarks etc.); and</li>
<li>%LOCALAPPDATA%\Mozilla (browser cache)</li>
</ul>
<p>The default behaviour of the App-V Sequencer is to exclude %LOCALAPPDATA% &#8211; this is a good thing and I don&#8217;t recommend removing this exclusion.</p>
<p>%APPDATA% will be included by default and whether you leave this location included in the package will depend on your specific deployment requirements; however my recommendation is to exclude this location by adding <em>%CSIDL_APPDATA%\Mozilla</em> to the exclusion list in your sequence. On the client, Firefox will then create a new profile in the real file system when the user starts the browser for the first time.</p>
<p>There are several reasons why this approach is a good idea:</p>
<ul>
<li>Some of the configuration files within the Firefox profile include hard-codes paths – challenging if your App-V virtual drive changes between clients</li>
<li>Virtualizing the profile increases the complexity of upgrading Firefox packages especially challenging given <a href="http://www.zdnet.com/blog/bott/mozilla-to-enterprise-customers-drop-dead/3497">Mozilla&#8217;s new approach to Firefox releases</a>. By storing the Firefox profile on the real file system, Firefox can be deployed via completely unrelated packages – no need to create upgrade versions</li>
<li>Users can potentially create multiple Firefox profiles, with each stored in the users&#8217; PKG file. The minimum size for a new Firefox profile is 12Mb – the PKG file will grow by 12Mb for each new Firefox profile created</li>
</ul>
<p>By excluding %APPDATA% and not virtualizing the user profile you will gain some flexibility with your Firefox deployment.</p>
<h3>Configuring Firefox Defaults</h3>
<p>If a Firefox profile is not virtualized within the package any options set during the monitoring phase won&#8217;t be captured. Fortunately Firefox can be configured with defaults for any new profile so that it will contain your required configuration options.</p>
<p>Mozilla has made it easy to deploy custom default settings and preferences – by adding files to <em>%ProgramFiles%\Mozilla Firefox\defaults\profile</em>, new Firefox profiles will pick up a copy of these files when the profile is created.</p>
<p>I will walk through adding a couple of files to this location for to ensure that any new Firefox profile receives the required ; however you can find more detailed documentation on this feature in the following articles:</p>
<ul>
<li><a href="http://www.binaryturf.com/enterprise-build-firefox-deployment/">Enterprise Build Of Firefox For Deployment</a></li>
</ul>
<h3>Firefox features to disable</h3>
<p>There are a couple of features that should be disabled when running Firefox under App-V:</p>
<ul>
<li>Automatic updates for Firefox – <em>Options / Advanced / Update &#8211; Automatically check for updates to: Firefox</em>. Firefox updates should be delivered via new App-V packages. Updates for Add-ons and Search Engines should be OK as these are written to the user profile</li>
<li>Default browser check – <em>Options / Advanced / General &#8211; Always check to see if Firefox is the default browser on startup</em>. Once Firefox is isolated from the OS, the user won&#8217;t be able to make it the default browser</li>
</ul>
<p><a href="http://kb.mozillazine.org/User.js_file"><em>user.js</em></a> is used to configure Firefox options and enforce them and <a href="http://www-archive.mozilla.org/unix/customizing.html"><em>UserChrome.css</em></a> is used to remove those options from the user interface.</p>
<p>Available below is a copy of <em>user.js</em> that disables automatic updates of Firefox and checking whether it is the default browser:</p>
<p class="download"><img src="http://blog.stealthpuppy.com/images/downloads/green-download-arrow-grey-line.png" alt="Firefox user.js"/>  <a href="http://blog.stealthpuppy.com/wp-content/plugins/download-monitor/download.php?id=44" title="Downloaded 1427 times">Firefox user.js</a></p>
<p>Here is a copy of <em>userChrome.css</em> that will remove updates and default browser options from user interface:</p>
<p class="download"><img src="http://blog.stealthpuppy.com/images/downloads/green-download-arrow-grey-line.png" alt="Firefox userChrome.css"/>  <a href="http://blog.stealthpuppy.com/wp-content/plugins/download-monitor/download.php?id=45" title="Downloaded 1159 times">Firefox userChrome.css</a></p>
<h3>Sequencing Platform</h3>
<p>The Firefox version available from Mozilla is an x86 application (x64 build are available from other sources), so I recommend sequencing Firefox on Windows 7 x86 virtual machine even though you may be deploying to 64-bit Windows.</p>
<p>I&#8217;ve used a VFS install, so I have configured a second virtual hard disk to host the Q: drive. If you would prefer a MNT install just change the install folder when installing Firefox.</p>
<h3>Sequencer Configuration</h3>
<p>Before Sequencing, add the following exclusions:</p>
<ul>
<li>%CSIDL_APPDATA%\Mozilla</li>
<li>%CSIDL_COMMON_APPDATA%\Microsoft\RAC</li>
<li>\REGISTRY\USER\%SFT_SID%\Software\Microsoft\Windows\CurrentVersion\Internet Settings</li>
</ul>
<p>If you are adding Adobe Flash Player to the package, add these exclusions as well:</p>
<ul>
<li>%CSIDL_APPDATA%\Adobe</li>
<li>%CSIDL_APPDATA%\Macromedia</li>
<li>%CSIDL_WINDOWS%\Installer</li>
</ul>
<p>I have included these in a Package Template for Firefox that you can download from here:</p>
<p class="download"><img src="http://blog.stealthpuppy.com/images/downloads/green-download-arrow-grey-line.png" alt="App-V Package Template for Firefox"/>  <a href="http://blog.stealthpuppy.com/wp-content/plugins/download-monitor/download.php?id=46" title="Downloaded 1480 times">App-V Package Template for Firefox</a></p>
<h3>Installing Firefox</h3>
<p>Download the <a href="http://www.mozilla.com/firefox/all.html">Firefox installer in your target language from the Mozilla site</a>. Sequencing Firefox will require the following steps:</p>
<ul>
<li>Install Firefox</li>
<li>Configure profile defaults</li>
<li>Optionally add global add-ons and install plug-ins such as Adobe Flash Player</li>
</ul>
<p>Automating this process as much as possible will create a cleaner package and make it faster to re-create a new Firefox package if required.</p>
<ul>
<li>Mozilla <a href="https://wiki.mozilla.org/Installer:Command_Line_Arguments">Firefox installer command line arguments</a> – use the INI file approach to control where Firefox is installed and to prevent the addition of a desktop shortcut, if required</li>
<li>After installing Firefox, copy <em>user.js</em> to <em>%ProgramFiles%\Mozilla Firefox\defaults\profile</em></li>
<li>Copy <em>userChrome.css</em> to <em>%ProgramFiles%\Mozilla Firefox\defaults\profile\chrome</em></li>
<li>Firefox also allows you to <a href="http://kb.mozillazine.org/Installing_extensions">add global add-ons by adding them to the Extensions sub-folder</a> of the Firefox installation folder</li>
<li>If you are including Adobe Flash player in the package, be sure to <a href="http://kb2.adobe.com/cps/167/16701594.html">disable the auto-update notification</a></li>
</ul>
<p>For an example script that will automate the install and configuration of Firefox, see the script below:</p>
<p class="download"><img src="http://blog.stealthpuppy.com/images/downloads/green-download-arrow-grey-line.png" alt="Firefox 7 Install Script for App-V"/>  <a href="http://blog.stealthpuppy.com/wp-content/plugins/download-monitor/download.php?id=50" title="Downloaded 274 times">Firefox 7 Install Script for App-V</a></p>
<h3>Shortcuts</h3>
<p>If the monitoring phase was successful the Sequencer should create a single shortcut for Firefox. If you are including Flash 10.4 or above in the package, add an additional shortcut for the Flash Player Control Panel applet using &#8220;C:\Windows\System32\FlashPlayerCPLApp.cpl&#8221; as the target.</p>
<h3>First Run Tasks and Primary Feature Block</h3>
<p>If the steps above have been followed for exclusions, installation and configuration of Firefox, there will be no first run tasks to complete. Additionally the resultant package will be reasonably small so there is no need to create the Primary Feature Block.</p>
<p>Because you don&#8217;t need to complete first run tasks or create the Primary Feature Block, you could automate the entire end-to-end process of creating a Firefox package using <a href="http://softwaredeployment.wordpress.com/2011/04/15/app-v-4-6-sp1-command-line-interface/">the App-V Sequencer command-line interface</a>.</p>
<h3>Finally</h3>
<p>Save your package and deploy. With compression enabled, the package should be around 22Mb.</p>
<p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/sequencing-mozilla-firefox-7/">Sequencing Mozilla Firefox 7</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stealthpuppy.com/virtualisation/sequencing-mozilla-firefox-7/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Reducing the size of App-V packages</title>
		<link>http://blog.stealthpuppy.com/virtualisation/reducing-the-size-of-app-v-packages/</link>
		<comments>http://blog.stealthpuppy.com/virtualisation/reducing-the-size-of-app-v-packages/#comments</comments>
		<pubDate>Sun, 25 Sep 2011 21:30:07 +0000</pubDate>
		<dc:creator>Aaron Parker</dc:creator>
				<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[App-V]]></category>

		<guid isPermaLink="false">http://blog.stealthpuppy.com/virtualisation/reducing-the-size-of-app-v-packages/</guid>
		<description><![CDATA[If you&#8217;re looking to reduce the size of your App-V packages, you can compress them when saving them in the Sequencer; however if that content in the package doesn&#8217;t actually compress that well, you may not save as much space &#8230; <a href="http://blog.stealthpuppy.com/virtualisation/reducing-the-size-of-app-v-packages/">Continue reading <span class="meta-nav">&#8594;</span></a><p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/reducing-the-size-of-app-v-packages/">Reducing the size of App-V packages</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re looking to reduce the size of your App-V packages, you can compress them when saving them in the Sequencer; however if that content in the package doesn&#8217;t actually compress that well, you may not save as much space as you might expect. Here a quick win to reduce the size of your packages.</p>
<p>In this post I&#8217;m using Office Professional 2010 as an example, where I&#8217;ve reduce the size of the package from potentially 2.8GB (uncompressed) to 606Mb (compressed). This screenshot shows a default install left uncompressed:</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/09/Package-Uncompressed.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Package-Uncompressed" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/09/Package-Uncompressed_thumb.png" alt="Package-Uncompressed" width="377" height="281" border="0" /></a></p>
<p>The default Office installation caches a copy of the Office installation files in the <em>C:\Windows\Installer</em> and the <em><a href="http://support.microsoft.com/kb/825933">MSOCache</a></em> folders. These folders are generally required when installing Office so that repair operations can take place and features can be added post-installation. However when <a href="http://support.microsoft.com/kb/983462">virtualizing Office</a>, we won&#8217;t want either of those actions taking place – we want consistency and predictability. So when capturing Office with the Sequencer, we configure setup and run applications to ensure they don&#8217;t occur.</p>
<p>This then leaves us with a large amount of data in the package that will never be used at execution time, but will most likely still be streamed to each client – waste of disk space and bandwidth. Only when it comes time to update the package do we need those folders.</p>
<p>So instead of leaving them in the package, we could exclude them from the sequencer and copy them out of the Sequencing machine and save them with the package. The process would look something like this:</p>
<ol>
<li>Add an exclusion to your package for <em>%CSIDL_WINDOWS%\Installer</em> and <em>C:\MSOCache</em> or <em>%SFT_MNT%\MSOCache</em> if you are sequencing Office</li>
<li>Sequence your application and save the package with compression enabled</li>
<li>Save the package to the Content share along with a copy of C:\Windows\Installer and MSOCache, if you are sequencing Office</li>
<li>When it comes time to update the package, copy the folders back into the sequencing machine before starting the sequencing process</li>
<li>Repeat the process once you&#8217;ve saved the updated package</li>
</ol>
<p>The same Office 2010 package is now 606Mb &#8211; 22% of the size of the original package:</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/09/Office2010-After.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Office2010-After" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/09/Office2010-After_thumb.png" alt="Office2010-After" width="377" height="282" border="0" /></a></p>
<p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/reducing-the-size-of-app-v-packages/">Reducing the size of App-V packages</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stealthpuppy.com/virtualisation/reducing-the-size-of-app-v-packages/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Is it legal to virtualize Apple iTunes?</title>
		<link>http://blog.stealthpuppy.com/virtualisation/is-it-legal-to-virtualize-apple-itunes/</link>
		<comments>http://blog.stealthpuppy.com/virtualisation/is-it-legal-to-virtualize-apple-itunes/#comments</comments>
		<pubDate>Fri, 16 Sep 2011 10:55:23 +0000</pubDate>
		<dc:creator>Aaron Parker</dc:creator>
				<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[App-V]]></category>
		<category><![CDATA[iTunes]]></category>

		<guid isPermaLink="false">http://blog.stealthpuppy.com/?p=2366</guid>
		<description><![CDATA[Preface: I don&#8217;t speak legalese and this post is based on my own intepretation of the iTunes distribution agreement. I&#8217;ve previously talked about virtualizing Apple iTunes with App-V; however after taking a look through the distribution agreements that you&#8217;re supposed &#8230; <a href="http://blog.stealthpuppy.com/virtualisation/is-it-legal-to-virtualize-apple-itunes/">Continue reading <span class="meta-nav">&#8594;</span></a><p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/is-it-legal-to-virtualize-apple-itunes/">Is it legal to virtualize Apple iTunes?</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></description>
			<content:encoded><![CDATA[<p><em>Preface</em>: I don&#8217;t speak legalese and this post is based on my own intepretation of the iTunes distribution agreement.</p>
<p>I&#8217;ve previously talked about <a href="http://blog.stealthpuppy.com/virtualisation/sequencing-apple-itunes-10/">virtualizing Apple iTunes with App-V</a>; however after taking a look through the distribution agreements that you&#8217;re supposed to accept, I&#8217;m under the impression that doing so doesn&#8217;t adhere to the agreement.</p>
<p>If you&#8217;re looking to distribute iTunes and QuickTime in your environment, Apple requires that you <a href="http://developer.apple.com/softwarelicensing/agreements/itunes.html">obtain an agreement to do so</a>. There are two agreements &#8211; one for universities and another for corporations (uni&#8217;s actually have 2 &#8211; one for <a href="http://developer.apple.com/softwarelicensing/agreements/pdf/itns.qt.univ.cd.pdf">CD distribution</a>, another for <a href="http://developer.apple.com/softwarelicensing/agreements/pdf/itunesqt.univ.server.pdf">distribution from a server</a>).</p>
<p>Here&#8217;s a quote from the university CD distribution agreement:</p>
<blockquote><p>Licensee may not modify or alter the Software, or the Apple End User Agreement that accompanies the Software. The Software must be installed as part of the default installation of the Bundle without any additional action or selection required by the End User, using the installer provided by Apple. Installation must include all files as installed by such installer and Licensee must not interfere with the installer&#8217;s placement of the software alias icons on the desktop.</p></blockquote>
<p>And here&#8217;s a quote from the corporate site license:</p>
<blockquote><p>Licensee may not modify or alter the Software, the Apple installer or the Apple End User Agreement that accompanies the Software as provided by Apple to Licensee. As a condition of the rights granted herein, each installation of the iTunes and QuickTime Software must result in the iTunes and QuickTime Player icon residing on the desktop of each authorised user.</p></blockquote>
<p>Based on <a href="http://blog.stealthpuppy.com/virtualisation/sequencing-apple-itunes-10/">my recipe for iTunes</a>, I understand the process of virtualising the application to be breaking the agreement because we are doing a few things:</p>
<ul>
<li>Extracting the MSI&#8217;s from the iTunes installer &#8211; breaking the Apple installer</li>
<li>Accepting the End User Agreement during the monitoring phase</li>
<li>Probably not delivering the iTunes and QuickTime shortcuts to the desktop</li>
</ul>
<p>I could configure my package such that the user still needs to accept the license agreement, but in a corporate environment do you really want to have to let users do that?</p>
<p>I could also deliver the iTunes and QuickTime shortcuts to the user&#8217;s desktop, but most users already have enough shortcuts and files on their desktops, I&#8217;m not going to force more on them. Forcing desktop shortcuts on users isn&#8217;t great user experience and quite frankly, Apple&#8217;s not going to dictate the user experience in my environment.</p>
<p>But ultimately it&#8217;s point 1 that has me concerned &#8211; if you interpret the agreement to the letter, then it sounds like application virtualization is breaking that agreement.</p>
<p>What do you think?</p>
<p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/is-it-legal-to-virtualize-apple-itunes/">Is it legal to virtualize Apple iTunes?</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stealthpuppy.com/virtualisation/is-it-legal-to-virtualize-apple-itunes/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Microsoft Office Click-to-Run for Office 2010 KB articles help explain how Office runs under App-V</title>
		<link>http://blog.stealthpuppy.com/virtualisation/microsoft-office-click-to-run-for-office-2010-kb-articles-help-explain-how-office-runs-under-app-v/</link>
		<comments>http://blog.stealthpuppy.com/virtualisation/microsoft-office-click-to-run-for-office-2010-kb-articles-help-explain-how-office-runs-under-app-v/#comments</comments>
		<pubDate>Sun, 07 Aug 2011 21:13:05 +0000</pubDate>
		<dc:creator>Aaron Parker</dc:creator>
				<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[App-V]]></category>
		<category><![CDATA[Office]]></category>

		<guid isPermaLink="false">http://blog.stealthpuppy.com/virtualisation/microsoft-office-click-to-run-for-office-2010-kb-articles-help-explain-how-office-runs-under-app-v/</guid>
		<description><![CDATA[A number of knowledgebase articles have been updated recently that are interesting reading if you&#8217;re looking to understand how Microsoft Office works under App-V, and the limitations if you deploy Office in this method. If you&#8217;re already not aware, Office &#8230; <a href="http://blog.stealthpuppy.com/virtualisation/microsoft-office-click-to-run-for-office-2010-kb-articles-help-explain-how-office-runs-under-app-v/">Continue reading <span class="meta-nav">&#8594;</span></a><p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/microsoft-office-click-to-run-for-office-2010-kb-articles-help-explain-how-office-runs-under-app-v/">Microsoft Office Click-to-Run for Office 2010 KB articles help explain how Office runs under App-V</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></description>
			<content:encoded><![CDATA[<p>A number of knowledgebase articles have been updated recently that are interesting reading if you&#8217;re looking to understand how Microsoft Office works under App-V, and the limitations if you deploy Office in this method. If you&#8217;re already not aware, <a href="http://office.microsoft.com/en-us/products/what-is-click-to-run-HA101868855.aspx">Office delivered by Click-to-Run is actually a modified version of App-V under the hood</a>. There&#8217;s also <a href="An overview of Microsoft Office Click-to-Run for Office 2010" class="broken_link">an overview of Microsoft Office Click-to-Run for Office 2010</a> worth reading.</p>
<p>Articles that detail limitations and workarounds that have been updated recently include:</p>
<ul>
<li><a href="http://office2010.microsoft.com/en-us/excel-help/click-to-run-known-issues-HA101850565.aspx">Click-to-Run: Known issues</a></li>
<li><a href="http://support.microsoft.com/kb/983266/">In Office Click-to-Run 2010, some functionality is unavailable, or an Office add-in does not run correctly</a></li>
<li><a href="http://support.microsoft.com/kb/982259/">When Office Click-to-Run 2010 is installed, Microsoft Word is not listed as an application when you right-click an .htm file or an .mhtml file and then click &#8220;Open with&#8221;</a></li>
<li><a href="http://support.microsoft.com/kb/982430/">You cannot use the &#8220;send to&#8221; feature of an external application together with Office Click-to-Run for Outlook 2010</a></li>
<li><a href="http://support.microsoft.com/kb/982431/">Office 2010 Click-to-Run compatibility with add-ins</a></li>
<li><a href="http://support.microsoft.com/kb/982757/">&#8220;This product must be installed to Q:&#8221; error message when you try to install Office 2010 that is delivered by Click-to-Run</a></li>
<li><a href="http://support.microsoft.com/kb/982432/">How to use command-line switches in Office Click-to-Run for Office 2010</a></li>
</ul>
<p>There&#8217;s even an article on getting into the virtual environment (which is good for a laugh):</p>
<ul>
<li><a href="http://support.microsoft.com/kb/982429/">How to access the registry information of Office 2010 that is delivered by Click-to-Run</a></li>
</ul>
<p>For even more articles on Click-to-Run, start with <a href="http://support.microsoft.com/search/default.aspx?query=Click-to-Run&amp;catalog=LCID%3D1033&amp;mode=r">this search on the Microsoft Support site</a>.</p>
<p>Although some of the same limitation don&#8217;t apply if you are creating your own App-V package for Office, these articles are still worthwhile resources.</p>
<p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/microsoft-office-click-to-run-for-office-2010-kb-articles-help-explain-how-office-runs-under-app-v/">Microsoft Office Click-to-Run for Office 2010 KB articles help explain how Office runs under App-V</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stealthpuppy.com/virtualisation/microsoft-office-click-to-run-for-office-2010-kb-articles-help-explain-how-office-runs-under-app-v/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Disable Hibernation before enabling Hyper-V on a laptop</title>
		<link>http://blog.stealthpuppy.com/virtualisation/disable-hibernation-before-enabling-hyper-v-on-a-laptop/</link>
		<comments>http://blog.stealthpuppy.com/virtualisation/disable-hibernation-before-enabling-hyper-v-on-a-laptop/#comments</comments>
		<pubDate>Thu, 14 Jul 2011 22:49:31 +0000</pubDate>
		<dc:creator>Aaron Parker</dc:creator>
				<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[Hyper-V]]></category>

		<guid isPermaLink="false">http://blog.stealthpuppy.com/virtualisation/disable-hibernation-before-enabling-hyper-v-on-a-laptop/</guid>
		<description><![CDATA[If you enable Hyper-V on a laptop (or any other machine where hibernation is enabled automatically) you’ll find that you won’t be able to delete the hibernation file (hiberfil.sys).&#160; Although hibernation is effectively disabled, the file remains in use once &#8230; <a href="http://blog.stealthpuppy.com/virtualisation/disable-hibernation-before-enabling-hyper-v-on-a-laptop/">Continue reading <span class="meta-nav">&#8594;</span></a><p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/disable-hibernation-before-enabling-hyper-v-on-a-laptop/">Disable Hibernation before enabling Hyper-V on a laptop</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></description>
			<content:encoded><![CDATA[<p>If you enable <a href="http://blog.drtritsch.com/?p=165">Hyper-V on a laptop</a> (or any other machine where hibernation is enabled automatically) you’ll find that you won’t be able to delete the hibernation file (hiberfil.sys).&#160; Although hibernation is effectively disabled, the file remains in use once Windows has booted:</p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="delete-hiberfilesys" border="0" alt="delete-hiberfilesys" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/07/delete-hiberfilesys.png" width="660" height="365" /></p>
<p>Additionally, in an effort to remove the lock on the file, you can’t use <a href="http://technet.microsoft.com/en-us/library/cc748940(WS.10).aspx">POWERCFG</a> to disable hibernation after Hyper-V is installed:</p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="powercfg" border="0" alt="powercfg" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/07/powercfg.png" width="660" height="277" /></p>
<p>While there’s <a href="http://blogs.technet.com/b/doxley/archive/2008/09/05/getting-some-sleep.aspx">a work-around to get hibernation working</a>,&#160; there’s not much to gain with hibernation enabled on <a href="http://www.ocztechnology.com/ocz-vertex-3-sata-iii-2-5-ssd.html">a fast SSD drive</a>. Especially when dual-booting puts space at a premium and the hibernation file is 8GB.</p>
<p>Just remember to disable hibernation before enabling Hyper-V with:</p>
<p>
<pre class="brush: plain; title: ; notranslate">POWERCFG -H OFF</pre></p>
<p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/disable-hibernation-before-enabling-hyper-v-on-a-laptop/">Disable Hibernation before enabling Hyper-V on a laptop</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stealthpuppy.com/virtualisation/disable-hibernation-before-enabling-hyper-v-on-a-laptop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sequencing Mozilla Firefox 5</title>
		<link>http://blog.stealthpuppy.com/virtualisation/sequencing-mozilla-firefox-5/</link>
		<comments>http://blog.stealthpuppy.com/virtualisation/sequencing-mozilla-firefox-5/#comments</comments>
		<pubDate>Sun, 26 Jun 2011 11:20:26 +0000</pubDate>
		<dc:creator>Aaron Parker</dc:creator>
				<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[App-V]]></category>
		<category><![CDATA[Firefox]]></category>

		<guid isPermaLink="false">http://blog.stealthpuppy.com/?p=2331</guid>
		<description><![CDATA[It&#8217;s easy to virtualize Firefox with App-V; however getting it right takes a little more effort. Here&#8217;s how to successfully sequence Mozilla Firefox 5.x. What you lose by virtualizing Firefox Virtualizing Firefox with App-V will isolate the application from the &#8230; <a href="http://blog.stealthpuppy.com/virtualisation/sequencing-mozilla-firefox-5/">Continue reading <span class="meta-nav">&#8594;</span></a><p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/sequencing-mozilla-firefox-5/">Sequencing Mozilla Firefox 5</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.stealthpuppy.com/wp-content/uploads/2011/06/062611_1120_SequencingM1.png" alt="" align="right" />It&#8217;s easy to virtualize Firefox with App-V; however getting it right takes a little more effort. Here&#8217;s how to successfully sequence <a href="http://www.mozilla.com/en-US/firefox/">Mozilla Firefox 5.x</a>.</p>
<h3>What you lose by virtualizing Firefox</h3>
<p>Virtualizing Firefox with App-V will isolate the application from the OS, so the following features will not be available once Firefox has been sequenced:</p>
<ul>
<li>Firefox Jump Lists in the Start Menu and Taskbar</li>
<li>The ability set the browser as default</li>
</ul>
<h3>Managing the Firefox profile – virtualize or not?</h3>
<p><a href="http://kb.mozillazine.org/Profile_folder_-_Firefox">Firefox stores preferences, extensions and other user data</a> in:</p>
<ul>
<li>%APPDATA%\Mozilla (preferences, bookmarks etc.); and</li>
<li>%LOCALAPPDATA%\Mozilla (browser cache)</li>
</ul>
<p>The default behaviour of the App-V Sequencer is to exclude %LOCALAPPDATA% &#8211; this is a good thing and I don&#8217;t recommend removing this exclusion.</p>
<p>%APPDATA% will be included by default and whether you leave this location included in the package will depend on your specific deployment requirements; however my recommendation is to exclude this location by adding <em>%CSIDL_APPDATA%\Mozilla</em> to the exclusion list in your sequence. On the client, Firefox will then create a new profile in the real file system when the user starts the browser for the first time.</p>
<p>There are several reasons why this approach is a good idea:</p>
<ul>
<li>Some of the configuration files within the Firefox profile include hard-codes paths – challenging if your App-V virtual drive changes between clients</li>
<li>Virtualizing the profile increases the complexity of upgrading Firefox packages especially challenging given <a href="http://www.zdnet.com/blog/bott/mozilla-to-enterprise-customers-drop-dead/3497">Mozilla&#8217;s new approach to Firefox releases</a>. By storing the Firefox profile on the real file system, Firefox can be deployed via completely unrelated packages – no need to create upgrade versions</li>
<li>Users can potentially create multiple Firefox profiles, with each stored in the users&#8217; PKG file. The minimum size for a new Firefox profile is 12Mb – the PKG file will grow by 12Mb for each new Firefox profile created</li>
</ul>
<p>By excluding %APPDATA% and not virtualizing the user profile you will gain some flexibility with your Firefox deployment.</p>
<h3>Configuring Firefox Defaults</h3>
<p>If a Firefox profile is not virtualized within the package any options set during the monitoring phase won&#8217;t be captured. Fortunately Firefox can be configured with defaults for any new profile so that it will contain your required configuration options.</p>
<p>Mozilla has made it easy to deploy custom default settings and preferences – by adding files to <em>%ProgramFiles%\Mozilla Firefox\defaults\profile</em>, new Firefox profiles will pick up a copy of these files when the profile is created.</p>
<p>I will walk through adding a couple of files to this location for to ensure that any new Firefox profile receives the required ; however you can find more detailed documentation on this feature in the following articles:</p>
<ul>
<li><a href="http://www.binaryturf.com/enterprise-build-firefox-deployment/">Enterprise Build Of Firefox For Deployment</a></li>
</ul>
<h3>Firefox features to disable</h3>
<p>There are a couple of features that should be disabled when running Firefox under App-V:</p>
<ul>
<li>Automatic updates for Firefox – <em>Options / Advanced / Update &#8211; Automatically check for updates to: Firefox</em>. Firefox updates should be delivered via new App-V packages. Updates for Add-ons and Search Engines should be OK as these are written to the user profile</li>
<li>Default browser check – <em>Options / Advanced / General &#8211; Always check to see if Firefox is the default browser on startup</em>. Once Firefox is isolated from the OS, the user won&#8217;t be able to make it the default browser</li>
</ul>
<p><a href="http://kb.mozillazine.org/User.js_file"><em>user.js</em></a> is used to configure Firefox options and enforce them and <a href="http://www-archive.mozilla.org/unix/customizing.html"><em>UserChrome.css</em></a> is used to remove those options from the user interface.</p>
<p>Available below is a copy of <em>user.js</em> that disables automatic updates of Firefox and checking whether it is the default browser:</p>
<p class="download"><img src="http://blog.stealthpuppy.com/images/downloads/green-download-arrow-grey-line.png" alt="Firefox user.js"/>  <a href="http://blog.stealthpuppy.com/wp-content/plugins/download-monitor/download.php?id=44" title="Downloaded 1427 times">Firefox user.js</a></p>
<p>Here is a copy of <em>userChrome.css</em> that will remove updates and default browser options from user interface:</p>
<p class="download"><img src="http://blog.stealthpuppy.com/images/downloads/green-download-arrow-grey-line.png" alt="Firefox userChrome.css"/>  <a href="http://blog.stealthpuppy.com/wp-content/plugins/download-monitor/download.php?id=45" title="Downloaded 1159 times">Firefox userChrome.css</a></p>
<h3>Sequencing Platform</h3>
<p>The Firefox version available from Mozilla is an x86 application (x64 build are available from other sources), so I recommend sequencing Firefox on Windows 7 x86 virtual machine even though you may be deploying to 64-bit Windows.</p>
<p>I&#8217;ve used a VFS install, so I have configured a second virtual hard disk to host the Q: drive. If you would prefer a MNT install just change the install folder when installing Firefox.</p>
<h3>Sequencer Configuration</h3>
<p>Before Sequencing, add the following exclusions:</p>
<ul>
<li>%CSIDL_APPDATA%\Mozilla</li>
<li>%CSIDL_COMMON_APPDATA%\Microsoft\RAC</li>
<li>\REGISTRY\USER\%SFT_SID%\Software\Microsoft\Windows\CurrentVersion\Internet Settings</li>
</ul>
<p>If you are adding Adobe Flash Player to the package, add these exclusions as well:</p>
<ul>
<li>%CSIDL_APPDATA%\Adobe</li>
<li>%CSIDL_APPDATA%\Macromedia</li>
<li>%CSIDL_WINDOWS%\Installer</li>
</ul>
<p>I have included these in a Package Template for Firefox that you can download from here:</p>
<p class="download"><img src="http://blog.stealthpuppy.com/images/downloads/green-download-arrow-grey-line.png" alt="App-V Package Template for Firefox"/>  <a href="http://blog.stealthpuppy.com/wp-content/plugins/download-monitor/download.php?id=46" title="Downloaded 1480 times">App-V Package Template for Firefox</a></p>
<h3>Installing Firefox</h3>
<p>Download the <a href="http://www.mozilla.com/firefox/all.html">Firefox installer in your target language from the Mozilla site</a>. Sequencing Firefox will require the following steps:</p>
<ul>
<li>Install Firefox</li>
<li>Configure profile defaults</li>
<li>Optionally add global add-ons and install plug-ins such as Adobe Flash Player</li>
</ul>
<p>Automating this process as much as possible will create a cleaner package and make it faster to re-create a new Firefox package if required.</p>
<ul>
<li>Mozilla <a href="https://wiki.mozilla.org/Installer:Command_Line_Arguments">Firefox installer command line arguments</a> – use the INI file approach to control where Firefox is installed and to prevent the addition of a desktop shortcut, if required</li>
<li>After installing Firefox, copy <em>user.js</em> to <em>%ProgramFiles%\Mozilla Firefox\defaults\profile</em></li>
<li>Copy <em>userChrome.css</em> to <em>%ProgramFiles%\Mozilla Firefox\defaults\profile\chrome</em></li>
<li>Firefox also allows you to <a href="http://kb.mozillazine.org/Installing_extensions">add global add-ons by adding them to the Extensions sub-folder</a> of the Firefox installation folder</li>
<li>If you are including Adobe Flash player in the package, be sure to <a href="http://kb2.adobe.com/cps/167/16701594.html">disable the auto-update notification</a></li>
</ul>
<p>For an example script that will automate the install and configuration of Firefox, see the script below:</p>
<p class="download"><img src="http://blog.stealthpuppy.com/images/downloads/green-download-arrow-grey-line.png" alt="Firefox Install Script"/>  <a href="http://blog.stealthpuppy.com/wp-content/plugins/download-monitor/download.php?id=47" title="Downloaded 427 times">Firefox Install Script</a></p>
<h3>Shortcuts</h3>
<p>If the monitoring phase was successful the Sequencer should create a single shortcut for Firefox. If you are including Flash 10.3 or above in the package, add an additional shortcut for the Flash Player Control Panel applet using &#8220;C:\Windows\System32\FlashPlayerCPLApp.cpl&#8221; as the target.</p>
<h3>First Run Tasks and Primary Feature Block</h3>
<p>If the steps above have been followed for exclusions, installation and configuration of Firefox, there will be no first run tasks to complete. Additionally the resultant package will be reasonably small so there is no need to create the Primary Feature Block.</p>
<p>Because you don&#8217;t need to complete first run tasks or create the Primary Feature Block, you could automate the entire end-to-end process of creating a Firefox package using <a href="http://softwaredeployment.wordpress.com/2011/04/15/app-v-4-6-sp1-command-line-interface/">the App-V Sequencer command-line interface</a>.</p>
<h3>Finally</h3>
<p>Save your package and deploy.</p>
<h3>Resources</h3>
<ul>
<li><a href="http://gallery.technet.microsoft.com/Mozilla-Firefox-50-x86-en-a5ebb52e">App-V Package Accelerator for Mozilla Firefox 5.0 (x86 en-US) and Adobe Flash Player 10.3.181.26 (en-US)</a></li>
</ul>
<p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/sequencing-mozilla-firefox-5/">Sequencing Mozilla Firefox 5</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stealthpuppy.com/virtualisation/sequencing-mozilla-firefox-5/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Sequencing Apple iTunes 10</title>
		<link>http://blog.stealthpuppy.com/virtualisation/sequencing-apple-itunes-10/</link>
		<comments>http://blog.stealthpuppy.com/virtualisation/sequencing-apple-itunes-10/#comments</comments>
		<pubDate>Wed, 15 Jun 2011 21:33:23 +0000</pubDate>
		<dc:creator>Aaron Parker</dc:creator>
				<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[App-V]]></category>
		<category><![CDATA[iTunes]]></category>
		<category><![CDATA[QuickTime]]></category>

		<guid isPermaLink="false">http://blog.stealthpuppy.com/?p=2278</guid>
		<description><![CDATA[Here’s a nut I’ve been trying to crack for some time – successfully virtualizing Apple iTunes with App-V. I think a combination of iTunes 10 and App-V 4.6 SP1 did the trick. Here’s how to do it. What you lose &#8230; <a href="http://blog.stealthpuppy.com/virtualisation/sequencing-apple-itunes-10/">Continue reading <span class="meta-nav">&#8594;</span></a><p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/sequencing-apple-itunes-10/">Sequencing Apple iTunes 10</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></description>
			<content:encoded><![CDATA[<p><a rel="attachment wp-att-2279" href="http://blog.stealthpuppy.com/virtualisation/sequencing-apple-itunes-10/attachment/itunes10/"><img class="alignright size-full wp-image-2279" style="margin-left: 5px; margin-right: 5px;" title="iTunes10" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/06/iTunes10.png" alt="iTunes 10 icon" width="128" height="128" /></a>Here’s a nut I’ve been trying to crack for some time – successfully virtualizing Apple iTunes with App-V. I think a combination of iTunes 10 and App-V 4.6 SP1 did the trick. Here’s how to do it.</p>
<h3>What you lose by virtualizing iTunes</h3>
<p>Because virtualizing iTunes with App-V will isolate the application from the OS, the following features will not be available once iTunes has been sequenced:</p>
<ul>
<li>The iTunes Jump List</li>
<li>The iTunes toolbar integration into the Taskbar</li>
<li>Windows Firewall exclusions (manual changes will be required to support media sharing)</li>
</ul>
<h3>iTunes Components</h3>
<p>To start at the beginning requires taking a look at the components of iTunes. Note that iTunes comes in 32-bit and 64-bit versions, so be sure to <a href="http://support.apple.com/downloads/">download</a> and sequence the correct version for your target platform. I tested this sequence using iTunes 10.3.1 x86 on 32-bit Windows; however the same approach will apply for the 64-bit version and (presumably) future versions of 10.x.</p>
<p>Extracting <a href="http://www.apple.com/itunes/download/">the iTunes installer</a> results in several files:</p>
<ul>
<li>AppleSoftwareUpdate.msi – Software Update is used to download and Apple software and updates</li>
<li>SetupAdmin.exe – the setup wrapper application</li>
<li>AppleApplicationSupport.msi – all Apple applications on Windows require this as a dependency</li>
<li>AppleMobileDeviceSupport.msi – required for Apple mobile device support (iPhone, iPad etc.). This installer includes the drivers for Apple’s devices</li>
<li>QuickTime.msi – iTunes uses QuickTime for video codec support</li>
<li>Bonjour.msi &#8211; <a href="http://support.apple.com/kb/HT2250">iTunes uses Bonjour</a> to find shared music libraries, to find AirPort Express devices for streaming music to, and to find Apple TVs</li>
<li>iTunes.msi – the iTunes installer itself</li>
</ul>
<p>It is important that <em>Apple Software Update</em> is not included in the App-V package – allowing the applications in the package to update will at best fail and at worst, most likely bloat the package if it were allowed to run after deployment. Before copying the iTunes setup files into your sequencing VM, delete <em>AppleSoftwareUpdate.msi</em> and <em>SetupAdmin.exe</em>. This will prevent the iTunes installer from automatically installing Software Update during sequencing.</p>
<h3>Prepare the Sequencing VM</h3>
<p>I have successfully created an iTunes package using a virtual machine running 32-bit Windows 7 SP1 with Internet Explorer 9 and all current updates.</p>
<p>I used a VFS install, so I have configured a second virtual hard disk to host the Q: drive to <a href="http://www.tmurgent.com/TmBlog/?p=402">avoid this bug</a>. If you would prefer a MNT install, just add the INSTALLDIR to the command line for each Windows Installer file.</p>
<p>Before starting the Sequencer, three steps must be completed:</p>
<ol>
<li>Install Apple Application Support – I have not included this in the package because I had issues connecting a mobile device when it including it. However I did include it in <a href="http://blog.stealthpuppy.com/virtualisation/sequencing-apple-quicktime-7x/">this previous QuickTime package</a>, so it may very well be possible to include this component in the package.</li>
<li>Install Apple Mobile Device Support – this is required to be installed outside of the package because it contains the mobile device drivers</li>
<li>Create an iTunes folder structure in the user profile under %AppData%</li>
</ol>
<p>These same steps will need to be followed on the App-V client computer that will run iTunes. Fortunately Apple Application Support and the Mobile Device Support come as Windows Installer files, so they will be easy to deploy.</p>
<h3>What to do about AppData</h3>
<p>iTunes is a excellent example of an application written by developers who appear to have absolutely no idea about how Windows profiles work. Take a look at the size of the <em>AppData\Roaming\Apple Computer</em> folder in my profile on an existing computer with iTunes installed:</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/06/09AppData.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="09AppData" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/06/09AppData_thumb.png" border="0" alt="09AppData" width="377" height="302" /></a></p>
<p>With logs, a back-up of two devices and two copies of iOS 4.3.3 (one for an iPhone and one for an iPad), this folder is a whopping 8.41 GB and contains over 17000 files. Just imagine enabling Roaming Profiles with that in your profile – that’s a lot of coffee waiting for logon to complete.</p>
<p>To be fair, I don’t think that iTunes was intended to be used in an environment with Roaming Profiles; but the amount of data that iTunes stores in this location highlights one of the challenges we face when developers make questionable decisions.</p>
<p>There are two ways of getting around this problem:</p>
<ol>
<li>Do not virtualize the user profile at all – iTunes will create the AppData folder structure in the user profile at launch just like it would for any new user account</li>
<li>Virtualize only those portions of the user profile that contain iTunes preferences – you might like to take this approach if you want to preconfigure iTunes</li>
</ol>
<p>In this article I will demonstrate how to take approach number 2. If you would prefer approach 1, ensure that %CSIDL_APPDATA% has been added to the exclusions list before sequencing.</p>
<h3>Before Sequencing – Create the AppData folders</h3>
<p>To work around the large amount of data that iTunes stores in the profile, create the following folders before sequencing:</p>
<ul>
<li>%AppData%\Apple Computer\iTunes\iPad Software Updates</li>
<li>%AppData%\Apple Computer\iTunes\iPad Updater Logs</li>
<li>%AppData%\Apple Computer\iTunes\iPhone Carrier Support</li>
<li>%AppData%\Apple Computer\iTunes\iPhone Software Updates</li>
<li>%AppData%\Apple Computer\iTunes\iPhone Updater Logs</li>
<li>%AppData%\Apple Computer\iTunes\iPod Software Updates</li>
<li>%AppData%\Apple Computer\iTunes\iPod Updater Logs</li>
<li>%AppData%\Apple Computer\WebKit</li>
<li>%AppData%\Apple Computer\iTunes\Apple Mobile Device Sync Diagnostics Logs</li>
<li>%AppData%\Apple Computer\Logs</li>
<li>%AppData%\Apple Computer\MobileSync</li>
<li>%AppData%\Apple Computer\SyncServices\Local</li>
</ul>
<p>By creating these folder before sequencing will make it simpler to set Merge with Local attributes on the captured folders. The paths above will then also be excluded from the package and must be created on the App-V client computer at runtime.</p>
<h3>Installing iTunes</h3>
<p>Sequencing is as simple as capturing the installation of the following files and configuring iTunes the way we want:</p>
<ul>
<li>QuickTime.msi</li>
<li>Bonjour.msi</li>
<li>iTunes.msi</li>
</ul>
<p>However, iTunes and QuickTime store preferences in less than ideal locations. Here are the default locations for those preferences:</p>
<ul>
<li>Most iTunes preferences are stored here: <em>%AppData%\Apple Computer\iTunes\iTunesPrefs.xml</em></li>
<li>Some computer specific preferences are stored here: <em>%LocalAppData%\Apple Computer\iTunes\iTunesPrefs.xml</em></li>
<li>QuickTime preferences are stored here: <em>%LocalAppData%Low\Apple Computer\QuickTime\QuickTime.qtp</em></li>
<li>QuickTime Player preferences are stored here: <em>%LocalAppData%\Apple Computer\QuickTime\QTPlayerSession.xml</em></li>
</ul>
<p>Ideally these would all be located under %AppData%. Unfortunately the only preference file that we can move is for QuickTime (<em>%LocalAppData%Low\Apple Computer\QuickTime\QuickTime.qtp</em>).</p>
<p>To change the QuickTime preferences location, change the path under the following Registry value:</p>
<ul>
<li>HKCU\Software\Apple Computer, Inc.\QuickTime\LocalUserPreferences\FolderPath</li>
</ul>
<p>I do not recommend attempting to include the %LocalAppData% or %LocalAppData%Low locations as these end up containing cache files which we need to avoid capturing to keep the package size to a minimum.</p>
<h3>Automating the iTunes install</h3>
<p>There’s no reason why you couldn’t install and configure QuickTime and iTunes during sequencing manually; however I think that scripting the process as much as possible will help create a more successful package. I have a script that performs the following:</p>
<ul>
<li>Installs QuickTime and iTunes with updates and desktop shortcuts disabled</li>
<li>Installs Bonjour</li>
<li>Perform some clean-up actions including removing unneeded shortcuts</li>
<li>Changes the QuickTime configuration file location to %AppData% (instead of the AppData\LocalLow folder)</li>
<li>Copy in a pre-configured QuickTime configuration file</li>
<li>Create the folders in %AppData% that we want to capture in the package</li>
<li>Start QuickTime Player and then iTunes to provide an opportunity to configure each application (first-run tasks)</li>
</ul>
<p>You can download the script here:</p>
<p class="download"><img src="http://blog.stealthpuppy.com/images/downloads/green-download-arrow-grey-line.png" alt="iTunes App-V Install Script"/>  <a href="http://blog.stealthpuppy.com/wp-content/plugins/download-monitor/download.php?id=41" title="Downloaded 478 times">iTunes App-V Install Script</a></p>
<p>Place the script into the same folder as the iTunes Windows Installer files as it will attempt to run the MSI files from the same location.</p>
<h3>Sequencer Exclusions</h3>
<p>There are a number of locations that we need to exclude from capture during sequencing:</p>
<ul>
<li>%CSIDL_APPDATA%\Apple Computer\iTunes\iPad Software Updates</li>
<li>%CSIDL_APPDATA%\Apple Computer\iTunes\iPad Updater Logs</li>
<li>%CSIDL_APPDATA%\Apple Computer\iTunes\iPhone Carrier Support</li>
<li>%CSIDL_APPDATA%\Apple Computer\iTunes\iPhone Software Updates</li>
<li>%CSIDL_APPDATA%\Apple Computer\iTunes\iPhone Updater Logs</li>
<li>%CSIDL_APPDATA%\Apple Computer\iTunes\Apple Mobile Device Sync Diagnostics Logs</li>
<li>%CSIDL_APPDATA%\Apple Computer\Logs</li>
<li>%CSIDL_APPDATA%\Apple Computer\MobileSync</li>
<li>%CSIDL_APPDATA%\Apple Computer\SyncServices</li>
<li>\REGISTRY\USER\%SFT_SID%\Software\Microsoft\Windows\CurrentVersion\Internet Settings</li>
<li>\REGISTRY\USER\%SFT_SID%_Classes\Local Settings\Software\Microsoft\Windows\Shell</li>
<li>%CSIDL_PROFILE%\Music</li>
</ul>
<p>I have included these in a Package Template for iTunes that you can download from here:</p>
<p class="download"><img src="http://blog.stealthpuppy.com/images/downloads/green-download-arrow-grey-line.png" alt="iTunes App-V Package Template"/>  <a href="http://blog.stealthpuppy.com/wp-content/plugins/download-monitor/download.php?id=40" title="Downloaded 338 times">iTunes App-V Package Template</a></p>
<h3>Sequencing iTunes</h3>
<p>To sequence iTunes, follow the basic outline here:</p>
<p>1. Start the Sequencer and create a new package from the iTunes template available above</p>
<p>2. Create a Standard Application package</p>
<p>3. Package installer – select either the iTunes scripted install command listed above or <em>C:\Windows\System32\cmd.exe</em></p>
<p>4. Add a package name – I have used <em>Apple iTunes 10 x86</em></p>
<p>5. Start the installation. You can run iTunes and QuickTime during this step to perform first run tasks.</p>
<p>6. First Run tasks</p>
<ul>
<li>QuickTime – follow the recommendations for configuration in this article: <a href="http://blog.stealthpuppy.com/virtualisation/sequencing-apple-quicktime-7x/">Virtualising Apple QuickTime 7.x</a></li>
<li>iTunes – iTunes will prompt to make itself the default for media files – set this if required and be sure to disable the option &#8216;Warn me if iTunes is not the default player for audio files&#8217;</li>
</ul>
<p>7. Customize shortcuts</p>
<ul>
<li>Remove the <em>About Bonjour</em> &#038; <em>PictureViewer</em> shortcuts (I recommend removing all shortcuts, leaving only QuickTime and iTunes)</li>
<li>Remove QuickTime shortcut unless required</li>
<li>Place all shortcuts under <em>\Programs\iTunes</em> in the Start Menu</li>
</ul>
<p>8. Primary Feature block</p>
<ul>
<li>Run iTunes,  you may have to force exit of child processes if required</li>
<li>No need to run QuickTime Player unless required</li>
</ul>
<h3>Post-Sequencing</h3>
<p>There are a few post-sequencing tasks to perform:</p>
<p><strong>AppData</strong>: Check that Merge with Local has been applied to folders captured in AppData correctly. The image below shows the <em>Apple Computer</em> and <em>Apple Computer\iTunes</em> folders have been set to Merge with Local. If the pre-sequence steps that create the AppData folder structure are followed (or you are excluding AppData), then no manual action should be required.</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="06AppDataMerge" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/06/06AppDataMerge.png" border="0" alt="06AppDataMerge" width="660" height="392" /></p>
<p>Add a script to the iTunes OSD file to create the AppData folder structure that should exist on the real file system:</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/06/iTunesScriptBody.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="iTunesScriptBody" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/06/iTunesScriptBody_thumb.png" border="0" alt="iTunesScriptBody" width="660" height="242" /></a></p>
<p>For an example of what to add to the OSD file, download the example here:</p>
<p class="download"><img src="http://blog.stealthpuppy.com/images/downloads/green-download-arrow-grey-line.png" alt="iTunes App-V OSD AppData script"/>  <a href="http://blog.stealthpuppy.com/wp-content/plugins/download-monitor/download.php?id=42" title="Downloaded 289 times">iTunes App-V OSD AppData script</a></p>
<p><strong>iPod Service</strong>: Set the <em>iPod Service</em> to Automatic. This will ensure that the service is ready as soon as iTunes starts.</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="07iPodService" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/06/07iPodService.png" border="0" alt="07iPodService" width="660" height="392" /></p>
<p><strong>Child Processes</strong>: when iTunes launches, several processes with also be started – AppleMobileDeviceHelper.exe, distnoted.exe (both installed instead of in the iTunes package), iPodService.exe and mDNSResponder.exe (The iPod and Bonjour services respectively).</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/06/10ProcExp.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="10ProcExp" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/06/10ProcExp_thumb.png" border="0" alt="10ProcExp" width="660" height="211" /></a></p>
<p>On occasion these processes may remain running after iTunes has exited, if this is the case (and you may have already seen this behaviour when building the Primary Feature block) set TERMINATECHILDREN to True in the iTunes OSD.</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="iTunesTerminateChildren" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/06/iTunesTerminateChildren.png" border="0" alt="iTunesTerminateChildren" width="660" height="231" /></p>
<p><strong>Compression</strong>: The package should weigh in at around 290Mb, so depending on your deployment method you could compress it to save bandwidth.</p>
<h3>Running iTunes</h3>
<p>Deploying the iTunes package will require the deployment of Apple Application Support and Apple Mobile Device Support to the client computers first. Without Apple Application Support the following will be the result of launching iTunes:</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/06/NoAppleAppSupport.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="NoAppleAppSupport" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/06/NoAppleAppSupport_thumb.png" border="0" alt="NoAppleAppSupport" width="510" height="260" /></a></p>
<p>While I&#8217;ve been able to test iTunes successfully running on an App-V Client, there appears (at this stage at least) to be only one issue – when plugging in a mobile device, the following error is displayed, twice:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="AppleMobileDeviceService" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/06/AppleMobileDeviceService.png" border="0" alt="This iPhone cannot be used because the Apple Mobile Device service is not started" width="421" height="162" /></p>
<p>Although iTunes reports this error and I can confirm that the service is started (it&#8217;s running natively, not within the package), once acknowledged device sync works anyway. I&#8217;ve tested with LOCALINTERACTIONALLOWED which hasn&#8217;t helped. I&#8217;ll update this post if I find a solution.</p>
<p>Last, but not least, for media sharing to work, firewall exceptions will be required for the following processes:</p>
<ul>
<li>iTunes &#8211; Q:\Apple iTunes 10 x86\VFS\CSIDL_PROGRAM_FILES\iTunes\iTunes.exe</li>
<li>Bonjour service &#8211; Q:\Apple iTunes 10 x86\VFS\CSIDL_PROGRAM_FILES\Bonjour\mDNSResponder.exe</li>
</ul>
<p>The path to the processes may change depending where you install iTunes and dependent components.</p>
<p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/sequencing-apple-itunes-10/">Sequencing Apple iTunes 10</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stealthpuppy.com/virtualisation/sequencing-apple-itunes-10/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Adding Shell Extensions to App-V Packages</title>
		<link>http://blog.stealthpuppy.com/virtualisation/adding-shell-extensions-to-app-v-packages/</link>
		<comments>http://blog.stealthpuppy.com/virtualisation/adding-shell-extensions-to-app-v-packages/#comments</comments>
		<pubDate>Wed, 27 Apr 2011 19:28:07 +0000</pubDate>
		<dc:creator>Aaron Parker</dc:creator>
				<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[App-V]]></category>

		<guid isPermaLink="false">http://blog.stealthpuppy.com/?p=2246</guid>
		<description><![CDATA[Inspired by a post on the ThinApp blog on Adding Shell Extensions to ThinApp Packages, I&#8217;ve documented here how to add Shell Extensions to an App-V package using the Windows Installer file generated by the App-V Sequencer. Caveats There are &#8230; <a href="http://blog.stealthpuppy.com/virtualisation/adding-shell-extensions-to-app-v-packages/">Continue reading <span class="meta-nav">&#8594;</span></a><p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/adding-shell-extensions-to-app-v-packages/">Adding Shell Extensions to App-V Packages</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></description>
			<content:encoded><![CDATA[<p>Inspired by a post on the ThinApp blog on <a href="http://blogs.vmware.com/thinapp/2011/04/adding-shell-extensions-to-thinapp-packages.html">Adding Shell Extensions to ThinApp Packages</a>, I&#8217;ve documented here how to add Shell Extensions to an App-V package using the Windows Installer file generated by the App-V Sequencer.</p>
<h3>Caveats</h3>
<p>There are several caveats to keep in mind:</p>
<ul>
<li>By default, App-V only adds file type associations so that you can double click on a file to open it in a virtual package. This approach is not changing that behaviour</li>
<li>This will only work for file or folder right-click menu options, it won&#8217;t get other shell integration working</li>
<li>As we are editing the package Windows Installer file, your App-V deployment must use the MSI file to install the package. You could use an OSD script to integrate these changes, but the user would need to run the package at least once for the script to execute</li>
</ul>
<h3>Right-click Items for WinRAR</h3>
<p>In this example, I&#8217;m using <a href="http://www.rarlab.com/download.htm">WinRAR</a> (just like the ThinApp example), so I&#8217;ve had to determine the command line passed to WinRAR by each right-click item. To do that I&#8217;ve used <a href="http://technet.microsoft.com/en-us/sysinternals/bb896653">Process Explorer</a> with an installed version of WinRAR.</p>
<p>In this example, I will add the following right-click options:</p>
<ul>
<li><em>Add to archive&#8230;</em> to folders</li>
<li><em>Compress and email&#8230;</em> to folders</li>
<li><em>Extract files&#8230;</em> to .RAR files</li>
</ul>
<p>Viewing the properties of the WINRAR.EXE process displays the command line used for each item:</p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="WinRAR-CommandLine" border="0" alt="WinRAR-CommandLine" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/04/WinRAR-CommandLine.png" width="447" height="326" /></p>
<h3>Editing the MSI</h3>
<p>To add these right-click items, I&#8217;m using my favourite MSI editor <a href="http://www.instedit.com/">InstEd</a> to open the MSI that the App-V Sequencer generated when I sequenced WinRAR. Making these edits was a manual process for me, but depending on which MSI editor you use there are probably simpler ways of achieving the same thing.</p>
<p>There are four tables in the MSI where I need to make changes:</p>
<ul>
<li>Component</li>
<li>Registry</li>
<li>FeatureComponents</li>
<li>InstallExecuteSequence</li>
</ul>
<h3>Component Table</h3>
<p>Go to the Component table and create a new entry. This will require a unique name (I’ve used <em>AppVShellValues</em>) and GUID &#8211; your MSI editor should be able to generate the GUID for you.</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/04/Component-Table.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Component-Table" border="0" alt="Component-Table" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/04/Component-Table_thumb.png" width="660" height="382" /></a></p>
<h3>Registry Table</h3>
<p>The Registry table, which is empty by default, will require one entry per addition to the Registry. In this example I have three entries:</p>

<table id="wp-table-reloaded-id-28-no-1" class="wp-table-reloaded wp-table-reloaded-id-28">
<thead>
	<tr class="row-1 odd">
		<th class="column-1">Registry</th><th class="column-2">Root</th><th class="column-3">Key</th><th class="column-4">Name</th><th class="column-5">Value</th><th class="column-6">Component_</th>
	</tr>
</thead>
<tbody>
	<tr class="row-2 even">
		<td class="column-1">ShellValue001</td><td class="column-2">-1</td><td class="column-3">Software\Classes\Directory\shell\Add to archive...\Command</td><td class="column-4">null</td><td class="column-5">"[SGINSTALLPATH]\sfttray.exe" /launch "[ProductName]" a -ep1  -scul -r0 -iext -- . "%1"</td><td class="column-6">AppVShellValues</td>
	</tr>
	<tr class="row-3 odd">
		<td class="column-1">ShellValue002</td><td class="column-2">-1</td><td class="column-3">Software\Classes\Directory\shell\Compress and email...\Command</td><td class="column-4">null</td><td class="column-5">"[SGINSTALLPATH]\sfttray.exe" /launch "[ProductName]" a -ieml. -ep1  -scul -r0 -iext -- . "%1"</td><td class="column-6">AppVShellValues</td>
	</tr>
	<tr class="row-4 even">
		<td class="column-1">ShellValue003</td><td class="column-2">-1</td><td class="column-3">Software\Classes\WinRAR\shell\Extract files...\Command</td><td class="column-4">null</td><td class="column-5">"[SGINSTALLPATH]\sfttray.exe" /launch "[ProductName]" x -iext -ow -ver -- "%1" "?"</td><td class="column-6">AppVShellValues</td>
	</tr>
</tbody>
</table>

<p>The entries will each need to use the following items:</p>
<ul>
<li><em>Registry</em>: this requires a unique value</li>
<li><em>Root</em>: the value corresponds to HKLM</li>
<li><em>Key</em>: the key path will be dependent on the menu item; however each key will require the \Command path</li>
<li><em>Name</em>: this is the Registry value being added, in this example we are editing the default value, so leave this as null</li>
<li><em>Value</em>: the command that the item will run. This passes command line arguments to SFTTRAY which will launch the application and then pass the command line to WinRAR. </li>
<li><em>Component</em>_: use the component name created in the previous step</li>
</ul>
<p>The command stored in the Value column must launch the application via the App-V Client and pass parameters to that application:</p>
<ul>
<li>I can reference the App-V Client install folder as [SGINSTALLPATH] as this is a property in the MSI</li>
<li>I need to use the application name as listed in the App-V shortcut. In my example I can use [ProductName] because the App-V package name and the application name are the same; however this may not be the case for all packages. The application name may need to be hard coded into the MSI here. You could create a new entry in the Property table for the application name and reference it here</li>
<li>The rest of the command is what is passed to the application by SFTTRAY.EXE</li>
</ul>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/04/Registry-Table.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Registry-Table" border="0" alt="Registry-Table" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/04/Registry-Table_thumb.png" width="660" height="382" /></a></p>
<h3>FeatureComponents Table</h3>
<p>Add a new entry to the FeatureComponents table &#8211; use <em>VirtualApp</em> in the Feature_ column and select the same component used in the previous tables in the Component_ column</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/04/FeatureComponents-Table.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="FeatureComponents-Table" border="0" alt="FeatureComponents-Table" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/04/FeatureComponents-Table_thumb.png" width="660" height="382" /></a></p>
<h3>InstallExecuteSequence Table</h3>
<p>The last step is to ensure that the Registry entries added to the MSI are installed in the correct order. As the MSI file is really just a wrapper for the SFTMIME command, the Registry entries could be overwritten when the SFTMIME command adds the package.</p>
<p>To change the sequence find the <em>WriteRegistryValues</em> entry which will have a Sequence value of <em>5000</em>. Change this value to <em>6580</em> which will ensure that our custom Registry entries are added after the package is added and loaded but before the installer completes its finalize tasks.</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/04/InstallExecuteSequence-Table.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="InstallExecuteSequence-Table" border="0" alt="InstallExecuteSequence-Table" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/04/InstallExecuteSequence-Table_thumb.png" width="660" height="382" /></a></p>
<h3>Install the Package</h3>
<p>If the modifications to the MSI have been completed correctly, you should see your right-click menu options from within Windows Explorer:</p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="RightClickMenu" border="0" alt="RightClickMenu" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/04/RightClickMenu.png" width="207" height="367" /></p>
<p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/adding-shell-extensions-to-app-v-packages/">Adding Shell Extensions to App-V Packages</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stealthpuppy.com/virtualisation/adding-shell-extensions-to-app-v-packages/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Sequencing Microsoft Comic Chat</title>
		<link>http://blog.stealthpuppy.com/virtualisation/sequencing-microsoft-comic-chat/</link>
		<comments>http://blog.stealthpuppy.com/virtualisation/sequencing-microsoft-comic-chat/#comments</comments>
		<pubDate>Fri, 01 Apr 2011 22:24:55 +0000</pubDate>
		<dc:creator>Aaron Parker</dc:creator>
				<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[App-V]]></category>

		<guid isPermaLink="false">http://blog.stealthpuppy.com/?p=2237</guid>
		<description><![CDATA[No, this isn&#8217;t an April Fools joke – I wanted to see if I could sequence Microsoft Comic Chat using App-V. After seeing Raymond Chen&#8217;s latest post on Comic Chat, I had to take a look. Comic Chat is a &#8230; <a href="http://blog.stealthpuppy.com/virtualisation/sequencing-microsoft-comic-chat/">Continue reading <span class="meta-nav">&#8594;</span></a><p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/sequencing-microsoft-comic-chat/">Sequencing Microsoft Comic Chat</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/04/Step3.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Step3" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/04/Step3_thumb.jpg" border="0" alt="Step3" width="264" height="264" /></a></p>
<p>No, this isn&#8217;t an April Fools joke – I wanted to see if I could sequence <a href="http://en.wikipedia.org/wiki/Microsoft_Comic_Chat">Microsoft Comic Chat</a> using App-V. After seeing <a href="http://blogs.msdn.com/b/oldnewthing/archive/2011/04/01/10148494.aspx">Raymond Chen&#8217;s latest post on Comic Chat</a>, I had to take a look.</p>
<blockquote><p>Comic Chat is a radically different kind of internet chat program, released by Microsoft in 1996. Instead of representing chat dialogs as text, like the majority of internet chat programs, or as graphical worlds like some emerging chat programs, Comic Chat visually represents conversations as sequences of comic panels.</p></blockquote>
<p>Using App-V to deliver this application is actually a great example of the power of using any application virtualization product to deliver your legacy applications. The first version of Comic Chat was release in 1996 when we were all running Windows 95, even to run our businesses. Running Comic Chat today under Windows 7 will result in this error:</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/04/07.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="07" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/04/07_thumb.png" border="0" alt="07" width="298" height="161" /></a></p>
<p>Comic Chat is expecting to be able to write to the HKEY_LOCAL_MACHINE key in the Registry. App-V solves this issue two ways – capturing the writes at first launch and optional allowing standard users to write to protected locations because the writes occur within the virtual environment.</p>
<h3>Getting ready to sequence Comic Chat</h3>
<p>You can download Microsoft Comic Chat 2.5 from <a href="http://kurlander.net/DJ/Projects/ComicChat/resources.html">David Kurlander&#8217;s site</a> (Kurlander is the designer of Comic Chat). See <a href="http://kurlander.net/DJ/Projects/ComicChat/GettingStarted.html">the Getting Started page</a> for installation and usage instructions.</p>
<p>Although Comic Chat installs OK on Windows 7, during sequencing Setup produces this error:</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/04/INFInstallFailure.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="INFInstallFailure" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/04/INFInstallFailure_thumb.png" border="0" alt="INFInstallFailure" width="391" height="161" /></a></p>
<p>Fortunately, there&#8217;s an easy fix – before starting the monitoring phase, configure mschat25.exe to start in Windows XP Compatibility Mode:</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/04/MSChat-Compat.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="MSChat-Compat" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/04/MSChat-Compat_thumb.png" border="0" alt="MSChat-Compat" width="419" height="292" /></a></p>
<h3>Sequencing Comic Chat</h3>
<p>I sequenced Comic Chat on Windows 7 using the App-V 4.6 SP1 Sequencer. Sequencing is simple enough – just install to the default folder. During first run, you can choose to enable the Comic Strip view:</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/04/08.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="08" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/04/08_thumb.png" border="0" alt="08" width="660" height="354" /></a></p>
<p>You might also like to remove the extra shortcut created by Setup in <em>Start Menu\Programs\Internet Explorer</em>:</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/04/05.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="05" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/04/05_thumb.png" border="0" alt="05" width="660" height="470" /></a></p>
<p>And that&#8217;s about it. I&#8217;ve tested execution on a Windows 7 SP1 64-bit installation. Other than taking some time to connect to an IRC server, Comic Chat works under App-V on Windows 7.</p>
<h3>Comic Chat Package Accelerator</h3>
<p>If you&#8217;d like to sequence Comic Chat yourself, I&#8217;ve uploaded a Package Accelerator to the TechNet Gallery &#8211; <a href="http://gallery.technet.microsoft.com/Package-Accelerator-for-97080d2c">App-V Package Accelerator for Microsoft Comic Chat 2.5</a></p>
<p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/sequencing-microsoft-comic-chat/">Sequencing Microsoft Comic Chat</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stealthpuppy.com/virtualisation/sequencing-microsoft-comic-chat/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How the App-V 4.6 Service Pack 1 Sequencer helps you implement best practices</title>
		<link>http://blog.stealthpuppy.com/virtualisation/appv-46-sp1-sequencer-helps-you-implement-best-practices/</link>
		<comments>http://blog.stealthpuppy.com/virtualisation/appv-46-sp1-sequencer-helps-you-implement-best-practices/#comments</comments>
		<pubDate>Thu, 10 Mar 2011 17:43:17 +0000</pubDate>
		<dc:creator>Aaron Parker</dc:creator>
				<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[App-V]]></category>

		<guid isPermaLink="false">http://blog.stealthpuppy.com/?p=2175</guid>
		<description><![CDATA[The new App-V 4.6 SP1 Sequencer introduces some major changes in the user interface and the sequencing workflow. These changes have been designed to assist the sequencing engineer with virtualising applications in App-V while aligning with best practices. If you’re &#8230; <a href="http://blog.stealthpuppy.com/virtualisation/appv-46-sp1-sequencer-helps-you-implement-best-practices/">Continue reading <span class="meta-nav">&#8594;</span></a><p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/appv-46-sp1-sequencer-helps-you-implement-best-practices/">How the App-V 4.6 Service Pack 1 Sequencer helps you implement best practices</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></description>
			<content:encoded><![CDATA[<p><img style="background-image: none; margin: 0px 0px 5px 10px; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px; border-width: 0px;" title="AppV46SequencerNew" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/03/AppV46SequencerNew.png" border="0" alt="AppV46SequencerNew" width="128" height="123" align="right" />The new <a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=3b48dbfe-612d-4806-b737-9254bd9b2445">App-V 4.6 SP1</a> Sequencer introduces some major changes in the user interface and the sequencing workflow. These changes have been designed to assist the sequencing engineer with virtualising applications in App-V while aligning with best practices.</p>
<p>If you’re a seasoned sequencing engineer the Sequencer has some major UI changes, but let me show you why I think that once you’ve had an opportunity to use the new Sequencer, you’ll be smiling. (Minimise during sequencing is back too which will make plenty of people even happier)</p>
<h3>Sequencer Installation</h3>
<p>Built-in best practices are implemented right from installation &#8211; the first change you’ll see is during the installation of the Sequencer. Setup will ask for the virtual drive letter:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="AppV-Sequencer-BestPractice12" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/03/AppV-Sequencer-BestPractice12.png" border="0" alt="AppV-Sequencer-BestPractice12" width="504" height="382" /></p>
<p>If this drive letter does not already exist as an actual partition or volume within your sequencing computer, Setup will create a drive substitution for you. (The substitution is to <em>%ProgramData%\Microsoft\Application Virtualization Sequencer\Package Root\</em>).</p>
<p>Another best practice is implemented during installation – the creation of a dummy ODBC connection. Both a system DSN and a user DSN for the current user are created:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="ODBC" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/03/ODBC.png" border="0" alt="ODBC" width="471" height="390" /></p>
<h3>Sequencer Templates</h3>
<p>App-V 4.6 SP1 introduces Sequencer Templates which can be used to standardise commonly applied settings when you create new virtual application packages. This will help streamline the process of creating virtual application packages, especially if your own best practices differ from the default settings.</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="AppV-Sequencer-BestPractice13" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/03/AppV-Sequencer-BestPractice13.png" border="0" alt="AppV-Sequencer-BestPractice13" width="509" height="466" /></p>
<p>Sequencer Templates (.sprt files) are single XML files than can be copied into your sequencing VM and applied to new packages. These will become an important part of any packaging team’s methods for standardising their packages.</p>
<p>Sequencer Templates can include the following settings:</p>
<ul>
<li>Advanced Monitoring Options (e.g. allow Windows Update during monitoring, Rebasing DLLs)</li>
<li>Package Deployment Settings (e.g. the default server hostname and protocol)</li>
<li>General Options (e.g. creating an MSI package)</li>
<li>Parse Items</li>
<li>Exclusion Items</li>
</ul>
<p>A master template or templates for specific application types can be used to ensure everyone is using the same settings for their sequences.</p>
<h3>Preparing for Sequencing</h3>
<p>When sequencing an application the Sequencer will now ensure that the sequencing computer has been prepared correctly. In the example below you can see four issues that the Sequencer has detected:</p>
<ul>
<li>Windows Defender is running</li>
<li>The Windows Search service is running</li>
<li>Some applications are open before starting the sequencing process</li>
<li>My virtual machine has not been reverted to a clean state before starting wizard</li>
</ul>
<p>The Sequencer is recommending a solution for each issue before proceeding:</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/03/AppV-Sequencer-BestPractice15.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="AppV-Sequencer-BestPractice15" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/03/AppV-Sequencer-BestPractice15_thumb.png" border="0" alt="AppV-Sequencer-BestPractice15" width="660" height="467" /></a></p>
<p>Getting this type of information directly from the Sequencer is a fantastic feature because it will assist in creating successful and cleaner packages.</p>
<h3>Creating Packages</h3>
<p>The SP1 Sequencer now directly assists in capturing the type of application you are sequencing. Making a decision at this point about the type of application changes the sequencing workflow so that the Sequencer can guide you through the capture process.</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/03/AppV-Sequencer-BestPractice16.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="AppV-Sequencer-BestPractice16" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/03/AppV-Sequencer-BestPractice16_thumb.png" border="0" alt="AppV-Sequencer-BestPractice16" width="660" height="425" /></a></p>
<p>Getting this process correct is especially important for add-ons or middleware components that you might link to a primary application using <a href="http://technet.microsoft.com/en-us/library/cc843662.aspx">Dynamic Suite Composition</a>.</p>
<h3>Editing Packages</h3>
<p>The same approach has been taken when editing packages:</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/03/AppV-Sequencer-BestPractice11.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="AppV-Sequencer-BestPractice11" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/03/AppV-Sequencer-BestPractice11_thumb.png" border="0" alt="AppV-Sequencer-BestPractice11" width="660" height="413" /></a></p>
<p>By choosing the package edit task within the Sequencer, you will be guided through an edit or update task, making it simpler to generate a new version of a package. The workflow will change depending on the task that you choose.</p>
<h3>Install Phase</h3>
<p>During the installation phase, the Sequencer will prompt for a package name. You’ll notice here that the Sequencer is auto-creating the Primary Virtual Application Directory and using a name that does not adhere to a previous <a href="http://blogs.technet.com/b/appv/archive/2007/10/04/getting-to-the-root-of-the-8-3-root.aspx">best practice of using an 8.3</a> naming convention:</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/03/AppV-Sequencer-BestPractice19.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="AppV-Sequencer-BestPractice19" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/03/AppV-Sequencer-BestPractice19_thumb.png" border="0" alt="AppV-Sequencer-BestPractice19" width="660" height="413" /></a></p>
<p>Behind the scenes the Sequencer is taking care of the 8.3 folder for you, making sequencing that one step simpler. You can however, continue using your existing naming conventions if you have them by using the <em>Edit (Advanced)</em> check box.</p>
<p>At this point, the Sequencer will also remind you to where to install the application you are sequencing:</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/03/AppV-Sequencer-BestPractice01.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="AppV-Sequencer-BestPractice01" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/03/AppV-Sequencer-BestPractice01_thumb.png" border="0" alt="AppV-Sequencer-BestPractice01" width="379" height="131" /></a></p>
<p>A small UI change, but a simple one that will assist those new to the sequencing process.</p>
<h3>First Run Tasks</h3>
<p>In previous versions of the Sequencer, it wasn’t very clear that you should perform first run tasks after installing an application. First run tasks are now placed front and centre in a separate step during the sequencing process:</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/03/AppV-Sequencer-BestPractice17.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="AppV-Sequencer-BestPractice17" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/03/AppV-Sequencer-BestPractice17_thumb.png" border="0" alt="AppV-Sequencer-BestPractice17" width="660" height="413" /></a></p>
<h3>Identifying potential virtualization issues</h3>
<p>How do you record excluded files and registry keys or even features that won’t work once an application has been virtualised and isolated from the OS today? It’s not simple and I would guess that for many organisations this information is not documented. Thankfully the new Sequencer exposes much of this information with package reports – excluded files and unsupported application features (such as shell extensions) are recorded and listed and the end of the sequencing process.</p>
<p>The screenshot below shows a couple of examples when <a href="http://blog.stealthpuppy.com/virtualisation/virtualising-adobe-reader-x/">sequencing Adobe Reader</a> – shell extensions that won&#8217;t be available once Reader has been virtualised and files that have been excluded from the package:</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/03/AppV-Sequencer-BestPractice05.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="AppV-Sequencer-BestPractice05" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/03/AppV-Sequencer-BestPractice05_thumb.png" border="0" alt="AppV-Sequencer-BestPractice05" width="660" height="470" /></a></p>
<p>Opening these items will display detailed information:</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/03/AppV-Sequencer-BestPractice18.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="AppV-Sequencer-BestPractice18" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/03/AppV-Sequencer-BestPractice18_thumb.png" border="0" alt="AppV-Sequencer-BestPractice18" width="506" height="312" /></a></p>
<p>This information is then saved for each package in a new file named <em>report.xml</em>:</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/03/AppV-Sequencer-Report.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="AppV-Sequencer-Report" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/03/AppV-Sequencer-Report_thumb.png" border="0" alt="AppV-Sequencer-Report" width="660" height="272" /></a></p>
<h3>Summary</h3>
<p>The <a href="http://blogs.technet.com/b/mdop/archive/2011/03/09/app-v-4-6-sp1-and-med-v-2-0-are-available-as-part-of-mdop-2011.aspx">App-V 4.6 SP1 Sequencer is available now</a> and because packages generated from this version will work with the RTM release of the 4.6 client and above, you can start using it today.</p>
<p>For some additional resources on App-V best practices, see these articles:</p>
<ul>
<li><a href="http://download.microsoft.com/download/F/7/8/F784A197-73BE-48FF-83DA-4102C05A6D44/APP-V%204%206%20Trial%20Guide%20Final.docx" class="broken_link">Microsoft Application Virtualization Version 4.6 Trial Guide</a></li>
<li><a href="http://support.microsoft.com/kb/932137">Best practices to use for sequencing in Microsoft App-V</a></li>
</ul>
<p>Other App-V MVPs are blogging about App-V 4.6 SP1 as well:</p>
<ul>
<li>Kevin Kaminski on ﻿﻿<a href="http://myitforum.com/cs2/blogs/kkaminski/archive/2011/03/07/how-the-app-v-4-6-sp1-sequencer-makes-packaging-easier-faster-and-more-predictable.aspx">How the App-V 4.6 SP1 Sequencer Makes Packaging Easier, Faster and More Predictable</a></li>
<li>Tim Mangan on <a href="http://www.tmurgent.com/TmBlog/?p=326">The New App-V Package Accelerator</a></li>
<li>Kalle Saunamäki on <a href="http://www.virtualisointi.fi/en/archives/246">What are the Package Accelerators?</a></li>
<li>Ment van der Plas on <a href="http://www.softgridblog.com/?p=171">Diagnostics in the App-V 4.6 SP1 Sequencer</a></li>
</ul>
<p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/appv-46-sp1-sequencer-helps-you-implement-best-practices/">How the App-V 4.6 Service Pack 1 Sequencer helps you implement best practices</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stealthpuppy.com/virtualisation/appv-46-sp1-sequencer-helps-you-implement-best-practices/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Just how do Exclusions in App-V packages work?</title>
		<link>http://blog.stealthpuppy.com/virtualisation/just-how-do-exclusions-in-app-v-packages-work/</link>
		<comments>http://blog.stealthpuppy.com/virtualisation/just-how-do-exclusions-in-app-v-packages-work/#comments</comments>
		<pubDate>Sat, 26 Feb 2011 01:27:51 +0000</pubDate>
		<dc:creator>Aaron Parker</dc:creator>
				<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[App-V]]></category>

		<guid isPermaLink="false">http://blog.stealthpuppy.com/virtualisation/just-how-do-exclusions-in-app-v-packages-work/</guid>
		<description><![CDATA[Exactly how do folder and Registry exclusions work in App-V? I had presumed that exclusions for both folder and Registry paths would carry over to package execution. This is something that I had made some assumptions about and it’s only &#8230; <a href="http://blog.stealthpuppy.com/virtualisation/just-how-do-exclusions-in-app-v-packages-work/">Continue reading <span class="meta-nav">&#8594;</span></a><p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/just-how-do-exclusions-in-app-v-packages-work/">Just how do Exclusions in App-V packages work?</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></description>
			<content:encoded><![CDATA[<p>Exactly how do folder and Registry exclusions work in App-V? I had presumed that exclusions for both folder and Registry paths would carry over to package execution. This is something that I had made some assumptions about and it’s only recently that I looked into exclusions in detail to get a better understanding.</p>
<p>I’ve spent some time working out how folder and Registry exclusions and Merge/Override settings impact the package at runtime and this post is based on my findings. Although I believe that the details in this post are correct, I recommend testing out these behaviours for yourself.</p>
<h3>Why Exclude?</h3>
<p>When virtualising an application, we may need to avoid capturing specific paths for several reasons:</p>
<ul>
<li>Reduce the size of the package (installers often put files down that aren’t required for an application to execute, such as cached setup files)</li>
<li>Prevent conflicts with data already on the client (preventing a virtualised view of specific paths so that a virtualised application does not see different data to application running outside of App-V)</li>
<li>When running an operating system component such as Internet Explorer inside the bubble, we may want to ensure that the application sees the same data inside and outside the bubble</li>
</ul>
<h3>Exclusions Apply at Sequencing Time Only</h3>
<p>Exclusions are only used to prevent certain paths from being captured during sequencing; it does not necessarily mean that those paths will then <em>not</em> be virtualised at runtime.</p>
<p>Understanding how an application interacts with the operating system and other applications is important for knowing which paths to add as exclusions. In most cases if a path exists both inside and outside of the package it won’t affect execution; however depending on your requirements, some locations should never appear inside the virtual environment.</p>
<p>These paths might include, but are not limited to:</p>
<ul>
<li>MAPI profiles (the Windows Messaging Subsystem key)</li>
<li>Printers (stored in the HKCU\Printers)</li>
<li>ODBC connections (stored in HKCU\Software\ODBC)</li>
<li>Windows 7 Libraries (%APPDATA%\Microsoft\Windows\Libraries)</li>
</ul>
<p>I’ll discuss some of these in more detail later.</p>
<h3>Creating a Package for Testing</h3>
<p>To perform some tests and to illustrate what happens during sequencing and execution, I’ve created a very simple package that contains some Registry keys and folders. I turned the following script into an App-V package:</p>
<pre class="brush: plain; title: ; notranslate">REG ADD &quot;HKEY_CURRENT_USER\Software\MergeTest1&quot; /v InsideTheBubble /t REG_SZ /d &quot;True&quot;
REG ADD &quot;HKEY_CURRENT_USER\Software\MergeTest1\Key&quot; /v InsideTheBubble /t REG_SZ /d &quot;True&quot;
REG ADD &quot;HKEY_CURRENT_USER\Software\MergeTest2&quot; /v InsideTheBubble /t REG_SZ /d &quot;True&quot;
REG ADD &quot;HKEY_CURRENT_USER\Software\MergeTest3&quot; /v InsideTheBubble /t REG_SZ /d &quot;True&quot;
MD &quot;%APPDATA%\MyApplication1&quot;
MD &quot;%APPDATA%\MyApplication2\InsideSub-folder&quot;
ECHO txt &gt; &quot;%APPDATA%\MyApplication1\InsideTheBubble.txt&quot;
ECHO txt &gt; &quot;%APPDATA%\MyApplication2\InsideTheBubble.txt&quot;
ECHO txt &gt; &quot;%APPDATA%\MyApplication2\InsideSub-folder\InsideTheBubble.txt&quot;</pre>
<h3>How the Virtual File System interacts with the Real File System</h3>
<p>Excluded folder paths in an App-V package works just the way you would expect – the folder is not captured in the package. I then may choose to control how the folder is handled at execution time by setting the path to Override the Local Directory (preventing the package from see the real file system) or Merge with the Local Directory (the application sees a merged view of the virtual and real file systems).</p>
<p>In my example package I’ve added the path <em>%APPDATA%\MyApplication2\InsideSub-folder</em> as an exclusion. In the screenshot below, you can see that the parent folder <em>%APPDATA%\MyApplication2</em> was captured but <em>InsideSub-folder</em> was not:</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/02/VFSMerge3.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Virtual File System Root" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/02/VFSMerge3_thumb.png" border="0" alt="Virtual File System Root" width="660" height="337" /></a></p>
<p>To perform some specific testing at execution time, I’ve then set this folder to <em>Merge with Local Directory</em>. Let’s see what happens on the client:</p>
<p>On the real file system I’ve created the folder <em>%APPDATA%\MyApplication2. </em>The screenshot below shows a directory listing outside of the bubble:</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/02/vfs1.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="VFS Outside the package" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/02/vfs1_thumb.png" border="0" alt="VFS Outside the package" width="660" height="277" /></a></p>
<p>If I see the same %APPDATA% location within the package I should see the merged view of <em>%APPDATA%\MyApplication2:</em></p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/02/vfs2.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="VFS Inside the package" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/02/vfs2_thumb.png" border="0" alt="VFS Inside the package" width="660" height="277" /></a></p>
<p>If I create a sub-folder of the MyApplication2 folder:</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/02/vfs3.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="VFS inside creating a sub-folder" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/02/vfs3_thumb.png" border="0" alt="VFS inside creating a sub-folder" width="660" height="277" /></a></p>
<p>I can see that the sub-folder has fallen through the virtual environment to the real file system:</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/02/vfs4.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="VSF viewing outside the buble" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/02/vfs4_thumb.png" border="0" alt="VSF viewing outside the buble" width="660" height="277" /></a></p>
<p>I can also create a file or folder outside of those paths that were captured during sequencing and any path marked <em>Override Local Directory</em> and they will be created in the real file system. In this package %APPDATA% was not captured during sequencing, so I can create a sub-folder (or file):</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/02/vfs5.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="VSF inside the bubble, create a folder" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/02/vfs5_thumb.png" border="0" alt="VSF inside the bubble, create a folder" width="660" height="277" /></a></p>
<p>That is written to the real file system:</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/02/vfs6.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="VFS outside the bubble" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/02/vfs6_thumb.png" border="0" alt="VFS outside the bubble" width="660" height="277" /></a></p>
<p><strong>Bottom line</strong>: Exclusions ensure specified file data isn’t captured at sequencing time and Merge with Local means that anything that doesn’t already exist in the package will be written to the real file system. So file system virtualization is straight-forward and for the most part works the way we would expect.</p>
<h3>How the Virtual Registry interacts with the Real Registry</h3>
<p>The virtual Registry is quite different to the virtual file system – writes to the Registry at execution time will always end up in the virtual Registry. In my example package I have several Registry keys: <em>HKCU\Software\MergeTest1</em> and <em>HKCU\Software\MergeTest2</em>, while <em>HKCU\Software\MergeTest3</em> was excluded. The key <em>HKCU\Software\MergeTest2</em> has been configured for Merge with the Local Key.</p>
<p>On the client in the real Registry I’ve created <em>HKCU\Software\MergeTest2</em> with a value (OutsideTheBubble) inside it:</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/02/vrg1.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Read registry" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/02/vrg1_thumb.png" border="0" alt="Read registry" width="660" height="261" /></a></p>
<p>Within the virtual Registry I can create other keys at the same levels MergeTest1 and MergeTest2 (MergeTest3) and I can make an edit to a value that exists outside of the virtual Registry.</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/02/vrg2.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Virtual registry" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/02/vrg2_thumb.png" border="0" alt="Virtual registry" width="660" height="261" /></a></p>
<p>All of these changes have been captured inside the virtual Registry. This means that while I get a merged view of the virtual and real Registry’s, any changes made by the virtual application will only persist inside the virtual registry. Here’s a look again at the real Registry after I’ve closed the virtual application:</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/02/vrg3.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Real registry" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/02/vrg3_thumb.png" border="0" alt="Real registry" width="660" height="261" /></a></p>
<p>When you take a closer look at a package, you’ll start to see why this is the case. In this screenshot you can see that the Registry root (REGISTRY) is set to <em>Merge with Local Key</em>.</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/02/VRGMerge3.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Virtual Registry root" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/02/VRGMerge3_thumb.png" border="0" alt="Virtual Registry root" width="660" height="337" /></a></p>
<p><strong>Bottom line</strong>: Exclusions ensure specified Registry data isn’t captured at sequencing time and Merge with Local, means just that: merge with any existing local keys; however <em>any</em> new writes to the Registry will be captured in the virtual Registry (a copy on write action).</p>
<p>In the majority of scenarios the behaviour of the virtual Registry is exactly the way we need it to be; however what happens if you absolutely, positively need a Registry write to make it into the real Registry? (i.e. how do you force an exclude at runtime?)</p>
<h3>Why write to the Real Registry?</h3>
<p>I’ll draw on my earlier examples to explain why I would want a Registry write to make into the real Registry.</p>
<p><strong>MAPI profiles</strong> (HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem): your user environment management approach may necessitate managing MAPI profiles outside of the virtual environment. See the <a href="http://support.microsoft.com/kb/983462">Prescriptive guidance for sequencing Office 2010 in Microsoft App-V</a> for different approaches to this key depending whether you are deploying to App-V 4.5 or 4.6.</p>
<p><strong>ODBC connections</strong> (HKCU\Software\ODBC): virtualising ODBC connections can be useful; however if they connection can be edited in-application, then the changes would be saved to the user’s PKG file. If you are deploying ODBC connections with a tool such as Group Policy Preferences, you can’t deploy those changes inside a package, because GPP only applies before the application launches.</p>
<p><strong>Printers</strong> (HKCU\Printers): the user could change their default printer inside an application via the print dialog – the application will have one default printer, while the system will see another default printer. This could be a good or bad consequence depending on how savvy your users are.</p>
<p>These are just a few examples and I’m sure there are plenty more.</p>
<h3>How to write to the Real Registry</h3>
<p>The App-V client includes a Registry key at HKLM\SOFTWARE\Wow6432Node\Microsoft\SoftGrid\4.5\SystemGuard\Overrides with a couple of interesting values – <em>VirtualRegistryPassthrough</em> and <em>VirtualRegistryPassthroughEx</em>.</p>
<p>VirtualRegistryPassthrough is used to allow a local process pass up into the virtual Registry. You can read more about this value in this knowledgebase article: <a href="http://support.microsoft.com/kb/931191">How to print to an Adobe PDF writer printer from SoftGrid-enabled applications</a>. Any detailed documentation beyond this article does not appear to be publically available.</p>
<p>The second value of interest VirtualRegistryPassthroughEx, can be used in the opposite way. It can be used to ensure a specific key will always pass through to the real Registry. <a href="http://www.google.com/search?hl=en&amp;source=hp&amp;biw=1280&amp;bih=699&amp;q=VirtualRegistryPassthroughEx&amp;btnG=Google+Search&amp;aq=f&amp;aqi=&amp;aql=&amp;oq=">A web search draws a complete blank on this one</a>, so until Microsoft comes out with better documentation on TechNet, I recommend testing this value carefully.</p>
<p>There are a couple of caveats with this approach:</p>
<p>1. You must ensure that the key or keys that you want to pass through to the real Registry do <em>not</em> exist inside your App-V package but they should be created in the real Registry. In fact, the key must be initially created outside of the package – you won’t be able to create the key at execution time inside the virtual Registry.</p>
<p>2. This is a global setting; it can’t be used on a per-package basis.</p>
<p>VirtualRegistryPassthroughEx is a multi-string value (REG_MULTI_SZ) to which you add Registry keys to, one for each line. The default keys included here are:</p>
<ul>
<li>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT</li>
<li>HKEY_LOCAL_MACHINE\System\CurrentControlSet\services\eventlog\Application</li>
<li>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI\Autologger</li>
<li>HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings</li>
<li>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib</li>
</ul>
<p>Add the key or keys that you want to exclude from the bubble. No restart is required for this to take effect.</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/02/VirtualRegistryPassthroughEx.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="VirtualRegistryPassthroughEx" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/02/VirtualRegistryPassthroughEx_thumb.png" border="0" alt="VirtualRegistryPassthroughEx" width="394" height="358" /></a></p>
<p>In my example I’ve added HKEY_CURRENT_USER\Software\MergeTest3. I can now create values and sub-keys and be certain that they will end up in the real Registry.</p>
<h3>Where to from here?</h3>
<p>The lack of available documentation on this setting deter you from using it; however based on my findings I’m reasonably confident in the way this works. I do recommend performing your own in-depth testing before using this to address challenges you may have with the virtual Registry.</p>
<p>In a related post I should have ready in a couple of weeks, I’ll post my list of recommended file system and Registry exclusions to add to your App-V projects before sequencing.</p>
<p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/just-how-do-exclusions-in-app-v-packages-work/">Just how do Exclusions in App-V packages work?</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stealthpuppy.com/virtualisation/just-how-do-exclusions-in-app-v-packages-work/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>200 App-V Recipes, Tips and Tricks to keep you busy</title>
		<link>http://blog.stealthpuppy.com/virtualisation/200-app-v-recipes-tips-and-tricks-to-keep-you-busy/</link>
		<comments>http://blog.stealthpuppy.com/virtualisation/200-app-v-recipes-tips-and-tricks-to-keep-you-busy/#comments</comments>
		<pubDate>Mon, 24 Jan 2011 14:00:00 +0000</pubDate>
		<dc:creator>Aaron Parker</dc:creator>
				<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[App-V]]></category>

		<guid isPermaLink="false">http://blog.stealthpuppy.com/virtualisation/200-app-v-recipes-tips-and-tricks-to-keep-you-busy/</guid>
		<description><![CDATA[With (far) more than a little help from another App-V MVP, Nicke Källén, we&#8217;ve been compiling a list of completed App-V recipes plus links to various places around the Internets where you&#8217;ll find assistance in getting your applications virtualised in &#8230; <a href="http://blog.stealthpuppy.com/virtualisation/200-app-v-recipes-tips-and-tricks-to-keep-you-busy/">Continue reading <span class="meta-nav">&#8594;</span></a><p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/200-app-v-recipes-tips-and-tricks-to-keep-you-busy/">200 App-V Recipes, Tips and Tricks to keep you busy</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-2101" style="margin-top: 0px; margin-right: 10px; margin-bottom: 5px; margin-left: 0px; border: 0px;" title="200.png" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/01/200.png" alt="" width="210" height="302" />With (far) more than a little help from another App-V MVP, <a href="http://www.viridisit.se/eng/blog/">Nicke Källén</a>, we&#8217;ve been compiling <a href="http://blog.stealthpuppy.com/appvrecipes/">a list of completed App-V recipes</a> plus links to various places around the Internets where you&#8217;ll find assistance in getting your applications virtualised in App-V.</p>
<p>With my post on virtualising the <a href="http://blog.stealthpuppy.com/virtualisation/sequencing-the-app-v-management-console/">App-V Management Console</a> last week, this list has hit 200 links.</p>
<p>In this list you&#8217;ll find completed recipes plus numerous other resources such as forum threads and knowledgebase articles that solve problems people have faced when virtualising their applications.</p>
<p>We&#8217;ll continue to add links as we find them, so if you&#8217;d like to keep up to date, you can subscribe to the <a href="http://feeds.feedburner.com/appvrecipes">App-V Recipes and Tips feed</a> or you can view the complete list in my <a href="http://www.delicious.com/aaronparker/AppVRecipe">App-V Recipe Delicious Bookmarks</a>.</p>
<p><a href="http://blog.stealthpuppy.com/appvrecipes/">Enjoy</a>.</p>
<p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/200-app-v-recipes-tips-and-tricks-to-keep-you-busy/">200 App-V Recipes, Tips and Tricks to keep you busy</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stealthpuppy.com/virtualisation/200-app-v-recipes-tips-and-tricks-to-keep-you-busy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sequencing the App-V Management Console</title>
		<link>http://blog.stealthpuppy.com/virtualisation/sequencing-the-app-v-management-console/</link>
		<comments>http://blog.stealthpuppy.com/virtualisation/sequencing-the-app-v-management-console/#comments</comments>
		<pubDate>Fri, 21 Jan 2011 17:30:40 +0000</pubDate>
		<dc:creator>Aaron Parker</dc:creator>
				<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[App-V]]></category>

		<guid isPermaLink="false">http://blog.stealthpuppy.com/?p=2079</guid>
		<description><![CDATA[Sequencing the the App-V Management Console is reasonably straight-forward; however it wasn&#8217;t quite as simple as you would expect. Prerequisites The Application Virtualization Management Console requires the Microsoft Management Console (MMC) 3.0 or later and the .NET Framework 2.0 SP2. &#8230; <a href="http://blog.stealthpuppy.com/virtualisation/sequencing-the-app-v-management-console/">Continue reading <span class="meta-nav">&#8594;</span></a><p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/sequencing-the-app-v-management-console/">Sequencing the App-V Management Console</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></description>
			<content:encoded><![CDATA[<p><a rel="attachment wp-att-2110" href="http://blog.stealthpuppy.com/virtualisation/sequencing-the-app-v-management-console/attachment/appvconsolebox/"><img class="alignright size-full wp-image-2110" title="AppVConsoleBox" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/01/AppVConsoleBox.png" alt="" width="131" height="128" /></a>Sequencing the the App-V Management Console is reasonably straight-forward; however it wasn&#8217;t quite as simple as you would expect.</p>
<h3>Prerequisites</h3>
<p>The Application Virtualization Management Console requires the Microsoft Management Console (MMC) 3.0 or later and the .NET Framework 2.0 SP2. MMC 3.0 comes with all of the current Windows releases and the .NET Framework comes with Windows Vista and above, so you should only need to install the .NET Framework if you are targeting Windows XP or Windows Server 2003. MMC is an operating system component, so you won’t be able to sequence it.</p>
<h3>Preparing the Sequencer</h3>
<p>I have used the 4.6 Sequencer and Windows 7 x86 for this sequence, so the prerequisites are already installed; however I have run the MMC at least once to ensure any Registry and AppData locations have been written prior to sequencing.</p>
<p><strong>Important</strong>: Stick with the x86 version of Windows because when sequencing on 64-bit Windows the snap-in does not appear to register during sequencing and this error is received when starting SftMMC.msc:</p>
<p><a rel="attachment wp-att-2083" href="http://blog.stealthpuppy.com/virtualisation/sequencing-the-app-v-management-console/attachment/unabletocreatenewdocument2/"><img class="size-full wp-image-2083" title="UnableToCreateNewDocument2" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/01/UnableToCreateNewDocument2.png" alt="Unable to create new document." width="291" height="171" /></a></p>
<p>I have successfully sequenced on 32-bit Windows 7 and run the package on 64-bit Windows.</p>
<h3>Exclusion Items</h3>
<p>I found that I need to add <em>Q:\System Volume Information</em> to the list of exclusion items, as this was captured during monitoring.</p>
<h3>Configuring the Console Install</h3>
<p>I am using the setup source for the Management Server (not the Streaming Server) and I have chosen to install only the Management Console (we don’t want to capture the Management Server or web service). I am installing into a folder on the Q: drive; however this isn’t a requirement – you can install to the default Program Files location if you like.</p>
<p><a rel="attachment wp-att-2084" href="http://blog.stealthpuppy.com/virtualisation/sequencing-the-app-v-management-console/attachment/appvmanagementconsoleinstaller/"><img class="size-full wp-image-2084" title="AppVManagementConsoleInstaller" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/01/AppVManagementConsoleInstaller.png" alt="App-V Management Console install" width="504" height="382" /></a></p>
<p>Setup requests a reboot when finished, but the Sequencer will handle the reboot automatically.</p>
<p>To ensure that my sequence can be replicated quickly and easily, I have used the following command line to perform a silent installation of the console during the monitoring phase:</p>
<p>MSIEXEC /I setup.msi ADDLOCAL=Release_SoftGrid_Management_Console INSTALLDIR=Q:\APPVMMC.001\Console REBOOT=SUPPRESS OPTIN=FALSE /QB-</p>
<p>The complete list of command line options for the Console installer can be found in this knowledgebase article: <a href="http://support.microsoft.com/kb/2384955">Supported command line options for the Microsoft App-V 4.5 Management Server installer</a>.</p>
<h3>Sequencing the Console</h3>
<p>Follow the recommendations outlined in the <a href="http://download.microsoft.com/download/F/7/8/F784A197-73BE-48FF-83DA-4102C05A6D44/App-46_Sequencing_Guide_Final.docx" class="broken_link">Microsoft Application Virtualization 4.6 Sequencing Guide</a>.</p>
<p>Monitoring phase – install the Console during the Sequencing phase. Open MMC and check that the App Virt Management Console snap-in is available or start the Application Virtualization Management Console shortcut. There is no need to connect to a Management Server during sequencing.</p>
<p>Configure Applications phase – the default shortcut will point directly to the SftMMC.MSC file. In my case this was <em>&#8220;Q:\APPVMMC.001\Console\App Virt Management Console\SftMMC.msc&#8221;</em>. Change the Application Path to read <em>&#8220;C:\Windows\System32\MMC.EXE&#8221; &#8220;Q:\APPVMMC.001\Console\App Virt Management Console\SftMMC.msc&#8221;</em> instead (change the install path to suit your own environment). Change the Version and OSD File Name default text to suit your standards.</p>
<p>Once the package is saved, the CODEBASE line in the OSD file will include FILENAME and PARAMETERS elements that will look something like this:</p>
<pre class="brush: plain; title: ; notranslate">PARAMETERS=&quot;&amp;quot;%SFT_MNT%\appvmmc.001\Console\App Virt Management Console\SftMMC.msc&amp;quot;&quot; FILENAME=&quot;%CSIDL_SYSTEM%\MMC.EXE&quot;</pre>
<p>Launch Applications phase – you can build Feature Block 1 if you require it, but the final package size is very small.</p>
<h3>Saving the Package</h3>
<p>There are no additional changes that need to be made to the package. I saved my package with the following properties:</p>
<ul>
<li>Operating Systems Selected: none</li>
<li>Enforce Security Descriptors: enabled</li>
<li>Generate Microsoft Windows Installer Package: enabled</li>
<li>Compress Package: enabled</li>
</ul>
<h3>Running the Package</h3>
<p>The default requested execution level for the Microsoft Management Console is <a href="http://technet.microsoft.com/en-us/library/cc709628(WS.10).aspx">RunAsHighest</a>. This means that if you are running MMC as an account that is in the local Administrators group, UAC will prompt for elevation. This is a problem when running under App-V because the App-V client components do not request a higher token.</p>
<p>When you start the virtualised Management Console the following error will be produced:</p>
<p><a rel="attachment wp-att-2085" href="http://blog.stealthpuppy.com/virtualisation/sequencing-the-app-v-management-console/attachment/apprequireselevation/"><img class="size-full wp-image-2085" title="AppRequiresElevation" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/01/AppRequiresElevation.png" alt="The requested operation requires elevation. Error code: 4604EE8-1B401F2C-000002E4" width="501" height="276" /></a></p>
<p>You can get around this issue three ways:</p>
<ol>
<li>Run as a standard user only (the console allows you to connect to a remote system with alternate credentials)</li>
<li>Right-clicking the shortcut and choosing <em>Run as administrator;</em> or</li>
<li>Force the package to run with the user’s current execution level using the <a href="http://blogs.technet.com/b/virtualworld/archive/2010/04/13/the-requested-operation-requires-elevation-2c-000002e4.aspx">__COMPAT_LAYER environment variable</a>.</li>
</ol>
<p>Option 3 is probably the simplest method. To prevent MMC from requesting higher privileges, add the following lines to the OSD file inside the VIRTUALENV tag:</p>
<pre class="brush: plain; title: ; notranslate">&lt;ENVLIST&gt;

&lt;ENVIRONMENT VARIABLE=&quot;__COMPAT_LAYER&quot;&gt;RunAsInvoker&lt;/ENVIRONMENT&gt;

&lt;/ENVLIST&gt;</pre>
<p>However this works great for 32-bit Windows only, using this method on a 64-bit platform results in these errors:</p>
<p><a rel="attachment wp-att-2086" href="http://blog.stealthpuppy.com/virtualisation/sequencing-the-app-v-management-console/attachment/64bit32bitmmc2/"><img class="size-full wp-image-2086" title="64Bit32BitMMC2" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/01/64Bit32BitMMC2.png" alt="An error occurred while starting the 64-bit MMC process. The 32-bit MMC process will run instead." width="480" height="171" /></a></p>
<p>Then:</p>
<p><a rel="attachment wp-att-2083" href="http://blog.stealthpuppy.com/virtualisation/sequencing-the-app-v-management-console/attachment/unabletocreatenewdocument2/"><img class="size-full wp-image-2083" title="UnableToCreateNewDocument2" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/01/UnableToCreateNewDocument2.png" alt="Unable to create new document." width="291" height="171" /></a></p>
<p>I haven’t found a root cause, but the issue looks to be related to the App-V client. When using the <a href="http://blogs.msdn.com/b/cjacks/archive/2009/09/13/how-to-run-applications-manifested-as-highestavailable-with-a-logon-script-without-elevation-for-members-of-the-administrators-group.aspx">RunAsInvoker</a> trick outside of the client, MMC works as expected.</p>
<p>If you are deploying the package to 64-bit Windows, the <em>Run as administrator</em> option will be required to launch the console.</p>
<h3>Resources</h3>
<ul>
<li><a href="http://support.microsoft.com/kb/2559075/">Elevation and Run-As Considerations in Microsoft App-V Environments</a></li>
</ul>
<p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/sequencing-the-app-v-management-console/">Sequencing the App-V Management Console</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stealthpuppy.com/virtualisation/sequencing-the-app-v-management-console/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>App-V FAQ: What are Providers Policies?</title>
		<link>http://blog.stealthpuppy.com/virtualisation/what-are-providers-policies/</link>
		<comments>http://blog.stealthpuppy.com/virtualisation/what-are-providers-policies/#comments</comments>
		<pubDate>Tue, 18 Jan 2011 15:00:00 +0000</pubDate>
		<dc:creator>Aaron Parker</dc:creator>
				<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[AppVFAQ]]></category>

		<guid isPermaLink="false">http://blog.stealthpuppy.com/virtualisation/app-v-faq-32-what-are-providers-policies/</guid>
		<description><![CDATA[This is a guest post from Jurjen van Leeuwen, an App-V MVP (new for 2011) and independent consultant based in Norway. You can read more from Jurjen at his web site. Provider Policies are ‘rules’ that apply when users launch &#8230; <a href="http://blog.stealthpuppy.com/virtualisation/what-are-providers-policies/">Continue reading <span class="meta-nav">&#8594;</span></a><p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/what-are-providers-policies/">App-V FAQ: What are Providers Policies?</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></description>
			<content:encoded><![CDATA[<p><em>This is a guest post from Jurjen van Leeuwen, an App-V MVP (</em><a href="http://leodesk.com/blog/2011/1/leodesk-mvp-for-app-v-2011.aspx"><em>new for 2011</em></a><em>) and independent consultant based in Norway. You can read more from Jurjen at </em><a href="http://leodesk.com/blog.aspx"><em>his web site</em></a><em>.</em></p>
<p><img style="margin: 0px 0px 5px 10px; display: inline; float: right;" src="http://blog.stealthpuppy.com/wp-content/uploads/2010/06/AppVFAQLogo.png" alt="" align="right" />Provider Policies are ‘rules’ that apply when users launch virtual applications from a Microsoft App-V Management Server using RTSP(s). Other App-V infrastructure scenarios or the use of the HTTP(s) protocol don’t support the use of Provider Policies.</p>
<p>The ‘rules’ allow App-V administrators to control the following settings:</p>
<ul>
<li><strong>Server access &#8211; </strong>The Active Directory group that can connect to the server through the Provider Policy.</li>
<li><strong>Authentication &#8211; </strong>If authentication is required to connect to the server or the use of applications.</li>
<li><strong>Logging &#8211; </strong>Record application usage data in the App-V data store.</li>
<li><strong>Licensing &#8211; </strong>Whether or not to audit or enforce application licenses.</li>
<li><strong>Client refresh behaviour &#8211; </strong>At which interval and events the client checks with the server for application changes. For example new applications and shortcuts, removed or disabled applications. At a refresh, the client will also communicate the application usage logging with the server if configured.</li>
</ul>
<h3>Why would I use them?</h3>
<p>Besides the Provider Policy created by the installation process of the App-V Management Server, called the Default Provider, you would basically need multiple Provider Policies if you require maintaining different configurations of the settings mentioned in the previous paragraph. For example different Provider Policies are required for auditing AND enforcing licensing: If you have one or more applications where you want to enforce licensing and monitor license usage for some other applications you will need two different Provider Policies. Another example would be a separate Provider Policy which doesn’t require authentication for specific applications for contractors.</p>
<h3>How do I use them?</h3>
<p>Only the App-V Management Server offers the use of Provider Policies which itself requires Active Directory and Microsoft SQL to hold the App-V data store.</p>
<p>When installing the App-V Management Server one Provider Policy is created by default, called <em>Default Provider</em>. This Provider Policy is tied to the default created server group which is named Default Server Group, if no other name was specified during the App-V Management Server setup.</p>
<p>To create a new Provider Policy right click the Provider Policies node in the App-V Management Console and choose: <em>New Provider Policy</em>. The Properties screen allows for naming the new Provider Policy and the configuration of the client refresh behaviour. The minimum interval for a scheduled refresh is 30 minutes.</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/01/ProviderPolicyGeneral.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="ProviderPolicyGeneral" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/01/ProviderPolicyGeneral_thumb.png" border="0" alt="ProviderPolicyGeneral" width="600" height="460" /></a></p>
<p>In the Group Assignment screen select the Active Directory groups that have access to the App-V server through this Provider Policy. A minimum of one group is required. The user has to be a member of this group when the Authentication checkbox is set on the Provider Pipeline screen.</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/01/ProviderPolicyGroupAssignment.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="ProviderPolicyGroupAssignment" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/01/ProviderPolicyGroupAssignment_thumb.png" border="0" alt="ProviderPolicyGroupAssignment" width="600" height="460" /></a></p>
<p>The Provider Pipeline screen allows the following options to be set:</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/01/ProviderPolicyProviderPipeline.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="ProviderPolicyProviderPipeline" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/01/ProviderPolicyProviderPipeline_thumb.png" border="0" alt="ProviderPolicyProviderPipeline" width="600" height="460" /></a></p>
<p><strong>Authentication</strong>: This checkbox forces authentication in the session. If the App-V client can’t use the current user’s credentials, a login box is shown to the user to provide them. Disabling this checkbox allows any user to launch applications from the App-V server through this Provider Policy. The Authentication dropdown box only has one option: Windows Authentication.</p>
<p>With the <strong>Enforce Access Permission Settings</strong> checkbox enabled the user can only launch an application if he is a member of an Active Directory group specified on the Access Permissions tab under the Properties of an Application.</p>
<p><strong>Log Usage Information</strong>: With this checkbox selected, application usage data is stored in the App-V data store. This allows administrators to generate a basic report from the Management Console or extract this information by other means.</p>
<p><strong>Licensing</strong>: When enabled this setting allows for monitoring (auditing) or enforcing application licenses. Auditing still allows the use of applications even when the license count would exceed. Licenses are created in the Application Licenses node of the Management Console and an application is assigned to a license.</p>
<p>After creating the Provider Policy, the Provider Pipeline tab under Properties shows an Advanced button. Under this button the corresponding modules (.dll files) to the checkboxes are shown.</p>
<p>There are two ways to control which Provider Policy applies in a session between the client and the server:</p>
<p>1. The default Provider Policy configured for the Server Group: On the General tab of the Server Group properties specify the default Provider Policy to use:</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2011/01/ServerGroupProviderPolicy.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="ServerGroupProviderPolicy" src="http://blog.stealthpuppy.com/wp-content/uploads/2011/01/ServerGroupProviderPolicy_thumb.png" border="0" alt="ServerGroupProviderPolicy" width="486" height="420" /></a></p>
<p>In this case the Provider Policy applies when users connect to a server from this Server Group.</p>
<p>2. With the Policy specified in the Application’s OSD file: In the CODEBASE tag add the Provider Policy to the HREF value by appending .SFT file name with the following text: <em>?Customer=ProviderPolicyName</em>. For example:</p>
<pre class="brush: plain; title: ; notranslate">HREF=&quot;RTSPS://%SFT_SOFTGRIDSERVER%:322/WINZIP.001/WINZIP.001.sft?Customer=MyProviderPolicy&quot;</pre>
<p>Any Provider Policy specifically assigned in an OSD file will overrule the Provider Policy configured at on the Server Group.</p>
<h3>Additional Resources</h3>
<ul>
<li><a href="http:// http://technet.microsoft.com/en-us/library/cc817174.aspx" class="broken_link">How to Customize an Application Virtualization System in the Server Management Console</a></li>
<li>For more information on App-V infrastructure scenarios take a look at the <a href="http://blog.stealthpuppy.com/deployment/app-v-faq-20-what-are-the-deployment-methods-for-app-v/">App-V FAQ #20</a></li>
<li><a href="http://blogs.technet.com/b/appv/archive/2011/05/19/the-ultimate-guide-to-application-licensing-and-provider-policies-for-application-virtualization-4-5.aspx">The Ultimate Guide to Application Licensing and Provider Policies for Application Virtualization 4.5</a></li>
</ul>
<p>For more information on streaming, publishing and client configuration when using HTTP take a look at these links:</p>
<ul>
<li><a href="http://blogs.technet.com/b/appv/archive/2010/06/14/a-guide-to-app-v-publishing-and-streaming-using-iis.aspx">A guide to App-V publishing and streaming using IIS</a></li>
<li><a href="http://blogs.msdn.com/b/johnsheehan/archive/2009/03/24/http-publishing-in-app-v-part-1.aspx">HTTP Publishing in App-V (Part 1)</a></li>
<li><a href="http://technet.microsoft.com/en-us/library/ee956912.aspx">Support for Client Reporting over HTTP</a></li>
</ul>
<p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/what-are-providers-policies/">App-V FAQ: What are Providers Policies?</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stealthpuppy.com/virtualisation/what-are-providers-policies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>App-V FAQ: Can I virtualize the .NET Framework or Visual C++ Redistributables?</title>
		<link>http://blog.stealthpuppy.com/virtualisation/can-i-virtualize-the-net-framework/</link>
		<comments>http://blog.stealthpuppy.com/virtualisation/can-i-virtualize-the-net-framework/#comments</comments>
		<pubDate>Tue, 14 Dec 2010 14:00:00 +0000</pubDate>
		<dc:creator>Aaron Parker</dc:creator>
				<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[AppVFAQ]]></category>

		<guid isPermaLink="false">http://blog.stealthpuppy.com/virtualisation/app-v-faq-31-can-i-virtualize-the-net-framework-or-visual-c-redistributables/</guid>
		<description><![CDATA[This is a guest post from Nicke Källén, an App-V MVP from Sweden. He posts as Znack on the TechNet Forums, and you can read more articles from Nicke at his blog here. The .NET Framework and Visual C++ Redistributables &#8230; <a href="http://blog.stealthpuppy.com/virtualisation/can-i-virtualize-the-net-framework/">Continue reading <span class="meta-nav">&#8594;</span></a><p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/can-i-virtualize-the-net-framework/">App-V FAQ: Can I virtualize the .NET Framework or Visual C++ Redistributables?</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></description>
			<content:encoded><![CDATA[<p><em>This is a guest post from Nicke Källén, an </em><a href="https://mvp.support.microsoft.com/profile=DEDA5599-4A38-46A1-A4B0-479D4A945793" class="broken_link"><em>App-V MVP</em></a><em> from Sweden. He posts as <a href="http://social.technet.microsoft.com/Profile/en-US/?user=znack&amp;referrer=http%3a%2f%2fsocial.technet.microsoft.com%2fForums%2fen-US%2fappvclients%2fthread%2fba1a1e3b-b14e-45aa-9373-ba83601b67e9%3foutputas%3dxml&amp;rh=tWq%2byX14GBUU1nKZoHcORYkqCJLPYn4mhXSrzDpr8kk%3d&amp;sp=forums">Znack</a> on the <a href="http://social.technet.microsoft.com/Forums/en-gb/category/appvirtualization">TechNet Forums</a>, and you can read more articles from Nicke at his blog </em><a href="http://www.viridisit.se/eng/blog/"><em>here</em></a><em>.</em></p>
<p><img style="margin: 0px 10px 5px 0px; display: inline; float: left;" src="http://blog.stealthpuppy.com/wp-content/uploads/2010/06/AppVFAQLogo1.png" alt="" align="left" />The .NET Framework and Visual C++ Redistributables are components or application dependencies that have started to be considered as operating system components and the question of whether to include the .NET Framework and/or the Visual C++ Redistributables has been revisited quite a few times by Microsoft.</p>
<p>Since the release of App-V 4.5 it has been recommended that all versions of the .NET Framework are installed natively, however since the release of App-V 4.5 Cumulative Update 1 this was subsequently revised for Windows XP and this allowed versions earlier than the .NET Framework 3.5 Service Pack 1 to be part the package.</p>
<p>As a good practice any sequencing machine should be setup in a similar way as the client and therefore its key to synchronize the levels of the .NET Framework and Visual C++ Redistributables on both the sequencer and client computers. Visual C++ Redistributable are prerequisites for both the client and the Sequencer, however the current level is different depending on which version you are installing.</p>
<p>Microsoft have not explicitly stated that it is not possible to include the Visual C++ Redistributables within a virtualized application; however an older <a href="http://support.microsoft.com/kb/939084">Knowledgebase article</a> (939084) states that they should be available locally on a client computer.</p>
<p>As illustrated on the official <a href="http://technet.microsoft.com/appvirtualization/dd146065.aspx">.NET Framework support statement</a>, the .NET Frameworks are included in all newer operating systems (Windows 7 includes .NET Framework 3.5 Service Pack 1 and below). Windows XP Service Pack 2 (and thereby we can also presume Windows Server 2003) is the only platform that would successfully execute a virtualized package containing .NET Framework while not having it available natively. The Application Virtualization 4.5 Cumulative Update 1 client would allow this due to a new mini-filter driver introduced in the update.</p>
<p>Regardless of whether it is possible to virtualize certain versions of .NET Framework on older platforms – it seems to be an more scalable and future-proof strategy to ensure that .NET Framework and Visual C++ Redistributables are available on any target machines for any virtualized application to use.</p>
<p>Normally the following can be recommended to be setup both on the sequencer and the client; (32-bit versions only linked below. 64-bit versions in case of availability are recommended also in case of having a 64-bit target environment)</p>
<h3>Visual C++ 2005 SP1</h3>
<ul>
<li><a href="http://www.microsoft.com/downloads/en/details.aspx?familyid=200b2fd9-ae1a-4a14-984d-389c36f85647&amp;displaylang=en">http://www.microsoft.com/downloads/en/details.aspx?familyid=200b2fd9-ae1a-4a14-984d-389c36f85647&amp;displaylang=en</a></li>
<li><a href="http://www.microsoft.com/downloads/en/details.aspx?familyid=766a6af7-ec73-40ff-b072-9112bab119c2&amp;displaylang=en">http://www.microsoft.com/downloads/en/details.aspx?familyid=766a6af7-ec73-40ff-b072-9112bab119c2&amp;displaylang=en</a></li>
</ul>
<h3>Visual C++ 2008 SP1</h3>
<ul>
<li><a href="http://www.microsoft.com/downloads/en/details.aspx?familyid=2051a0c1-c9b5-4b0a-a8f5-770a549fd78c&amp;displaylang=en">http://www.microsoft.com/downloads/en/details.aspx?familyid=2051a0c1-c9b5-4b0a-a8f5-770a549fd78c&amp;displaylang=en</a></li>
<li><a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=a5c84275-3b97-4ab7-a40d-3802b2af5fc2&amp;displaylang=en">http://www.microsoft.com/downloads/en/details.aspx?FamilyID=a5c84275-3b97-4ab7-a40d-3802b2af5fc2&amp;displaylang=en</a></li>
</ul>
<h3>Visual C++ 2010</h3>
<ul>
<li><a href="http://www.microsoft.com/downloads/en/details.aspx?familyid=A7B7A05E-6DE6-4D3A-A423-37BF0912DB84&amp;displaylang=en">http://www.microsoft.com/downloads/en/details.aspx?familyid=A7B7A05E-6DE6-4D3A-A423-37BF0912DB84&amp;displaylang=en</a></li>
</ul>
<h3>.NET Framework 1.1 / 2.0 / 3.0 / 3.5 / 4.0</h3>
<ul>
<li><a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=0a391abd-25c1-4fc0-919f-b21f31ab88b7&amp;displaylang=en">http://www.microsoft.com/downloads/en/details.aspx?FamilyID=0a391abd-25c1-4fc0-919f-b21f31ab88b7&amp;displaylang=en</a></li>
<li><a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=ab99342f-5d1a-413d-8319-81da479ab0d7&amp;displaylang=en">http://www.microsoft.com/downloads/en/details.aspx?FamilyID=ab99342f-5d1a-413d-8319-81da479ab0d7&amp;displaylang=en</a></li>
<li><a href="http://support.microsoft.com/kb/959209">http://support.microsoft.com/kb/959209</a></li>
<li><a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyId=262D25E3-F589-4842-8157-034D1E7CF3A3&amp;displaylang=en">http://www.microsoft.com/downloads/en/details.aspx?FamilyId=262D25E3-F589-4842-8157-034D1E7CF3A3&amp;displaylang=en</a></li>
</ul>
<p>The Application Virtualization Client requires <a href="http://www.microsoft.com/downloads/en/details.aspx?familyid=200b2fd9-ae1a-4a14-984d-389c36f85647&amp;displaylang=en">Visual C++ 2005 SP1</a> along with the <a href="http://www.microsoft.com/downloads/en/details.aspx?familyid=766a6af7-ec73-40ff-b072-9112bab119c2&amp;displaylang=en">ATL security update</a> and the <a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=a5c84275-3b97-4ab7-a40d-3802b2af5fc2&amp;displaylang=en">Visual C++ 2008 SP1</a> along with its <a href="http://www.microsoft.com/downloads/en/details.aspx?familyid=2051a0c1-c9b5-4b0a-a8f5-770a549fd78c&amp;displaylang=en">ATL security update</a>; however the Sequencer only installs <a href="http://www.microsoft.com/downloads/en/details.aspx?familyid=200b2fd9-ae1a-4a14-984d-389c36f85647&amp;displaylang=en">Visual C++ 2005 SP1</a> along with its <a href="http://www.microsoft.com/downloads/en/details.aspx?familyid=766a6af7-ec73-40ff-b072-9112bab119c2&amp;displaylang=en">ATL security update</a>.  This of course requires the manual tasks of assuring that both are aligned on the same level in prerequisites.</p>
<p>Reading section 3.2 from the <a href="http://download.microsoft.com/download/F/7/8/F784A197-73BE-48FF-83DA-4102C05A6D44/App-46_Sequencing_Guide_Final.docx" class="broken_link">4.6 sequencing whitepaper</a> gives some specific examples how to resolve possible SxS issues when sequencing on a 64-bit sequencer – something which can be avoided if being prepared and already natively offering both 32-bit and 64-bit redistributables on both sequencer and client machine.</p>
<p>Not documented anywhere and purely untested, normally these following redistributables can also be recommended in maintaining natively;</p>
<h3>Visual J#</h3>
<ul>
<li><a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=E3CF70A9-84CA-4FEA-9E7D-7D674D2C7CA1">http://www.microsoft.com/downloads/en/details.aspx?FamilyID=E3CF70A9-84CA-4FEA-9E7D-7D674D2C7CA1</a></li>
<li><a href="http://www.microsoft.com/downloads/en/details.aspx?familyid=f72c74b3-ed0e-4af8-ae63-2f0e42501be1&amp;displaylang=en">http://www.microsoft.com/downloads/en/details.aspx?familyid=f72c74b3-ed0e-4af8-ae63-2f0e42501be1&amp;displaylang=en</a></li>
</ul>
<p><strong> </strong></p>
<h3>Visual Studio 2010 F# Runtime 2.0</h3>
<ul>
<li><a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=5f0a79f8-925f-4297-9ae2-86e2fdcff33c&amp;displaylang=en">http://www.microsoft.com/downloads/en/details.aspx?FamilyID=5f0a79f8-925f-4297-9ae2-86e2fdcff33c&amp;displaylang=en</a></li>
</ul>
<h3>Further reading and resources</h3>
<ul>
<li><a href="http://technet.microsoft.com/en-us/library/cc817171.aspx">Application Virtualization 4.5 Release Notes</a></li>
<li><a href="http://support.microsoft.com/kb/2519958">Guide to sequencing .NET 4.0 with App-V 4.6 SP1</a></li>
<li><a href="http://technet.microsoft.com/appvirtualization/dd146065.aspx">Support for .NET in Microsoft Application Virtualization (4.5) and 4.5 Cumulative Update 1</a></li>
<li><a href="http://support.microsoft.com/kb/959524">Support for .NET in Microsoft Application Virtualization 4.5 (App-V)</a></li>
<li><a href="http://support.microsoft.com/kb/939084">Error message when you try to start a sequenced application in the Microsoft App-V (SoftGrid) client: &#8220;Error code: xxxxxx-xxxxxx2C-800736B1&#8243;</a></li>
<li><a href="http://download.microsoft.com/download/F/7/8/F784A197-73BE-48FF-83DA-4102C05A6D44/App-46_Sequencing_Guide_Final.docx" class="broken_link">Microsoft Application Virtualization 4.6 Sequencing Guide</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/ms235624(VS.80).aspx">Visual C++ Libraries as Shared Side-by-Side Assemblies</a></li>
<li><a href="http://blog.kalmbach-software.de/2008/05/03/howto-deploy-vc2008-apps-without-installing-vcredist_x86exe/">Howto: Deploy VC2008 apps without installing vcredist_x86.exe</a></li>
</ul>
<p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/can-i-virtualize-the-net-framework/">App-V FAQ: Can I virtualize the .NET Framework or Visual C++ Redistributables?</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stealthpuppy.com/virtualisation/can-i-virtualize-the-net-framework/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Virtualizing Adobe Reader X</title>
		<link>http://blog.stealthpuppy.com/virtualisation/virtualising-adobe-reader-x/</link>
		<comments>http://blog.stealthpuppy.com/virtualisation/virtualising-adobe-reader-x/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 13:00:00 +0000</pubDate>
		<dc:creator>Aaron Parker</dc:creator>
				<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[Adobe Reader]]></category>

		<guid isPermaLink="false">http://blog.stealthpuppy.com/virtualisation/virtualising-adobe-reader-x/</guid>
		<description><![CDATA[This post details virtualizing Adobe Reader X with Microsoft Application Virtualization 4.6; however the same basic steps should apply to virtualizing Reader with any other application virtualisation product. Don&#8217;t Virtualize Reader Before I get to the details I would like &#8230; <a href="http://blog.stealthpuppy.com/virtualisation/virtualising-adobe-reader-x/">Continue reading <span class="meta-nav">&#8594;</span></a><p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/virtualising-adobe-reader-x/">Virtualizing Adobe Reader X</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2010/10/ReaderXVirtualise.png"><img style="background-image: none; margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 10px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="ReaderXVirtualise" src="http://blog.stealthpuppy.com/wp-content/uploads/2010/10/ReaderXVirtualise_thumb.png" alt="ReaderXVirtualise" width="128" height="124" align="right" border="0" /></a>This post details virtualizing Adobe Reader X with Microsoft Application Virtualization 4.6; however the same basic steps should apply to virtualizing Reader with any other application virtualisation product.</p>
<h3>Don&#8217;t Virtualize Reader</h3>
<p>Before I get to the details I would like you to first consider the implications of virtualising Reader. Adobe Reader is often a common component of any desktop deployment and like Microsoft Office and Internet Explorer, it usually becomes a core application on which other applications depend.</p>
<p>If you are using a virtualisation solution that isolates an application from other applications and the operating system, integration can be a challenge. Let me illustrate with a couple of examples:</p>
<p><em>Internet Explorer</em>: if Reader is isolated from Windows, Internet Explorer will be able to download PDFs which can then be opened with the virtualised Reader; however IE will have no knowledge of any application that is handling the PDF file type or MIME type. Launching Reader inside IE or viewing a PDF <a href="http://blogs.adobe.com/pdfdevjunkie/2007/08/using_the_html_embed_tag_to_di.html">embedded in a web page</a> will not be possible.</p>
<p><img title="ComparingReaderInstallTypes" src="http://blog.stealthpuppy.com/wp-content/uploads/2010/10/ComparingReaderInstallTypes.png" alt="" width="660" height="241" /></p>
<p>You could solve this my launching Internet Explorer inside the Reader package, but this will require covering all of the ways a user can launch Internet Explorer. If you do that, what happens when you want IE to launch inside the environment of another package? App-V doesn&#8217;t handle integration with these entry points elegantly today.</p>
<p><em>Virtualised applications</em>: Additionally, if you need to provide other virtualised applications with Reader support, you will need to maintain <a href="http://www.microsoft.com/systemcenter/appv/dynamic.mspx">Dynamic Suite Composition</a> links to the Reader package for each primary package that requires it. Because Reader is used so often, managing DSC links is something that could get out of hand very quickly.</p>
<p>In most cases I do not recommend virtualizing Reader – your mileage may vary, but because of the additional administrative overhead and the change in the user experience, you should invest your time in other areas.</p>
<h3>Configuring the Adobe Reader installation</h3>
<p>If I haven&#8217;t convinced you that virtualizing Reader is more trouble that it&#8217;s worth, then here&#8217;s how to do it:</p>
<p>I&#8217;ve previously covered <a href="http://blog.stealthpuppy.com/deployment/deploying-adobe-reader-x/">how to create a customised deployment of Reader X</a> to suit your environment. If you have read that article yet, I recommend that you do before proceeding further. Automating the installation and configuration of Reader during sequencing will make it easier to re-create the package and will simplify documentation.</p>
<p>Here&#8217;s my recommendations for settings that you should configure when creating a transform to install Reader during sequencing:</p>
<ul>
<li><em>Personalisation Options</em>: change the install path if required. You can choose to install to the virtual drive; however a VFS install will work as well</li>
<li><em>Installation Options</em>: disable the caching of the Reader installer files to reduce the size of the package. Choose an unattended install and supress reboot</li>
<li><em>Files and Folders</em>: add the JavaScript (HideItems.js) to disable additional toolbar buttons and menu items</li>
<li><em>Registry</em>: add the bProtectedMode value to the Policies key to disable Protected Mode (more on that below)</li>
<li><em>Shortcuts</em>: disable the shortcut added to the Desktop</li>
<li><em>Server Locations</em>: additional server locations should not be required when virtualising Reader</li>
<li><em>EULA</em>: ensure that the End User License Agreement is suppressed</li>
<li><em>Online and Acrobat.com Features</em>: disabling the Adobe Updater is important so that user&#8217;s can&#8217;t attempt to update Reader after deployment</li>
<li><em>Direct Editor</em>: you can edit the Transform directly to prevent the installation of Adobe Updater (although you can just delete the ARM folder during sequencing).</li>
</ul>
<p>Reader X 10.1 introduces a new <em>Adobe Acrobat Updater Service</em>, you can use the Direct Editor to prevent the service from being installed, because it won&#8217;t be required once virtualized.</p>
<p>Create a script to perform the installation. Here&#8217;s a sample script that will install Reader, perform some additional actions that can be done in the transform file instead and will then launch Reader after setup has completed.</p>
<pre class="brush: plain; title: ; toolbar: true; notranslate">@ECHO OFF
START /WAIT MSIEXEC /I AcroRead.MSI TRANSFORMS=VirtualisedReaderX.MSI ALLUSERS=TRUE /QB-
IF &quot;%PROCESSOR_ARCHITECTURE%&quot;==&quot;AMD64&quot; RD /Q /S &quot;%CommonProgramFiles(x86)%\Adobe\ARM&quot;
IF &quot;%PROCESSOR_ARCHITECTURE%&quot;==&quot;x86&quot; RD /Q /S &quot;%CommonProgramFiles%\Adobe\ARM&quot;
REG ADD &quot;HKLM\SOFTWARE\Policies\Adobe\Acrobat Reader\10.0\FeatureLockDown&quot; /v bProtectedMode /d 0 /f
REG ADD &quot;HKLM\SOFTWARE\Policies\Adobe\Acrobat Reader\10.0\FeatureLockDown&quot; /v bUpdater /d 0 /f
IF EXIST &quot;%PUBLIC%\Desktop\Adobe Reader X.lnk&quot; DEL /F &quot;%PUBLIC%\Desktop\Adobe Reader X.lnk&quot;
IF &quot;%PROCESSOR_ARCHITECTURE%&quot;==&quot;AMD64&quot; START /D &quot;%ProgramFiles(x86)%\Adobe\Reader 10.0\Reader&quot; AcroRd32.exe
IF &quot;%PROCESSOR_ARCHITECTURE%&quot;==&quot;x86&quot; START /D &quot;%ProgramFiles%\Adobe\Reader 10.0\Reader&quot; AcroRd32.exe</pre>
<p>Copy the Reader setup files, the Windows Installer transform and the script into your sequencing machine before capturing. I generally use a folder named <em>C:\Packages</em> and add this location to the excludes for the package.</p>
<h3>Virtualizing Adobe Reader</h3>
<p>There are no additional requirements or dependencies for virtualizing Reader X and I have successfully created an App-V package on Windows 7 x86 and deployed to both x86 and x64 platforms using the custom installation and script outlined above.</p>
<p>I have provided here a copy of the App-V 4.6 SP1 Package Template which includes a number of exclusions that do not need to be captured in a Reader package.</p>
<p class="download"><img src="http://blog.stealthpuppy.com/images/downloads/green-download-arrow-grey-line.png" alt="Adobe Reader X App-V Package Template"/>  <a href="http://blog.stealthpuppy.com/wp-content/plugins/download-monitor/download.php?id=43" title="Downloaded 699 times">Adobe Reader X App-V Package Template</a></p>
<p>There is one issue though – the Adobe Reader Protected Mode doesn&#8217;t like running under App-V. During the monitoring phase the application may not launch on first run and on the second launch the following dialog box will be displayed:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="AdobeReaderProtectedModePrompt" src="http://blog.stealthpuppy.com/wp-content/uploads/2010/10/AdobeReaderProtectedModePrompt_thumb.png" alt="AdobeReaderProtectedModePrompt" width="660" height="232" border="0" /></p>
<p>Choosing the option &#8216;Always open with Protected Mode disabled&#8217; will save the setting in HKCU in the Registry, but until a fix is found (either by Adobe or Microsoft) you can disable Protected Mode using the following Registry key:</p>
<ul>
<li>Key: HKLM\SOFTWARE\Policies\Adobe\Acrobat Reader\10.0\FeatureLockDown</li>
<li>Value: bProtectedMode</li>
<li>Type: REG_DWORD</li>
<li>Data: 0</li>
</ul>
<p>The script listed above includes a REG command to disable Protected Mode, however this can be done in the transform file instead.</p>
<p>If Protected Mode is not disabled when Reader is virtualized or when it is running inside an App-V bubble via another package, it will crash with the following error: <em>Error in Microsoft Visual C++ Runtime Library</em>. Disable Protected Mode to avoid this issue.</p>
<h3>Conclusion</h3>
<p>Virtualizing Reader is straightforward and it performs well under App-V, although I would consider the implications of isolating Reader from the OS, even before you start the Sequencer. A virtualized Reader will require managing DSC links and you&#8217;ll need ensure that users understand the difference in behaviour with IE integration.</p>
<p>Hopefully an update of either Reader or App-V in the future will enable Protected Mode support to improve security.</p>
<h3>Resources</h3>
<p>To make the job of sequencing Reader X easier, the following App-V 4.6 SP1 Package Accelerators are available.</p>
<ul>
<li><a href="http://gallery.technet.microsoft.com/Adobe-Reader-X-101-en-US-42e026c8">App-V 4.6 SP1 Package Accelerator for Adobe Reader X 10.1</a></li>
<li><a href="http://gallery.technet.microsoft.com/Adobe-Reader-X-Package-ac504c1c">App-V 4.6 SP1 Package Accelerator for Adobe Reader X 10.0</a></li>
</ul>
<p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/virtualising-adobe-reader-x/">Virtualizing Adobe Reader X</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stealthpuppy.com/virtualisation/virtualising-adobe-reader-x/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>How to silently deploy RemoteApp Programs to the Start Menu</title>
		<link>http://blog.stealthpuppy.com/virtualisation/deploy-remoteapp-programs-start-menu-silently/</link>
		<comments>http://blog.stealthpuppy.com/virtualisation/deploy-remoteapp-programs-start-menu-silently/#comments</comments>
		<pubDate>Thu, 07 Oct 2010 13:00:00 +0000</pubDate>
		<dc:creator>Aaron Parker</dc:creator>
				<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[Remote Desktop Services]]></category>
		<category><![CDATA[RemoteApp]]></category>

		<guid isPermaLink="false">http://blog.stealthpuppy.com/virtualisation/deploying-remoteapp-programs-to-the-start-menu-silently/</guid>
		<description><![CDATA[RemoteApp in Windows Server 2008 R2 Remote Desktop Services finally allows you to do what some 3rd party solutions have been doing for years – delivering published applications directly to the user&#8217;s Start Menu. The bad news is that this &#8230; <a href="http://blog.stealthpuppy.com/virtualisation/deploy-remoteapp-programs-start-menu-silently/">Continue reading <span class="meta-nav">&#8594;</span></a><p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/deploy-remoteapp-programs-start-menu-silently/">How to silently deploy RemoteApp Programs to the Start Menu</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://technet.microsoft.com/en-us/library/cc733174.aspx"><img style="background-image: none; margin: 0px 10px 5px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; padding-top: 0px; border-width: 0px;" title="RemoteApp and Desktop Connections" src="http://blog.stealthpuppy.com/wp-content/uploads/2010/10/RemoteAppPrograms.png" border="0" alt="RemoteApp and Desktop Connections" width="128" height="128" align="left" />RemoteApp</a> in <a href="http://technet.microsoft.com/en-gb/windowsserver/remote-desktop-services-windows-server-2008-r2.aspx" class="broken_link">Windows Server 2008 R2</a> <a href="http://www.microsoft.com/windowsserver2008/en/us/rds-product-home.aspx">Remote Desktop Services</a> finally allows you to do what some 3rd party solutions have been doing for years – delivering published applications directly to the user&#8217;s Start Menu. The bad news is that this feature requires <a href="http://technet.microsoft.com/en-us/library/ee216759.aspx">Windows 7</a> and Windows Server 2008 R2, but your migrations plans are well underway right?</p>
<p>Creating the connection on the client computer is easy – setup a new connection via <a href="http://technet.microsoft.com/en-us/library/dd560650(WS.10).aspx">RemoteApp and Desktop Connections</a> in Control Panel or ask users to double click on a connection file that you&#8217;ve created on the RD Connection Broker.</p>
<p>The wizard is simple enough, just click the Next and Finish buttons when prompted, the wizard will do the rest:</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2010/10/SetupNewRemoteAppConnectionFinished.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="Setup a new connection with RemoteApp and Desktop Connections" src="http://blog.stealthpuppy.com/wp-content/uploads/2010/10/SetupNewRemoteAppConnectionFinished_thumb.png" border="0" alt="Setup a new connection with RemoteApp and Desktop Connections" width="660" height="524" /></a></p>
<p>But what if you want to deliver the connection silently? Fortunately that&#8217;s easy, but it&#8217;s one of those things that just isn&#8217;t documented. Here&#8217;s how to do it.</p>
<h3>Creating the RemoteApp and Desktop Connections Configuration File</h3>
<p>There are some excellent resources for setting up RemoteApp sources, Remote Desktop Web Access and publishing applications, so there&#8217;s no need to cover those again. If you haven&#8217;t already configured the <a href="http://technet.microsoft.com/en-us/library/cc742822.aspx">Remote Desktop Session Host</a> servers, <a href="http://technet.microsoft.com/en-us/library/dd759170.aspx">Remote Desktop Virtualization Host</a> servers (for publishing virtual desktops) and the <a href="http://technet.microsoft.com/en-us/library/cc771419.aspx">Remote Desktop Connection Broker</a> see these <a href="http://www.microsoft.com/downloads/en/results.aspx?freetext=remote+desktop+step-by-step&amp;displaylang=en&amp;stype=s_basic">step-by-step guides</a> first:</p>
<ul>
<li><a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=906b5769-07a2-452a-9783-30137b0d650a">Deploying Remote Desktop Web Access with Remote Desktop Connection Broker Step-by-Step Guide</a></li>
<li><a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=0d278f5c-37fa-43fb-8032-614c7bf1d617">Deploying Personal Virtual Desktops by Using Remote Desktop Web Access Step-by-Step Guide</a></li>
<li><a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=e33b0953-e89a-4b97-a6fe-60da44add5c7">Deploying Virtual Desktop Pools by Using Remote Desktop Web Access Step-by-Step Guide</a></li>
<li><a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=b00819e6-70e2-4a9e-9224-26804eb0ba4e">Deploying RemoteApp Programs to the Start Menu by Using RemoteApp and Desktop Connection Step-by-Step Guide</a></li>
</ul>
<p>Now that you&#8217;ve configured your RemoteApp and Desktop sources and RD Web Access and confirmed that you can manually add a RemoteApp and Desktop Connection source to your client machine, you&#8217;ll need to create the <a href="http://technet.microsoft.com/en-us/library/ee216782.aspx">RemoteApp and Desktop Connections Configuration File</a>.</p>
<p>Open the Remote Desktop Connection Manager tool on the Remote Desktop Connection Broker and choose <em>Create Configuration File</em>. Enter the URL to the RAD Connection feed, in my case this is <a title="https://home.stealthpuppy.com/RDWeb/Feed/webfeed.aspx" href="https://home.stealthpuppy.com/RDWeb/Feed/webfeed.aspx" class="broken_link">https://home.stealthpuppy.com/RDWeb/Feed/webfeed.aspx</a></p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2010/10/RemoteDesktopConnectionManager.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="Creating the RemoteApp and Desktop Connections Configuration File" src="http://blog.stealthpuppy.com/wp-content/uploads/2010/10/RemoteDesktopConnectionManager_thumb.png" border="0" alt="Creating the RemoteApp and Desktop Connections Configuration File" width="660" height="359" /></a></p>
<p>Click the Save button and save the configuration file to a location that you can also access from the client machine. The configuration file is just simple XML, so open it in Notepad to view the contents.</p>
<h3>Adding the RemoteApp and Desktop Connection</h3>
<p>Adding the connection is simple, but you will need to do this in the users&#8217; context, so you&#8217;ll have to use a logon script or similar to run the command. The machine on which the command is run must also be connected to the network (it will fail silently if a connection can&#8217;t be made) and be able to make a connection to the Remote Desktop Connection Broker. To add the workspace silently run this command:</p>
<pre class="brush: plain; title: ; notranslate">rundll32.exe tsworkspace,WorkspaceSilentSetup &lt;path&gt;\connection-file.wcx</pre>
<p>That&#8217;s it. If the connection already exists and the command is run again, it will fail silently.</p>
<h3>Advanced Configuration</h3>
<p>A PowerShell script is available from Microsoft that can check whether the connection already exists before running the setup command and will log an event if the setup fails. The script can be found here: <a href="http://gallery.technet.microsoft.com/ScriptCenter/en-us/313a95b3-a698-4bb0-9ed6-d89a47eacc72">Configure RemoteApp and Desktop Connection on Windows 7 Clients</a></p>
<h3>More Reading</h3>
<ul>
<li><a href="http://blogs.technet.com/b/askperf/archive/2009/10/14/windows-7-windows-server-2008-r2-remoteapp-and-desktop-connection.aspx">Windows 7 / Windows Server 2008 R2: RemoteApp and Desktop Connection</a></li>
</ul>
<p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/deploy-remoteapp-programs-start-menu-silently/">How to silently deploy RemoteApp Programs to the Start Menu</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stealthpuppy.com/virtualisation/deploy-remoteapp-programs-start-menu-silently/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>App-V FAQ: My virtual application won&#8217;t start. Where do I start troubleshooting?</title>
		<link>http://blog.stealthpuppy.com/virtualisation/troubleshoot-with-the-app-v-client-log/</link>
		<comments>http://blog.stealthpuppy.com/virtualisation/troubleshoot-with-the-app-v-client-log/#comments</comments>
		<pubDate>Fri, 24 Sep 2010 11:00:00 +0000</pubDate>
		<dc:creator>Aaron Parker</dc:creator>
				<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[App-V]]></category>
		<category><![CDATA[AppVFAQ]]></category>

		<guid isPermaLink="false">http://blog.stealthpuppy.com/virtualisation/troubleshoot-with-the-app-v-client-log/</guid>
		<description><![CDATA[If you have successfully virtualised an application, imported the package into the Management Server but you are having issues publishing the package, streaming the application or getting it to launch, the first place to start is the the App-V client &#8230; <a href="http://blog.stealthpuppy.com/virtualisation/troubleshoot-with-the-app-v-client-log/">Continue reading <span class="meta-nav">&#8594;</span></a><p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/troubleshoot-with-the-app-v-client-log/">App-V FAQ: My virtual application won&#8217;t start. Where do I start troubleshooting?</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></description>
			<content:encoded><![CDATA[<p><img style="margin: 0px 10px 5px 0px; display: inline;" src="http://blog.stealthpuppy.com/wp-content/uploads/2010/06/AppVFAQLogo.png" alt="" align="right" />If you have successfully virtualised an application, imported the package into the Management Server but you are having issues publishing the package, streaming the application or getting it to launch, the first place to start is the <a href="http://technet.microsoft.com/en-us/library/cc817165.aspx">the App-V client log</a>.</p>
<p>The client log settings are managed in the Application Virtualization Client console (SFTCMC.MSC) – start the console and the logging settings can be viewed on the General tab:</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2010/09/ClientProperties.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="ClientProperties" src="http://blog.stealthpuppy.com/wp-content/uploads/2010/09/ClientProperties_thumb.png" border="0" alt="ClientProperties" width="414" height="479" /></a></p>
<p>There are actually two places to which the the client will log errors – the Application event log (shown in the image under <em>System Log Level</em>) and the client log file; however the log file is generally the easiest to use when troubleshooting because it&#8217;s a flat text file.</p>
<h3>Using the client log file</h3>
<p>The default location for the log file is <em>%ProgramData%\Microsoft\Application Virtualization Client\sftlog.txt</em>. To view the log you can use something as simple as Notepad, but if you want to view it in real time, use SMS Trace (Trace32) from the <a href="http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&amp;FamilyID=5a47b972-95d2-46b1-ab14-5d0cbce54eb8">ConfigMgr 2007 Toolkit</a>.</p>
<p>To get more information out of the client, enable verbose mode, which will enable you to better identify the cause.</p>
<ol>
<li>Open the client console and view the client properties</li>
<li>Set the Log Level to <em>Verbose</em></li>
<li>Click the <em>Reset Log</em> button to start with a clean log file</li>
</ol>
<p>Resetting the log will rename the existing file and start a new one:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="LogLocation" src="http://blog.stealthpuppy.com/wp-content/uploads/2010/09/LogLocation.png" border="0" alt="LogLocation" width="660" height="200" /></p>
<p><strong>Note</strong>: once you have finished troubleshooting, don&#8217;t forget to set the logging level back to <em>Information</em>.</p>
<h3>Here&#8217;s an example</h3>
<p>In my test environment, I have a client machine (WIN71) and an App-V Management Server (APPV). I&#8217;ve imported a virtualised copy of Adobe Reader and assigned it to a set of users. On the client I have configured APPV as a publishing server; however when refreshing the client no shortcuts for Reader are created.</p>
<p>Viewing the App-V client log, I&#8217;ve narrowed down the following lines that show what&#8217;s going on during the refresh:</p>
<pre class="brush: plain; title: ; notranslate">[09/23/2010 22:03:50:885 SWAP WRN] {tid=B60:usr=aaron}
Could not load OSD file \\domain.local\Public\Apps\AdobeReader9_x86\AdobeReader9.osd

[09/23/2010 22:03:50:900 AMGR INF] {tid=B60:usr=aaron}
The app manager could not create an application from '\\domain.local\Public\Apps\AdobeReader9_x86\AdobeReader9.osd' (rc 0C405564-00000002).</pre>
<p>If I set the log to verbose and try the refresh action again, I get more detail:</p>
<pre class="brush: plain; title: ; notranslate">[09/23/2010 22:45:28:684 AMGR VRB] {tid=B14:usr=woody}CreateApp(osd=\\domain.local\Public\Apps\AdobeReader9_x86\AdobeReader9.osd, icon=\\domain.local\Public\Apps\AdobeReader9_x86\AdobeReader9_x86 Icons\AdobeReader9.ico)

[09/23/2010 22:45:28:685 AMGR VRB] {tid=B14:usr=woody}
Parsing type from url \\domain.local\Public\Apps\AdobeReader9_x86\AdobeReader9.osd

[09/23/2010 22:45:28:686 SWAP VRB] {tid=B14:usr=woody}
Initialize(osd=\\domain.local\Public\Apps\AdobeReader9_x86\AdobeReader9.osd, origUrl=NULL)

[09/23/2010 22:45:28:687 OMGR VRB] {tid=B14:usr=woody}
GetOsdFile(url=\\domain.local\Public\Apps\AdobeReader9_x86\AdobeReader9.osd, origUrl=NULL name=NULL, ver=NULL)

[09/23/2010 22:45:28:688 OSDF VRB] {tid=B14:usr=woody}
SWOsdFile(url=\\domain.local\Public\Apps\AdobeReader9_x86\AdobeReader9.osd, origUrl=NULL, name=NULL, ver=NULL)

[09/23/2010 22:45:28:710 OSDF VRB] {tid=B14:usr=woody}
~SWOsdFile()

[09/23/2010 22:45:28:712 OSDF VRB] {tid=B14:usr=woody}
~SWOsdFile() complete

[09/23/2010 22:45:28:726 SWAP WRN] {tid=B14:usr=woody}
Could not load OSD file \\domain.local\Public\Apps\AdobeReader9_x86\AdobeReader9.osd

[09/23/2010 22:45:28:727 AMGR INF] {tid=B14:usr=woody}
The app manager could not create an application from '\\domain.local\Public\Apps\AdobeReader9_x86\AdobeReader9.osd' (rc 0C405564-00000002).</pre>
<p>If check the actual location of the OSD file, I can see that the package is not in the correct path (its actually located at \\domain.local\Public\Apps\Adobe\AdobeReader9_x86):</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2010/09/OSDLocation.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="OSDLocation" src="http://blog.stealthpuppy.com/wp-content/uploads/2010/09/OSDLocation_thumb.png" border="0" alt="OSDLocation" width="660" height="200" /></a></p>
<p>To fix this issue, I need to update the application properties in the App-V Management console, I can then refresh the client again and the application will be published correctly.</p>
<h3>Error Codes</h3>
<p>This was a very simple example and the fix was quite obvious. In all cases though, the client log will include an error code – the same code will often be displayed in a dialog box:</p>
<p><a href="http://blog.stealthpuppy.com/wp-content/uploads/2010/09/ClientError.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="ClientError" src="http://blog.stealthpuppy.com/wp-content/uploads/2010/09/ClientError_thumb.png" border="0" alt="ClientError" width="466" height="244" /></a></p>
<p>If the problem is not immediately apparent in the log, start looking for a solution by using the error code. Falko Gräfe has an excellent article that explains <a href="http://www.kirx.org/app-v/read/error-codes-en.html">how to interpret these error codes</a>. In most cases, there will be <a href="http://support.microsoft.com/search/default.aspx?query=%22app-v%22+error+code">an associated Microsoft knowledgebase article</a> that should give a solution for the error.</p>
<h3>Resources</h3>
<ul>
<li><a href="http://technet.microsoft.com/en-us/library/cc817103.aspx">Log File for the Application Virtualization Client</a></li>
<li><a href="http://technet.microsoft.com/en-us/library/cc817165.aspx">How to Configure the Client Log File</a></li>
<li><a href="http://blogs.technet.com/b/appv/archive/2009/01/26/troubleshooting-app-v-with-log-files.aspx">Troubleshooting App-V with log files</a></li>
<li><a href="http://support.microsoft.com/kb/939896/">﻿﻿How to use the Process Monitor tool to generate a log file for an application in the App-V virtual environment</a></li>
<li><a href="http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&amp;FamilyID=5a47b972-95d2-46b1-ab14-5d0cbce54eb8">System Center Configuration Manager 2007 Toolkit V2</a></li>
<li><a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=72876c60-3a87-4705-b722-f73eb56219bf">Application Virtualization Client Log Parser Utility</a> (and <a href="http://blogs.technet.com/b/appv/archive/2008/11/06/app-v-4-5-resource-kit-application-virtualization-client-log-parser-utility.aspx">how to use it</a>)</li>
<li><a href="http://download.microsoft.com/download/f/7/8/f784a197-73be-48ff-83da-4102c05a6d44/AppPubandClientInteraction.docx" class="broken_link">App-V Application Publishing and Client Interaction</a></li>
<li><a href="http://www.kirx.org/app-v/read/error-codes-en.html">App-V Client Error Codes</a></li>
<li><a href="http://support.microsoft.com/search/default.aspx?query=%22app-v%22+error+code">App-V Error Codes search</a> on Microsoft Support</li>
</ul>
<p><div style="padding: 5px 5px 5px 5px; border: 1px solid #cccccc; color: #303030; background-color: #f4f4f4;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" style="float:left;margin-right:5px;border:0px;" /></a><a href="http://blog.stealthpuppy.com/virtualisation/troubleshoot-with-the-app-v-client-log/">App-V FAQ: My virtual application won&#8217;t start. Where do I start troubleshooting?</a>  is post from <a href="http://blog.stealthpuppy.com/">stealthpuppy.com</a>.  Except as noted otherwise, this work is &copy; 2005-2012 Aaron Parker and is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stealthpuppy.com/virtualisation/troubleshoot-with-the-app-v-client-log/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

