App-V 5.0 SP2 Hotfix package 4!

Finally! The hotfix package we all have been waiting for.

For starters, grab the hotfix package here: http://support.microsoft.com/kb/2956985

The fixes are as follows:

  • Enhancements to publishing and refresh performance have been made in all App-V deployment scenarios (RDS, Traditional Desktop, and VDI).
  • Publishing and start performance have been implemented in non-persistent VDI or RDS deployments together with a user environment management (UEM) technology.
  • Package converter has reported low success rates and low detection diagnosis.
  • Virtual application packages that require write access to any files and folders in the virtual environment are incompatible with App-V 5.0.
  • Upgraded versions of virtual application packages cannot be deployed in parallel with the original version of the package on the client.
  • Virtual application packages that contain shortcuts to executable (.exe) files on a network share cannot start those executables if the system account does not have access to the network share.
  • App-V Deployment configuration does not handle certain registry settings correctly.
  • The Windows PowerShell window is listed on the taskbar during App-V Client startup.
  • App-V Service crashes when packages are deployed through System Center Configuration Manager.

All things considered, I would consider this App-V 5.1 with the way Microsoft has been naming their product updates as of late. Things that caught my eye: Writable VFS, improved performance in VDI environments, and application shortcuts on the network.

As always, please use caution when deploying an update and test on a non-production system first.

App-V 5 and duplicate package GUIDs

An associate of mine recently discovered that we had two App-V 5 packages with the same GUID. This was not a case of mistakenly adding onto an existing package or anything weird like that. These were two new sequences made by reverting the snapshot on the virtual machine back to clean. This was a strange predicament because these are supposed to be randomly generated GUIDs with little chance of ever coming across the same GUID again. As we dug into it some more, we found two more packages with similar GUIDS, but different from the first. In total we have four sequences in our library that had duplicate GUIDs.

A quick search of the interwebs brought us to an article by Tim Mangan (godfather of App-V). I recommend anyone that will be sequencing applications read that article, but to sum up- Don’t take a snapshot of your virtual machine with it powered on. Make sure your snapshots are taken with the machine powered off. This will ensure the seed that creates the unique GUID will be different than the one that was saved in your snapshot. It may add a few seconds to your process, but its worth it in the end to avoid this issue.

Read more here: TMurgent

Batch and Powershell sleep commands

Sometimes when creating a script, you may need the script to wait or sleep for a certain period of time.

Batch Scripts:

If you search the interwebs, you will find a lot of workarounds that involve pinging a network address for a certain number of times. While this gets the job done, it isn’t necessarily the most straightforward way.

Luckily, there is another command that allows you to specify a wait time in seconds. This command is called timeout, which is something you are probably familiar with if you have kids. It does exactly what it sounds like, it sits there and waits for the number of seconds you specify. Or if you want the Microsoft definition: This utility accepts a timeout parameter to wait for the specified time period (in seconds) or until any key is pressed. It also accepts a parameter to ignore the key press.

According to Microsoft, the command applies To: Windows 7, Windows 8, Windows Server 2000, Windows Server 2003, Windows Server 2003 R2, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, Windows Vista, Windows XP.

So I am curious why this isn’t more widely used.

PowerShell:

Although you can use the same command with PowerShell, you may want to take advantage of a new command called Start-Sleep. The Start-Sleep cmdlet suspends the activity in a script or session for the specified period of time. You can use it for many tasks, such as waiting for an operation to complete or pausing before repeating an operation.

Find more on these commands here:
Timeout
Start-Sleep

App-V 5.0 SP2 Hotfix Package 2

Back in Februrary, I reported that Hotfix Package 1 was out for App-V 5.0 SP2 which fixed an issue we saw with QuickBooks. A little over a week ago Microsoft released Hotfix Pakcage 2 for App-V 5.0 SP2 and has the following fixes:

Issue 1

Certain App-V 5.0 Service Pack 1 (SP1) packages do not work with the App-V 5.0 Service Pack 2 (SP2) clients.

This is an issue in AppV 5.0 SP2 that may appear to prevent some applications from starting. This includes packages that were sequenced on earlier versions of App-V 5.0. A valid App-V 5.0 package starts correctly and displays a GUI under App-V 5.0 SP1. Under App-V 5.0 SP2, the same package does not display a GUI, or it appears not to start.

Issue 2

A sharing violation occurs during profile synchronization when you use App-V 5.0.

When an App-V user on a Remote Desktop Services (RDS) server logs on after a period of inactivity, a sharing violation may occur when the profile is synchronized to the local cache. Therefore, some required files are not copied over, or they are renamed. In this situation, the profile becomes corrupted.

Issue 3

App-V client handlers leak in Remote Desktop Services (RDS).

When an RDS user logs off, App-V does not release some handles that it held specifically for this session, and therefore the resource cannot be reused. In this situation, the Session ID monotonically increases without reusing IDs from previously finished sessions.

Issue 4

A virtualized Excel Visual Basic for Applications (VBA) application fails if the path for the application contains Chinese or Japanese characters.

Issue 5

Certain applications don’t start after Hotfix Package 1 for APP-V 5.0 Service Pack 2 is applied.

Selected registry key values were removed after the deployment of Hotfix 1 for APP-V 5.0 Service Pack 2. This prevents some applications from starting. By reverting Hotfix Package 1 for APP-V 5.0 SP2, you restore these registry values to their default state. However, any existing customizations will be lost and will have to be redone.

You can request the download from Microsoft here.

App-V 5 sequencer reboot error

Have you ever rebooted your App-V 5 sequencer and expect to continue sequencing, but was greeted with the following error?

App-V5_FailResume

Well, I certainly have and I had a feeling it had to do with joining the VM to the domain. Searching the web doesn’t bring up a lot of information on this specific error and the event log isn’t helpful either. What I did find was that Nicke has great a article about issues one may encounter when rebooting an App-V 5 sequencer.

Everything on the VM checked out until I got to the Scratch directory. I setup a test sequence and performed a reboot, but before I logged back into the machine I browsed to the Scratch directory via UNC and noticed it was empty. Well, if the Scratch directory is empty, how can you expect the sequencer to resume after a reboot? I made sure the directory was accessible and was being written to during a sequence. After some digging, I noticed the entire temp directory was cleared out upon reboot. This was confusing to me because there was no GPO applied to delete temp folders, redirect folders or set mandatory profiles. So I went ahead rolled my VM back to clean and set the following GPO:

GPO-TempFolder


 

Now I can reboot during the sequence and resume sequencing without any issues! 

QuickBooks unattended installation

If you’ve ever tried to push out a silent QuickBooks installation to a computer, you probably know its not supported by Intuit. Nor can you just extract the MSI and add parameters for licensing and install directory. It’s darn near impossible to do without some sort of automation script such as AutoIT Script. I’ve tried using an MSI editor in the past and didn’t get very far because there were some missing properties.

Today I found a post on a fairly new blog called VirtualAppPack. The article has good step-by-step instructions how to create a transform file and adding the missing licensing properties. The only thing I would add to his post is not to expect an installation to complete if you add  the ‘/qb’ parameter to your MSIEXEC command. For some reason or another, it doesn’t do a full install of QuickBooks with that command. But if you use ‘/qn’, it will perform a full install.

Source: QuickBooks 2014 silent-unattended install

App-V 5.0 SP2 and Google Chrome

Sequencing Google Chrome has been possible with App-V 5.0 pre SP2, but the application wouldn’t launch until you mounted the package onto your computers/servers. This appears to be a thing of the past with App-V 5.0 SP2. I updated our Chrome sequence and noticed we no longer had to mount the package to the server before users could launch it.

It’s the small things that make your job easier 🙂

App-V: To publish globally or not

For several reasons, the current deployment of App-V 5 in which I work does not utilize the App-V management server or SCCM. Instead we use some in-house scripting and a desktop composer to deliver our applications to end-users. We’ve been using App-V 5 for a little over a year now and one of first questions we had was- Do we publish applications globally on the server? At the time it didn’t seem like a bad idea, but on a shared server… it can be.

When you globally publish an application to a shared server, say an RDS server shared between 20 other users, the application shows up in ways you may not want. For example, if you sequence an application that has context menus, it will show up for all users. The applications show up in the ‘Open with’ dialog as well. If you sequence Notepad++ or another application, this may not be such a bad thing. To add an App-V package to a server and publish it all users, run the following command:

Add-AppvClientPackage -path \\path_to_your\app-v\package.appv | Publish-AppvClientPackage -Global

In my case, you usually don’t want to expose all applications to users on a server. You can add an App-V package to a server without actually publishing it globally to all users. To do this, run the following command to add your package:

add-appvclientpackage -path \\path_to_your\app-v\package.appv

This command essentially makes that application available to users logging into that server without giving them access to it. To give a user access, publish that application to the appropriate user(s) by running this command as each user:

publish-appvclientpackage -name “App-V Package Name”

You can also use the -PackageID & -VersionID parameters, but I prefer using the name because it’s a lot more descriptive than a randomly generated GUID. This command can be run at logon via logon script or any other preferred method as long as it is run in the user context. Running this command still gives the user all the appropriate FTAs, shell extensions, open-with options, etc. While the other users are none the wiser.

When publishing applications to your users, remember the following:

  • Global Publishing will apply to all users.
  • Adding the package without the global tag will not apply to any users until you run the publish command as the user.

 

Whether you decide to global or not, remember the ramifications of both. You may wish to apply a package only to certain users while all users may get another.