My working in a company which was inside a Crop. network in China. As you may know, in China there are some websites we cannot connect such as Facebook, Twitter, YouTube. And the connectivity with Google is always unstable, too. As a software developer I need Google everyday to search technical actuals, look for resolution and best practices. Besides, our Crop. network only support 80 and 443 port. This means I cannot use FTP, Remote Desktop and SSH, etc. from my workstation to the service on the cloud. But it was changed when I began to use Azure RemoteApp.
Azure RemoteApp was powered by application virtualization provided Microsoft. It means we can use, in theory, any application installed in our Windows virtual machine in Azure from any of our device: Windows or Mac OS, iOS or Android.
Create New RemoteApp Account
There is a blog post by Scott Guthrie introducing how to create a RemoteApp account. We just need to go to azure portal, select RemoteApp, specify the name of my service, where it will be provisioned (region), price plan and the template (Windows Server 2012 or Office 365). Then that's all. Several minutes later it will be ready.
It's very simple to use RemoteApp. Just open it from azure portal and download the client application.
By default it will show the client download link for the device we are using now. But we can check downloads for all clients available here.
After downloaded and installed the client we can launch and login with the Microsoft Account in Azure. It will show some programs already published: Calculator, cmd, Internet Explorer, Paint, PowerShell, PowerShell ISE.
Now let me open Internet Explorer and check my IP. Since I selected East Asia region when I created the account, the IP shows that I'm in Hong Kong. Also this Internet Explorer was launched as a normal application in my workstation, an icon was in my task bar. Only different is that, there is a indicator shows that this Internet Explorer was a remote application instead of local.
Publish More Applications
RemoteApp allows us publish applications through Start Menu or path in azure portal. In this case I want to view the file system of the virtual machine my RemoteApp located. So I need to publish Windows Explorer.
Go to my RemoteApp on azure portal and select "Publishing" tab, we will find applications already exposed. Click "Publish" button in the bottom and select "Publish program using path".
Specify the application name and path. We use some environment variants when specifying the path.
Then Click "OK", RemoteApp will try to find the application and publish it. After several seconds we can see Windows Explorer was in the list.
If RemoteApp found your application successfully, it will refresh the icon with the one application uses. When you find the icon was not changed accordingly it might because the path you specified was incorrect.
Next, back to the RemoteApp client and refresh we can see Windows Explorer appeared.
Publish More 3rd Party Applications
As you can see I had published some 3rd party applications in my RemoteApp account such as PuTTY, FileZilla. It's very simple as well.
First of all, we need to ensure the application we want to publish can be used by simple copy-and-paste. Which means we don't need to install them on RemoteApp machine. This is because the virtual machine the RemoteApp was located contains an administrator account named "RDSAdmin" which we don't have the credential. The user when we launched a remote application was a guest account which doesn't have the permission to install or uninstall a program.
Something in details. I logged in azure portal with email@example.com and created my RemoteApp account, it will create a new virtual machine, install and configured Remote Desktop Service and added this account as guest permission to the system. Then when I launched any applications in RemoteApp client it will firstly access the virtual machine with this guest account in background and launch the application I selected, and show in my desktop. But if I tried to install something, the UAC will be popped up ask for the password of the administrator named "RDSAdmin" that I don't know.
Second, find the application we want to publish. We can open Internet Explorer via RemoteApp and download it directly to the virtual machine. Alternatively we can copy files from our local machine to RemoteApp machine through the "remote-ed" Windows Explorer.
Finally, publish this application by path in azure portal, same as what we did for Windows Explorer.
For example, below I copied "putty.exe" from my local machine to RemoteApp machine through the "remote-ed" Windows Explorer.
And published on azure portal as below.
Refresh my local RemoteApp client and launched the PuTTY from my local machine.
Note that even though I'm in the Crop. network that doesn't allow port 22, I can use it to connect a Linux machine on another Azure region in West US.
Remote Desktop to Virtual Machine with App Installed
In the section above I mentioned in RemoteApp we cannot install application due to the guest account restriction. But we can resolve it by introducing another virtual machine.
Normally we uses RemoteApp as below.
Now let's create a new virtual machine in Azure. Since this is a standard virtual machine we have administrator rights. So we can launch Remote Desktop from RemoteApp, connect to this virtual machine, install applications we want and use them. In this mode we can launch any application (copy-and-paste, or install) and use them inside the Crop. network via RemoteApp.
Let's launch "cmd" from my RemoteApp client, execute "mstsc".
Specify the virtual machine IP address or DNS name with its Remote Desktop port (normally it's NOT the default 3389), type login and password them we can see the desktop and launch Visual Studio.
In this post I introduced Azure RemoteApp feature on how to create a new account, how to publish an existing application. I also introduced on how to publish 3rd party application by copy-paste them into the virtual machine RemoteApp located.
At last I shared how to use RemoteApp to connect to another virtual machine in Azure so that we can use to install and launch more applications.
Azure RemoteApp supports hybrid deployment that allows us to publish applications need to be installed. But it's complex and time-consuming. I think by using my approach (remote to remote VM) it become very easy to use any application regardless which device we are using, what kind of network and firewall in front of.
Hope this helps,
All documents and related graphics, codes are provided "AS IS" without warranty of any kind.
Copyright © Shaun Ziyan Xu. This work is licensed under the Creative Commons License.