Azure RemoteApp


Are you interested in providing application access and presentation without the need to deploy hardware? Maybe an upgrade is in order to your existing Terminal Services environment and you’re looking for methods to reduce spend? Regardless of the motives, Microsoft Azure has a solution and it’s called Azure RemoteApp.

Azure RemoteApp brings the functionality of the on-premises Microsoft RemoteApp program, backed by Remote Desktop Services, to Azure. Azure RemoteApp lets you provide secure, remote access to applications from many different user devices.

When you move RemoteApp to Azure, you get to take advantage of the storage, scalability, and global reach of Azure without having to worry about a complex on-premises configuration. Microsoft provides maintenance of Azure, ensuring its reliability, freeing you up to focus on more important issues, like creating the best apps for your business to use. Another advantage of Azure RemoteApp is the accessibility – your users can access RemoteApp programs from Windows, iOS, Mac OS X, and Android devices. They can use your apps in the environment they prefer, while you use the Azure management portal to manage those apps.

There are two kinds of RemoteApp deployment:

  • A cloud deployment is hosted in and stores all data for programs in the Azure cloud. Users can access apps by logging in with their Microsoft account or corporate credentials synchronized or federated with Azure Active Directory.
  • A hybrid deployment is hosted in and stores data in the Azure cloud but also lets user’s access data and resources stored on your local network. Users can access apps by logging in with their corporate credentials synchronized or federated with Azure Active Directory.

Source: http://azure.microsoft.com/en-us/documentation/articles/remoteapp-whatis/

Where to start

As stated above, there are two kinds of RemoteApp deployments, cloud and hybrid. Cloud is self-explanatory, everything is hosted in the cloud. However, hybrid uses a VPN connection back to an organization’s data center for apps that depend on services or data located on premises.

For the purposes of this post, I focus on the cloud only deployment of RemoteApp.

Let’s get started

If you don’t have an Azure subscription sign up for a trial by visiting: http://azure.microsoft.com/en-us/pricing/free-trial/

Creating a VM image to use a RemoteApp template image

First we’ll need to create a Windows Server 2012 R2 VM, install Remote Desktop Services single server install, and install/configure applications. This can be done directly in Azure or on a Hyper-V server on premises. I’m using Azure to create my RDS image.


What is a template image?

Azure RemoteApp uses a Windows Server 2012 R2 template image to host all the programs that you want to share with your users. The template image is a .vhd VM image configured with RDS and apps.

Follow the directions stated in the link below for how to create a custom template image for RemoteApp:

http://azure.microsoft.com/en-us/documentation/articles/remoteapp-create-custom-image/

As stated previously, I created a VM in Azure using the Windows Server 2012 R2 gallery image, installed RDS, my apps, sysprep’d it and deleted the VM in Azure while preserving the OS disk.

Uploading the template (image) to the RemoteApp instance

After the image is prepared, we'll need to upload the VM we installed RDS and the apps on. Remember, this needs be a sysprep’d image and the link above explicitly goes through the process.

  • Note 1: Do not use the /mode:vm switch of the SYSPREP command even though this is a virtual machine.
  • Note 2: pay special attention to steps 7 – 10 in the documentation provided in the link above.

Uploading the image to RemoteApp

Because I created the VM in Azure, I’ll need to download the image to my desktop before uploading back to Azure. 

The VM upload process can be a simple process by using one of the GUI tools listed here: http://blogs.technet.com/b/cbernier/archive/2013/08/22/working-with-azure-storage.aspx I prefer to use the free version of CloudXplorer.

Once the image is downloaded to your machine navigate to REMOTEAPP in the Azure Portal, select TEMPLATE IMAGES, and then select UPLOAD:

clip_image002

Create a NAME for the server instance and select a LOCATION for where the image will be hosted. Also, install Azure PowerShell if you haven’t already. Select the arrow to go to the next step.

clip_image004

Copy the contents in the COMMAND TO RUN box, place it in a text editor, and save the “Upload-AzureRemoteAppTemplateImage.ps1” script to your machine. The COMMAND TO RUN references the script downloaded. Do not change anything in the script or the script name. Once script is launched it will prompt for the location of the .vhd image.

clip_image006

Once we’re ready to run the script, open the Microsoft Azure PowerShell and paste the contents copied from the “COMMAND TO RUN” box. Once executed, we’re prompted for the location of the .vhd VM template. Find the .vhd and select it.

Upload will take a few minutes depending on bandwidth and the size of the .vhd file (should be 127 GB or smaller).

clip_image008

RemoteApp deployment using a custom template image

After the template upload is complete, in the Azure Portal navigate to RemoteApp and then select NEW and QUICK CREATE. Optionally we can select CREATE WITH VPN which will use a VPN connection to Azure if data and files are needed by apps from an on premises data center.

Add a name, select a region, and choose image uploaded in the previous step and complete. For demonstration purposes, the apps I installed on the image are Chrome, Firefox, and FreeCAD (from freecadweb.org).

clip_image010

The RemoteApp instance will take about 30 minutes to provision.

For additional details on creating a cloud deployment please visit: http://azure.microsoft.com/en-us/documentation/articles/remoteapp-create-cloud-deployment/


Selecting apps and assigning users

Once the RemoteApp instance is provisioned we’ll need to select applications to publish and assign users. We do this by selecting a deployed service from REMOTEAPP:

clip_image012

Now select “publish remoteapp programs”:

clip_image014

Select the apps to be published and select the check mark to publish:

clip_image015

By selecting the PUBLISHCING tab, we see the published apps:

clip_image017

To assign users either go back to the publish remoteapp programs page or select USER ACCESS at the top of the page and assign users by email address or by group.

Note: these are users and groups that exist in Azure Active Directory (either as stand-alone cloud accounts or by synchronization from an existing Active Directory server).

clip_image019

Accessing the published applications

Users need to download and install the RemoteApp client. They may do this by navigating to: https://www.remoteapp.windowsazure.com/ClientDownload/AllClients.aspx

In addition to Windows and Mac, RemoteApp is also available on iOS, Android, and Windows Phone and the clients may be accessed by visiting: http://azure.microsoft.com/en-us/trial/test-drive-remoteapp/

Once the installation is completed, launch the app and log in using the proper credentials (you may also use existing federation (AD FS) if it’s federated with Azure Active Directory already).

Once we’re logged in we see the applications that were published and assigned:

clip_image021

Select an application to launch and we’ll see the following:

clip_image022

The application launches:

clip_image024

Finally, we can tell we’re running a RemoteApp by seeing the RemoteApp image the application icon:

clip_image025

Conclusion

I’ve displayed how remote applications may be published without the need to set up an on premises infrastructure. I created a VM, installed RDS, and configured with applications. That image was prepared and deployed to Azure RemoteApp as a template and used to publish applications to end users.

If you’re running Remote Desktop Services (RDS) or legacy Terminal Services and are looking to move to the cloud, Microsoft Azure RemoteApp may be for you.

Additional Resources

Microsoft Remote Desktop Clients
http://technet.microsoft.com/en-us/library/dn473009.aspx 

Remote Desktop Services Blog
http://blogs.msdn.com/b/rds/archive/2014/05/12/windows-apps-in-the-cloud-introducing-microsoft-azure-remoteapp.aspx

Comments (1)

  1. ctgarvey says:

    Hi Courtenay, great article and instructions.
    Is it possible to configure remoteapp to not use session virtualisation, and instead use a full desktop instance for every session? I have different customers that dont want to be sharing private data using the temp d: drive that is created as part of the
    image provisioning. – I noticed during a test, when i got my team to open up 3 sessions using the same provisioned image , that the d: drive was behaving like a network drive.Fred added one file, then John deleted it. This was not good. I needed to copy files
    to d drive in order that the user have read/write access on the files (not possible on the c drive)

    In addition , my app is a web server and multiple instances cannot run on the same box (and share the same port)
    thanks
    Cormac

Skip to main content