Apple has been trying to make the iPad as a computer, but it's never as good as a real PC. If you can run PC software on an iPad, such as a full version of Office, that would be an ideal way. The first software I used when I was a kid was Microsoft Word in Office 97, which was the first version to introduce an Office Assistant (Clippy). In honor of Clippy that died at the age of seven, I decided to bring it back to life on the iPad Pro 22 years later.

In fact, the iPad's system can't run Office 97, and the closest way to go is with RemoteApp in RDS. Azure did launch RemoteApp service 5 years ago, but it was then retired. One migration option in the official document is using the IaaS VM to configure the RDS yourself, which is what this article is going to talk about.

Remote Desktop vs RemoteApp


Windows Remote Desktop (RDP) has a long history and I believe you are all familiar with it. Nowadays, Android and iOS also got official RDP clients. It's possible and most convenient to run Office 97 on your iPad with RDP, what's RemoteApp and what's the point of using RemoteApp rather than RDP?

RemoteApp is a further "encapsulation" of Remote Desktop, i.e. it does not provide a complete desktop environment, only remotely rendering the app UI you are using, and the user cannot see other interfaces of Windows, such as taskbars, desktops, etc., and use only the granted apps assigned by the IT administrator. This can improve security and management capabilities in an enterprise.

For example, the user's client (Windows, Android, iOS) does not have corporate software installed, or the user may temporarily use someone else's device, which is not suitable to install a corporate application on it. This is the moment RemoteApp is going to fit in by using the corporate software installed on the server remotely, and the entire network communication is encrypted, and the data is not stored on the client. And the user can't operate on the full desktop of the server, ensuring the security of the server.

Another benefit of RemoteApp is that the App's windows just look like local apps that can be dragged around, minimized, switch screens, and more. So I chose to run Office 97 with RemoteApp.

RDS Environment


Remote Desktop Service (RDS) is a service role on Windows Server that contains the RemoteApp used in this article. The configuration of RDS is more complex than RDP. It requires multiple servers to complete the configuration. 

A typical deployment structure is an Active Directory Domain Controller (DC), an RDS Gateway, a Broker, and one or more Host servers running your applications. To enable users to use RDS services securely, you also need to purchase a formal certificate.

Setup RDS on Azure


I am not a professional IT guy, setting up all servers manually could be a mission impossible for me. Fortunately, Microsoft Azure provides ARM templates for fully automated deployment of RDS with a few mouse clicks! 

What's ARM template

"Azure Resource Manager (ARM) templates are used to deploy resources into resource groups programmatically. ARM provides full Infrastructure as Code capability for Azure. The format is very flexible and enables the configuration of multiple resources and the dependencies between them."

In human terms, for a complex configuration, you can write down configuration requirements and steps in the form of code, expose parameters to the user, and then let the user deploy it through click of mouse or a program to automate the deployment. Users only need to know the parameters they need, and do not need to care about underlying details like how the environment is installed and configured, Azure will do everything automatically. ARM templates are provided by the community and from Microsoft, you can also write templates to help others.

Deploy RDS ARM template

Get "Remote Desktop Services (RDS) Deployment" in Azure Market, and it will redirect you to Azure Portal for deployment.

Set administrator credentials, and this user will be added to AD to configure subsequent settings on all servers. It is recommended that you create a separate Resource group to manage the entire set of RDS resources.

Specify a domain name prefix in DNS name label, which is eventually used to connect to RemoteApp for end users. For AD domain name, you can either use a real domain that you owned or just anything you want.

Azure VMs are expensive, and it is recommended to change the number of RDSH servers to one in order not to blow up your credit card. Other configurations remain default.

Finally, deploy it after confirming all parameters are correct.

The entire deployment process lasts approximately an hour and you can see the progress at any time.

Once the deployment is complete, you can see four VMs in Azure. They are:

  1. advm: Active Directory Domain Control (with public IP)
  2. cb-vm: Connect broker (intranet IP)
  3. gw-vm: RDS Gateway (public IP and public domain name)
  4. rdsh-0: Application host server (Intranet IP)

At this point, Azure is done helping us, and we need to do the rest ourselves.

Configuring RDS Servers

RDP into advm using it's public IP address. Browse to Add roles and features/Features and check AD DS Tools and AD LDS Snap-Ins and Command-Line Tools

Click Active Directory Users and Computers under Tools menu.

You can see the other 3 servers under "Computers" which indicates the Azure virtual network is working.

Create a user under "Users", for example, edi-rds.com\ninja.cat

This is the very account that RemoteApp is going to run as.

Then, we need to configure gw-vm, you must use a domain account (e.g. with edi-rds.com domain name) to sign in as RDP credential, otherwise it won't work!

Select Manage, Add Servers

Add rdsh-0 and broker 

Wait for them to come online in All Servers

Now, you should be able to see the complete deployment in Remote Desktop Services Overview

Back to your computer, access RDS Web portal via

https://<RDSGateway IP or domian name>/RDWeb

Because we didn't assign a certificate, just ignore the security warning.

Login to RDS portal using the very account that we created in the advm.

Attempting to access the default Remote Desktop app at this point will find that the certificate is not trusted and access is denied. For testing purposes, we can temporarily trust this certificate manually. Click "View certificate...", "Copy to File..."

Export the certificate as "DER encoded binary X.509 (.CER)"

Then, install the certificate on local machine.

Place it into Trusted Root Certification Authorities

Install Microsoft Office 97 on RDSH-0

Because RDSH-0 does not have a public IP, we can't directly RDP into it, so we have to access it inside gw-vm because they share a common LAN.

Install Office 97 in a classic way. Tip: You can use Azure Blob Storage to transfer hundreds of megabytes of Office 97 images in seconds.

Once the installation is complete, try on the server to see if the Office app can start properly.

Publish Office 97 RemoteApp

Back to gw-vm, go to Remote Desktop Services / Collections / Desktop Collection / RemoteApp Programs, choose Tasks - Publish RemoteApp Programs

Select the Office 97 Apps you want to use, and finish the publish.

Now, back to your computer, refresh the RDWeb and you should see all the published Office 97 products.

You can test if they can launch on your local machine.

At this point, the configuration on the PC and Azure servers are all complete.

Use RemoteApp on iPad

Download Remote Desktop app in App Store. Add https://<RDSGateway IP or domian name>/RDWeb as a remote resource.

Add RDS account and tap Find Feed

Tap Accept to ignore certificate warning.

You can see all the RemoteApps available on the main screen, and just like on your PC, start Word 97 and use it!

You can do the same on iPhone as well :)


Reference:

https://docs.microsoft.com/en-us/windows-server/remote/remote-desktop-services/rds-in-azure 

https://docs.microsoft.com/en-us/remoteapp/remoteapp-migrationoptions