Category Archives: Azure RemoteApp

Looking back at 2015…

So, the year 2015 is almost at its end. While I write this, I am already in my second week of my two week time off. And boy,I really needed this two week break.

2015 was an extremely busy year for me, and I can actually cut the year in half.

At the first half, I was still busy participating in a project where I designed and deployed System Center 2012 R2 Configuration Manager. I also built a stand-alone Image Building environment running MDT 2013. Unfortunately, the project took way longer than expected due the customer being unable to take ownership and start administering it by themselves. Eventually I decided to walk away after the contractual end date of my involvement despite the fact the project isn’t finished yet. The longer it took, the more frustrating the project became for me so the decision to walk away was eventually the right one.

This takes me to the second half. In the second half, I saw a dramatic shift in my job since I did only one Configuration Manager design and deployment in the second half of 2015. I started to extend my skillset on Enterprise Client Management a bit more with Microsoft Intune and Microsoft’s Public Cloud platform: Azure.

I also started to deliver more workshops, master classes and training sessions. This is something I really like to do and I want to thank those who made it possible for me. It allowed to me renew my Microsoft Certified Trainer certification.

Fortunately, the frustrations of the first half provided some learning moments which required me to become a more complete consultant. So my coworker arranged a two day training session for me called “Professional Recommending” (this may be a poor translation of Professioneel Adviseren in Dutch) provided by Yearth. This is by far the most important training I received in my career and it really started to pay off pretty quickly by receiving more positive feedback from customers. I became a more complete consultant with this training.

I was also happy to do the presentation workshop with Monique Kerssens and Jinxiu Hu from Niqué Consultancy BV at ExpertsLive 2015. I was happy to receive the feedback that my presentation skills have developed greatly. To quote them: “you’re standing like a house”.

The icing on the cake came at the end of this year when I was asked to review the DataON CiB-9224 platform. You can read the review in my previous post.

So, I experienced some highs and lows this year. Fortunately, the highs came at the second half.

I look forward to 2016, but that’s for another post…



Azure RemoteApp and App-V sequences: does it work?

Last year when Azure RemoteApp was announced at a conference, I asked the speaker about support for App-V 5 sequences running on the Azure RemoteApp platform. While the speaker actually questioned my question, I wasn’t really sure if App-V sequences are supported by Microsoft.

When Microsoft states a certain configuration is not supported, then they basically state two possible scenarios:

  1. The scenario has been tested and it really doesn’t work, a KB article will state why
  2. The scenario has never been tested at all

I wasn’t able to find any statement by Microsoft, this leaves me to believe it has never been tested.

Other projects limited my time to figure it out. This was fine as long as it was in Preview which allowed me to sit it out for a bit, until now…

Recently I was asked to deliver a masterclass regarding application provisiong using Azure RemoteApp. One of the participants asked me if App-V 5 sequences could be used. One of the other trainers, Alex Sweserijnen  (@AlexSweserijnen on Twitter), also started a healthy discussion with me about this feature. Since I’m more focused on application deployment than application scripting using MSI or App-V which is more Alex’ cup of tea, I am a strong believer in using App-V.

However, I am talking about App-V client in stand-alone mode because of my ConfigMgr background. I’m not so familiar with App-V streaming infrastructures. Since Azure RemoteApp is just a ‘black-box’ RDS server I see no technical limitations to run App-V 5 sequences as long as the following requirements are met:

  • App-V 5 client for RDS is configured in stand-alone mode, no streaming or ConfigMgr whatsoever
  • App-V 5 sequences are loaded and published prior to uploading the .vhd to Azure RemoteApp

Alex had a few small App-V 5 sequences available I could use for testing. I’d like to thank Alex for delivering them so I didn’t need to create them myself.

So I decided to find out if this scenario works. I used the following lab setup:

  • 1 VM configured as an RDS Session Host server which meets the requirements mentioned at
  • On the VM I installed App-V for RDS 5.1 in stand-alone mode
  • I added and published the App-V 5 sequences delivered by Alex, I used the following cmdlet for each sequence: Add-AppvClientPackage <whatever location>\package.appv | Publish-AppvClientPackage -Global
  • I shut down the VM using sysprep to prepare the .vhd for uploading

After uploading the image I created a RemoteApp collection by using the Quick Create option and I selected the image uploaded before. After taking a lunch break (provisiong takes quite some time) the RemoteApp collection was ready. So now I need publish some apps, the result is shown below:


As you can see , Azure RemoteApp is perfectly happy to publish applications sequenced in App-V 5.I adde some  The next question obviously is if they will actually work. So I need to test it on my client. So let’s start my Azure RemoteApp client.


So here are my apps published. Let’s start PuTTY to see what happens.


We can clearly see PuTTY is started as a RemoteApp.


Notepad++ works fine as well.

These test results show Azure RemoteApp is perfectly happy working with App-V 5 sequences. Keep in mind that applications sequenced must be able to run in a RemoteApp (basically RDS) environment. I can answer the question with YES: App-V 5 sequences can be run on Azure RemoteApp

I was kind of expecting this result since I see no technical reason why this shouldn’t work in the first place.

Feel free to play around with this yourself. The Azure RemoteApp environment allows you to test the environment by publishing the apps to a limited set of users before publishing them to all users who need them.


Azure RemoteApp template image creation: make sure ALL requirements are met

Building your Azure RemoteApp template images is quite a straightforward operation. You can create your image .vhd on-premises or you can use the Windows Server 2012 R2 Session Host from the Azure Gallery. The latter contains a complete script to check if all requirements are met before shutting down the VM with Sysprep (but doesn’t facilitate the requirement mentioned in this post).

Fortunately, Microsoft was nice to provide an overview with the requirements which must be met to prepare your template image(s) which is available at the following location:

Unfortunately, one requirement is missing which will cause the image upload process to fail. Before creating a generalized .vhd with Sysprep the file %SYSTEMDRIVE%\Windows\Panther\unattend.xml needs to be removed.

You can see in the Upload-AzureRemoteAppTemplateImage.ps1 file downloaded from Azure that the presence of this file is checked before the actual upload.

Below is the relevant part of the script that does this checking:

# verify unattend file locations

if(Test-Path -LiteralPath ($winVolume + “windows\Panther\Unattend\Unattend.xml”) -PathType Leaf)


Write-Error ($CurrentCultureTable[$UnattendFileError] + $winDrive\windows\Panther\Unattend\Unattend.xml.”)

$validImage = $false


if(Test-Path -LiteralPath ($winVolume + “windows\Panther\Unattend\Autounattend.xml”) -PathType Leaf)


Write-Error ($CurrentCultureTable[$UnattendFileError] + $winDrive\windows\Panther\Unattend\Autounattend.xml.”)

$validImage = $false


if(Test-Path -LiteralPath ($winVolume + “windows\Panther\Unattend.xml”) -PathType Leaf)


Write-Error ($CurrentCultureTable[$UnattendFileError] + $winDrive\windows\Panther\Unattend.xml.”)

$validImage = $false


if(Test-Path -LiteralPath ($winVolume + “windows\Panther\Autounattend.xml”) -PathType Leaf)


Write-Error ($CurrentCultureTable[$UnattendFileError] + $winDrive\windows\Panther\Autounattend.xml.”)

$validImage = $false


if(Test-Path -LiteralPath ($winVolume + “Unattend.xml”) -PathType Leaf)


Write-Error ($CurrentCultureTable[$UnattendFileError] + ” Found: $winDrive\Unattend.xml.”)

$validImage = $false


if(Test-Path -LiteralPath ($winVolume + “Autounattend.xml”) -PathType Leaf)


Write-Error ($CurrentCultureTable[$UnattendFileError] + $winDrive\Autounattend.xml.”)

$validImage = $false




Too bad that Microsoft forgot to mention this in the requirements overview…



Steve Thompson [MVP]

The automation specialist

Boudewijn Plomp

Cloud and related stuff...

Anything about IT

by Alex Verboon

Deployment Made Simple

Modern Workplace

Azure, Hybrid Identity & Enterprise Mobility + Security

Daan Weda

This site is all about System Center and PowerShell

IT And Management by Abheek

Microsoft certified Trainer -Abheek

Heading To The Clouds

by Marthijn van Rheenen