Enhancements for the XenApp Publishing Extension

I’ve been thinking about adding some new enhancements to the XenApp Publishing Extension, but before doing so I’m curious to see how useful the community thinks they are.  To answer this question, I’ve decided to post a blog where you can give feedback on each enhancement.  If these ideas get a lot of votes, you’ll probably see them come to life.

So here we go.  The first idea is to add offline app support to the XenApp Publishing Extension.  This means you would be able to right-click a .profile in Windows and publish one of its apps to your farm.

The next idea is to add PowerShell support to the XenApp Publishing Extension.  Right now the extension publishes online apps via MFCOM.  A set of PowerShell cmdlets known as the XenApp Commands have been released as a Technology Preview and can also be used to publish both online and offline apps.  Since the code for the XenApp Publishing Extension is available, adding support for this would also be a good reference for anyone that’s interested in calling the cmdlets from a .NET app.

Thanks in advance for your votes!

Cloning a XenApp server with remapped drives

A fellow Shannon Ma Virtualized fan has posted a link that talks about how you can clone a XenApp server with remapped drives.  Check out http://kb.acronis.com/content/1666 if you’re interested in this.  The article talks about a few ways you can accomplish this with and without Acronis’ imaging solution.  To be honest, I haven’t had a chance to try this out but it seems like a handy reference if you’re looking to XenAppPrep your servers with remapped drives.  Thanks Mike!

Hot Off the Compiler: Citrix XenApp Publishing Extension

My latest side project at Citrix is the XenApp Publishing Extension, a tool that makes app publishing so simple your mom could probably do it.  It integrates with Windows, so you can right-click on any executable or shortcut to publish it.  The final bits, including the source code, are now available on CDN and can be downloaded from here.

XenApp Publishing Extension DemoI’ve included a video of the tool in action, which by the way was taken with GoView.  For those if you not familiar with GoView, it’s our all new service that allows you to create your own screen recordings and publish them online.  Think of Camtasia, except web-based and best of all totally free.  It’s pretty slick and I highly recommend trying it out if you ever need to make your own screen recordings.

Anyway, back to the XenApp Publishing Extension.  If you’re interested in taking a peek at the code, you’ll notice its 100% WPF based to create that “cool” look and feel.  It also uses MFCOM and the infamous DataModel-View-ViewModel pattern.  This makes pretty easy to maintain and test.

I’d also like to thank the following Citrites for their contributions:

  • Chris Anthony and the User Experience team for the icon art.
  • Thomas Hammond for the WPF wizard control.
  • Vishnu Nath who came to me with the right-click app publishing idea.

Well, that’s all I have for today.  As always, I enjoy hearing feedback from anyone using my tools, especially if its saved you some gray hairs.  So feel free to post any questions or comments you have here.  Till next time!

Update: PowerShell SnapIn for XenServer Snapshots 1.01

I just released a update of the PowerShell SnapIn for XenServer Snapshots, which can be found here. This version contains a NoStart switch on the Restore-VM cmdlet. By default Restore-VM will start the virtual machine after its been reverted. You can now specify the NoStart switch if you don’t want it to be started. Here’s a brief example:

Restore-VM -Hostname 192.168.0.2 -Username root -Password qwerty -VM Bluemoon -Snapshot BluemoonBackup -NoStart

I’m always interested in hearing feedback, so feel free to post any questions or comments you have.

P.S. If you’re a XenApp customer, Citrix Receiver for the iPhone (aka the XenApp client for the iPhone) is now available in the AppStore. Chris Fleck has posted a demo if it here. Unfortunately, I haven’t been able to try this out as I don’t (yet) have one of these snazzy phones.

Getting Up and Running with the XenApp Management SDK

I began working on my latest side project a week or so ago.  This one involves the XenApp Management SDK (aka MFCOM) with C# and WPF.  One of my goals for the project is to maintain compatibility with XenApp 4.5 and 5.0.  So I setup XenApp 4.5 on my XenServer and installed the latest and greatest version of the SDK (5.0) on my Vista development box.

I’ve used the SDK in the past, but its been a while so I was a little rusty.  I ran mfreg to point the SDK to my server.  Then without much thought I wrote some C# code to connect up to my 4.5 farm:

IMetaFrameFarm8 _farm = new MetaFrameFarm();
_farm.Initialize(MetaFrameObjectType.MetaFrameWinFarmObject);

I hit F5 to run my project in Visual Studio and got a little suprise in the form of an InvalidCastException:

Unable to cast COM object of type 'MetaFrameCOM.MetaFrameFarmClass' to interface type 'MetaFrameCOM.IMetaFrameFarm8'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{ED62F657-63C2-11D4-94D8-00C04FB0F326}' failed due to the following error: Unable to cast COM object of type 'MetaFrameCOM.MetaFrameFarmClass' to interface type 'MetaFrameCOM.IMetaFrameFarm8'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{ED62F657-63C2-11D4-94D8-00C04FB0F326}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).

Version 8 of IMetaFrameFarm is the latest version of the farm interface for XenApp 5.0.  I needed to use an older version of the interface, one that 4.5 shipped with.  So I changed IMetaFrameFarm8 to IMetaFrameFarm7 and everything worked fine.  Older interfaces are compatible with future versions of XenApp, which means I’m guaranteed my code will work with XenApp 5.0.

That brings us to lesson #1: Each release of XenApp is updated with a new set of interfaces.  The interface you use must be <= to the version of XenApp you’re targeting. For example, IMetaFrameFarm7 shipped with XenApp 4.5 and can be used against XenApp 4.5 and 5.0.

Next I wrote some code to iterate through the applications in my farm and ran into the following UnauthorizedAccessException:

Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))

This was due to my Vista machine’s DCOM Default Impersonation Level not being set to Impersonate. It seems Identify is the default in Vista. I changed this by doing the following:

  1. Open the Component Services MMC snap-in.
  2. Right click on the My Computer node.
  3. Select Properties.
  4. Go to the Default Properties tab.
  5. Under Default Impersonation Level choose Impersonate.

That brings us to lesson #2: DCOM must be configured properly on the system running the SDK.  More information on this can be found in the documentation under Configuring MFCOM Security, which gets installed as part of the SDK.

After addressing these issues the SDK worked great and I was on my way churn out the bits of my project.

XenAppPrep Places 3rd at Rocket Science 2008

XenAppPrep was recently awarded third place at Rocket Science. Here’s a picture of the award taken from my Motorola Q:

Rocket Science Award

The event is held annually by the Citrix Application Virtualization Group (aka makers of XenApp amongst other products) where engineers can show off their latest side projects to the company. It’s like a science fair for Citrites.

I attended Rocket Science 2008 back in October and had the opportunity to demo XenAppPrep to our engineers, management team, and executives. The event was a blast, there were a lot of interesting inventions and conversations going on. I will be looking forward to Rocket Science 2009!

XenServer 5.0 SDKs Released to Web

Incase you haven’t heard, the XenServer 5.0 SDKs have been released. Here’s a short summary of them:

  • New XenServerPSSnapIn: This is the PowerShell snap-in for XenServer, which is a one-to-one mapping of the existing XenServer API. It should be noted that the functionality in XenServerSnapshotPSSnapIn can be duplicated with this, however it will take many lines of scripting. You can use both snap-ins together if you’d like to manage your XenServers and take snapshots via PowerShell.
  • Updated XenServer.NET: The XenServer SDK for .NET
  • Updated XenServerJava: The XenServer SDK for Java
  • Updated libxenserver: The XenServer SDK for C
  • Updated XenAPI.py: The XenServer Python module

The SDKs can be downloaded from Citrix Community. Enjoy!

Citrix Summit 2008 Pics

A couple of weeks ago I was at Citrix Summit 2008, which is a trade show that partners can attend to learn about our latest technologies. This year it was in Orlando, FL at the Walt Disney World Dolphin and Swan Resort.

One of the most popular events at Summit (and Synergy) is Tech Lab. This is where you can walkaround and see demos of the latest stuff from Citrix (such as Project Apollo) and third-party vendors. Here is the Citrix Tech Lab team:

Citrix Summit 2008 Tech Lab Team

More pictures of Summit can be found here.

Cloning a XenApp server with EdgeSight

I’ve received some feedback on using XenAppPrep with EdgeSight and I thought it would be beneficial to share some information on this topic.

The current version of XenAppPrep was designed to address the cloning process for XenApp core. This does not include any of the XenApp Platinum components, however we are planning to enhance the tool to cover all of them. In the meantime, you can use the following steps to clone a XenApp server with EdgeSight:

  1. Install XenApp.
  2. Install EdgeSight by running msiexec /i EdgeSightEPAgent.msi SERVICE_START_MANUAL=”1″. This will install the EdgeSight service in Manual start-up mode. Do not start this service before an image is taken.
  3. Install and run XenAppPrep.
  4. Set the Citrix System Monitoring Agent (RSCorSvc) service to Automatic start-up.
  5. Take an image of the server or if you’re using Provisioning Server switch the workload to standard image mode.

It’s important to ensure the Citrix System Monitoring Agent (RSCorSvc) service has never been started before an image is taken. If it has, the following steps must be taken before imaging the server:

  1. Stop the Citrix System Monitoring Agent (RSCorSvc) service.
  2. Uninstall the EdgeSight Agent.
  3. Ensure HKLM\SOFTWARE\Citrix\System Monitoring key has been removed.
  4. Verify the EdgeSight Agent database has been removed. It’s default location is C:\Documents and Settings\All User\Application Data\Citrix\System Monitoring\Data\rsdatr.fdb.
  5. Reinstall the EdgeSight Agent with the instructions above.

Joining the XenApp MX team

Since March 2006 I’ve been working on the XenApp Automation team, leading and technically contributing to many automated test suites. Prior to this I worked at a defense contractor for a few years in both IT and software engineering capacities. The Automation team has been focused on enabling Citrix to release new high quality versions of XenApp more often by automating tests. During this time, I learned a lot about XenApp and the software release processes at Citrix. I’ve also learned that I’d like to have a more direct impact on customers and get more involved technically.

So a little over a month ago I joined the XenApp Management Experience (MX) team. We develop the infrastructure and tools, such as the Access Management Console (AMC), that allow IT departments to easily manage their farms. The team has a lot of experience, technical involvement, and interesting challenges to solve. Initially I will be ramping the team up with their automation processes, infrastructure, and tests. But after this I’m expected to develop some the new management features that will be in the next version of XenApp.

There’s a long road ahead of us. We have a lot of work to get done for XenApp vNext and there’s a lot of room for innovation and new ideas. Best of all, there’s a lot of energy on the team to only do the best. With that said, I’m excited about the projects I’ll be working on and customers we’ll be helping! If you have any ideas that would improve the XenApp management experience, I’d love to hear about them.

Follow

Get every new post delivered to your Inbox.