Blog

AppV 5.0 SP2 HotFix 4 (HF4)

2014-05-04
/ / /

I upgraded our test environment for AppV 5.0 SP2 to HF4  and came across an issue where our packages won’t load.  The error specifically was:

We got this error for all of our packages.  I procmon’ed it and it appeared to be OK, saying that it was creating folders and loading the .appv package, but when I went into the D:AppVDataPackageInstallationRoot folder, nothing was in there.
It turns out that with Hotfix 4 Microsoft has changed the PackageInstallationRoot permissions to require Authenticated Users (Read/Write) to the folder, without this ACL we get the above error.  Microsoft appears to have made this change to allow Globally published application to be able to be launched on network shares without requiring the local machine account added to the share.  Unfortunately, without the ACL on the local folder we get the error above.  To create the folder with the correct ACL’s, just delete the existing folder and restart the AppVClient service.  The service will auto-create the folder with the correct ACL’s.
If the service does not recreate the folder, you may need to run the AppV publishing scheduled task to get it created.
Read More

Citrix, Internet Explorer and AppV

2014-04-24
/ / /

I wrote about the issue of Internet Explorer and AppV here before.  Long story short, Citrix changes the iexplorer.exe launch handle to point to its own stub of iexplore.exe.  I suggested changing the iexplore in the registry to point to the proper version of IE, but the Citrix version appears to be a FTA (File Type Association) stub of some sort.  Another solution would be to use the full path to iexplorer.exe (C:\Program Files (x86)\Internet Explorer\iexplore.exe) in the path of the published Citrix application.  This avoids the stub being launched.

Read More

Problems.txt file in Citrix Receiver 4.0/4.1 reports “Error 500”

2014-04-22
/ / /
Make sure you go to the PNA agent web folder on the designated server and set RequireLaunchReference=Off and remove the # in the WebInterface.conf file.

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

Read More

Slow screen refresh with Citrix Receiver 4.0 or 4.1 with old Citrix Farms

2014-04-21
/ / /

I was having an issue with very slow screen redraws with Citrix Receiver 4.1 with a MetaFrame 4.5 farm (although I’ve read online it’s applicable to Presentation Server 4.0).  The fix is to enable the following registry key:

Adding that key resolved the issue and now Citrix Receiver 4.1 now updates correctly on the 4.5 farm.
Read More

EdgeSight Load Testing with a Single User account (XenApp 6.5)

2014-04-18
/ / /

I’ve been doing some EdgeSight Load Testing with XenApp 6.5; which I haven’t done in a few months.  We have updated our Citrix servers since then with the newer HotFix RollUp (HFRU) pack and now I’m testing a new application.  Our typical setup is to use a single generic account and connect it via multiple sessions to the same Citrix server and capture some metrics (CPU, Network, Memory, etc).  In the past, this seemed to work pretty flawlessly but in the last week I was having issues.  By the time the 3rd session was connecting to the Citrix server, instead of creating a new session it would ‘steal’ the 1st session.  This prevented me from having more than 2 sessions connected to a server.

Well, it turns out Citrix modified their behaviour a bit but allowed a registry key to be set to change it back.  The new value was introduced in HFRU 2 and is as follows:

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

On Windows Server 2003, you can specify whether a user can reconnect to a session from any client device or only from the originating client. The From originating client only option is not present anymore in the Remote Desktop Services settings of the Windows Server 2008 R2 edition.
This feature enhancement allows you to implement the same functionality on Windows Server 2008 R2 through XenApp. To enable the feature, you must set the following registry key:

Note that if Workspace Control is enabled on the Web Interface, enabling the “Automatically reconnect to sessions when users log on” feature can result in side effects and users might have to launch the session twice to open a session from the non-originating client device.

Enabling that registry key and I can immediately restart my load testing without any stolen sessions.

Read More

Move ALL Windows 7/2008/2012 log files to another drive

2014-04-10
/ / /
 

Read More

Install VMWare drivers offline into a Citrix PVS vDisk

2014-02-28
/ / /

I am attempting to disable interrupt coalescing for some testing that we are doing with a latency sensitive application and I have 2 VMWare virtual machines configured as such that work as expected.

The latency settings I have done are here:
http://www.vmware.com/files/pdf/techpaper/VMW-Tuning-Latency-Sensitive-Workloads.pdf

Essentially, we turned off interrupt coalescing on the physical NIC by doing the following:
Logging into the ESXi host with SSH

(e1000e found as our NIC driver)

(we see InterruptThrottleRate as a parameter)

Then we modified the VMWare virtual machines with these commands:
To do so through the vSphere Client, go to VM Settings  Options tab  Advanced General  Configuration
Parameters and add an entry for ethernetX.coalescingScheme with the value of “disabled”

We have 2 NIC’s assigned to each of our PVS VM’s.  One NIC is dedicated for the provisioning traffic and one for access to the rest of the network.  So I had to add 2 lines to my configuration:

For the VMWare virtual machines we just had the one line:

Upon powering up the VMWare virtual machines, the per packet latency dropped signficantly and our application was much more responsive.

Unfortunately, even with the settings being identical on the VMWare virtual machines and the Citrix PVS image, the PVS image will not disable interrupt coalescing, consistently showing our packets as have higher latency.  We built the vDisk image a couple years ago (~2011) and the vDisk now has outdated drivers that I suspect may be the issue.  The VMWare machines have a VMNET3 driver from August of 2013 and our PVS vDisk has a VMNET3 driver from March 2011.

To test if a newer driver would help, I did not want to reverse image the vDisk image as that is such a pain in the ass.  So I tried something else.  I made a new maintenance version of the vDisk and then mounted it on the PVS server:

This mounted the vDisk as drive “D:”

I then took the newer driver from the VMWare virtual machine and injected it into the vDisk:

I could see my newer driver installed alongside the existing driver:
Published Name : oem57.inf
Original File Name : vmxnet3ndis6.inf
Inbox : No
Class Name : Net
Provider Name : VMware, Inc.
Date : 08/28/2012
Version : 1.3.11.0

Published Name : oem6.inf
Original File Name : vmmouse.inf
Inbox : No
Class Name : Mouse
Provider Name : VMware, Inc.
Date : 11/17/2009
Version : 12.4.0.6

Published Name : oem7.inf
Original File Name : vmaudio.inf
Inbox : No
Class Name : MEDIA
Provider Name : VMware
Date : 04/21/2009
Version : 5.10.0.3506

Published Name : oem9.inf
Original File Name : vmxnet3ndis6.inf
Inbox : No
Class Name : Net
Provider Name : VMware, Inc.
Date : 11/22/2011
Version : 1.2.24.0

Then unmount the vDisk:

I then set the vDisk to maintenance mode, set my PVS target device as maintenance and booted it up.  When I checked device manager I saw that the driver version was still 1.2.24.0

But clicking “Update Driver…” updated our production NIC to the newer version.  I chose “Search automatically and it found the newer, injected driver.  I then rebooted the VM and success!

 

Read More

Time how long a WMI filter call takes

2014-02-25
/ / /

The following command will time how long a WMI filter call will take to execute on your server/PC.

 

Read More

Install AppV 5.0 Server via silent install

2014-01-30
/ / /

I made a script to automate the creation of our AppV 5.0 Management and Publishing servers.  We are going to install them on the same system.  To do this, we already have a database so we are just adding new servers to the infrastructure.  This script also installs all prerequisites if required.

 

Read More

Slow PowerShell CSV reading and object generation

2013-12-17
/ / /

I am attempting to read a CSV file and decided the best way to do it was with PowerShell’s native import-csv tool.  What was required was to read this CSV and then generate a registry file for import into numerous computers.  This was my result:

The CSV file we have has about 1500 lines in it.  To generate the registry key utilizing this method took 6 minutes and 45 seconds.  This is unacceptably slow.  I then started googling ways to speed up this processing and came across this article:
http://stackoverflow.com/questions/6386793/how-to-use-powershell-to-reorder-csv-columns

Where Roman Kuzmin suggested to handle the file as a text file instead of a PowerShell object.  The syntax used to generate convert the file into objects that can replace text as needed is a bit different but I decided to explore it.  His example code is as follows:

Essentially, he is proposing reading the file line by line and extracting the data by manually splitting the text string. The string then turns into an array that you can use for substitution. This is my final code using his example:

 

The total time for this? 0.07 seconds. Incredibly fast. So, utilize the Import-CSV command and object based creation with caution. Utilizing even a moderately sized file will take an unacceptable amount of time.

Read More