Seamless Windows Applications in QVD


QVD provides access to Linux desktops which provide a variety of applications and suites out of the box and is extremely customizable. The time may come, however, when you wish to provide access to a Windows program. Since you are already virtualizing your user’s desktop, we are going to look today at doing that seamlessly inside the QVD desktop. The assumption will be that you have a Windows server available on your LAN, you may even be using that server to authenticate against Active Directory.

The first thing you will need to do is install SeamlessRDP on your server. This entails registering with Cendio and downloading the ThinLinc Server Bundle. Once you receive a confirmation email, follow the link provided and download the zip file presented, at the time of writing, tl-4.1.1-server.zip. Unzip this, and locate the tl-wts-tools.exe installable under the windows-tools folder. On your Windows server, install this file. This will provide you with the SeamlessRDP executable and related files, in our instance located at %ProgramFiles%\ThinLinc\WTSTools\seamlessrdpshell.exe.

Your next step is make sure that rdesktop is available to your users. If using KVM, locate the DI and run it in KVM. For LXC, consult the QVD Administration Manual to see how you can use bind mounts to make changes to your DI. The latest stable version of rdesktop (1.8.1 at time of writing) contains several enhancements to the window handling in SeamlessRDP, so it is strongly recommended that you either compile it from source or find a repository for your distro (there is an Ubuntu ppa for example).

Once you have rdesktop installed, you can test it by running the following command inside the DI:

# rdesktop 10.0.7.33 -A 'C:\Program Files\ThinLinc\WTSTools\seamlessrdpshell.exe' \
-S "iexplore.exe"-u 'DOMAIN \ user'-p XXXXXXX

This should invoke the SeamlessRDP executable on your server, which should in turn invoke the specified startup shell which launches the desired application through SeamlessRDP, in this instance Internet Explorer. Note the domain name, user, and address of your server will all need to be specified, and you may need to specify the full path of your executable if it is not in the PATH of the Windows server.

Once you are satisfied that everything is working as expected, zip up and deploy your DI across your QVD nodes. If you wish to provide one click access to your Windows app to your users, here is a suggested implementation. Firstly, create a text file in /etc/skel/Desktop that each user will have available in their desktops. In this instance we could call it /etc/skel/Desktop/explorer.desktop. We will point this shortcut to a bash script to avoid filling it with passwords and other sensitive data. Here it is:

[Desktop Entry]
Name=Explorer
Exec=/usr/local/bin/startexplorer.sh
Icon=qvd
Type=Application
Categories=Network
Terminal=False

The next step is to create the script itself:

#!/bin/bash
homeurl=http://www.google.com
rdesktopserver=10.0.7.33
[ -r $HOME/.qvdpassthrough ] && . $HOME/.qvdpassthrough
if [ -z "$qvduser" -o -z "$qvdpassword" ]; thenhe 
 cat <<EOF | xmessage -file -
There was an unexpected error
Please contact support.
Referencia tecnica: qvdpassthrough
EOF
 exit 1
fi
echo $qvdpassword | rdesktop 10.0.7.33 -A 'C:\Program Files\ThinLinc\WTSTools\seamlessrdpshell.exe' -s "iexplore.exe $homeurl" -u $qvduser -p -

.
 The script simply sets a url for our Windows browser and passes the user’s authentication email to rdesktop. This should be available on each user’s desktop and invoke the application when opened.

Leave a comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.