Wilco van Bragt - LinkeIn Wilco van Bragt - Twitter rssa 

Unattended installation of Citrix XenApp 6.5 Part 1

Some long time ago I wrote an article in which I explain the unattended parameters of Citrix Presentation Server 4.5 (a.k.a. XenApp 5 for Windows 2003 nowadays). With the new releases Citrix changed the method of installing Citrix XenApp, so logically the way the unattended installation is performed also changed. In this article I'm showing and describing how you can perform an unattended installation of Citrix XenApp 6.5.

 Preparation

The first you still need to have a database available before you can create the farm. If you would like to perform this also unattended, this method is not changed because this is based on SQL.  In the article about unattended installation of Citrix Presentation Server I described those steps already, so refer to that part of the article for this information.




Also you still needed is a DNS file to connect to this database during one of the unattended setup. This content and format of this file is also not changed. How you can create this file unattended, when you are configuring more Citrix XenApp environments (farms) can also be found in detail in the previous article about unattended installation of Citrix Presentation Server 4.5 <<LINK>>.

Just like previous version Citrix XenApp relies on the Microsoft implementation of Server Based Computing (SBC)  which is called in Windows 2008 R2 (the platform XenApp 6.5 need to be installed) Remote Desktop Services (RDS) and several other Windows 2008 R2 roles and features. These roles can be added/installed using PowerShell commands. I created a PowerShell script that first checks if the role is not available already and if this is not the case to add the role. Remember that the server need to be restarted for some roles and features, so you need to build a checking mechanism around the scripts or use a deployment product that can handle that. Also this part does not handle the configuration steps that are normally show during the RDS installation, so this should be arranged using Microsoft Group Policy Objects (GPOs).

# Script      : AddWindowsFeatures.ps1
# Author   : Wilco van Bragt
# Creation Date: 7-7-2011
# Usage      : Add Windows Features for Citrix XenApp 6.5

#**************************************************************************
# Date                         Version      Scripter     Changes
#------------------------------------------------------------------------
# 9:42 7-7-2011             0.1         WvB            Intial Version
#
#
#***************************************************************************

Import-Module ServerManager

if ((Test-Path -path C:\LOG\AddWindowsFeatures.log) -ne $True) {
                        New-Item -ItemType file C:\LOG\AddWindowsFeatures.log
                        }

$file = "C:\LOG\AddWindowsFeatures.log"                 

$check = Get-WindowsFeature | Where-Object {$_.Name -eq "XPS-Viewer"}

If ($check.Installed -ne "True") {

        Add-WindowsFeature XPS-Viewer -restart -logPath $File

}

else {

                        add-content -path $file "XPS Viewer already installed"

}

 

$check = Get-WindowsFeature | Where-Object {$_.Name -eq "SNMP-Services"}

If ($check.Installed -ne "True") {

        Add-WindowsFeature SNMP-Services -restart -logPath $File

}

else {

                        add-content -path $file "SNMP Services already installed"

}

 

$check = Get-WindowsFeature | Where-Object {$_.Name -eq "AS-Net-FRAMEWORK"}

If ($check.Installed -ne "True") {

        Add-WindowsFeature AS-Net-FRAMEWORK -restart -logPath $File

}

else {

                        add-content -path $file "Net Framework already installed"

}

 

$check = Get-WindowsFeature | Where-Object {$_.Name -eq "GPMC"}

If ($check.Installed -ne "True") {

        Add-WindowsFeature GPMC -restart -logPath $File

}

else {

                        add-content -path $file "Group Policy Management Viewer already installed"

}

 

$check = Get-WindowsFeature | Where-Object {$_.Name -eq "RSAT-ADDS-Tools"}

If ($check.Installed -ne "True") {

        Add-WindowsFeature RSAT-ADDS-Tools -restart -logPath $File

}

else {

                        add-content -path $file "AD Users and Computers already installed"

}

 

$check = Get-WindowsFeature | Where-Object {$_.Name -eq "Desktop-Experience"}

If ($check.Installed -ne "True") {

        Add-WindowsFeature Desktop-Experience -restart -logPath $File

}

else {

                        add-content -path $file "Desktop Experience already installed"

}

 

$check = Get-WindowsFeature | Where-Object {$_.Name -eq "RDS-RD-SERVER"}

If ($check.Installed -ne "True") {

        Add-WindowsFeature RDS-RD-SERVER -restart -logPath $File

}

else {

                        add-content -path $file "Remote Desktop Session Host already installed"

}

New-Item -ItemType file C:\LOG\CHECK\AddWindowsFeatures.CHK

add-content C:\LOG\ChECK\AddWindowsFeatures.CHK "Windows Features Installed"

restart-computer

 

In comparison with previous products Citrix XenApp automatically installs the other supporting software components needed without any interaction during the manual setup. This approach also arranges that during the unattended creation those supporting software is out of scope. Also with the unattended steps those parts are arranged by the Citrix installer.

Unattended Installation of Citrix XenApp 6.5

In the previous version the installation was performed with an MSI installation combined with MSIEXEX parameters. Also every component has its own installation steps, so you installed those separately. With this release the setup is invoked by the executable XenAppSetupConsole.exe available in the folder XenApp Server Setup\bin of the installation media.

The executable has just a few parameters, which is logically because this first is only the installation of the product, without configuring the initial setup.

The parameters available are:

/logile:path

You can specify the location of the logfile created by the installation. Default is C:\Windows\Temp.

/install:items

With this parameter you define which components of the XenApp 6.5 will be installed. You can specify the following itemss: EdgeSightServer (installs the EdgeSight server component), Licensing (installs the Citrix License Server), PCMAdmin (installs the Power and Capacity Management Administration Components), SecureGateway (installed the Secure Gateway software), SmartAuditorServer (installs the server component of Smart Auditor), SsonService (installs the Single Sign On server component, formerly known as Password Manager), ReceiverStroreFront (installs the new portal component of Citrix, that will replace Web Interface in the future), WebInterface (installs the Citrix Web Interface component, also requires IIS to be installed), XenApp (installs the XenApp server, to the actually component used for hosting the applications the users access).

When supplying the XenApp item by default Citrix AppCenter, Citrix Receiver for Windows, Citrix Offline Plug-in and Windows Desktop Experience Integration features are automatically installed. Some other features are however not installed automatically. These features need to be specified add this /install parameter when needed. Mainly these are agents' components for optional components: EdgeSight agent (specify EdgeSightAgentFeature), Smart Auditor Agent (specify SmartAuditorAgentFeature), Single Sign-ON plug in (SSONAgentFeature), Power and Capacity Management Agent (PCMAgentFeature) en Provisioning Services Target Device (PVDeviceFeature). Also when combining Citrix XenApp with IIS on one server (which I don't recommended)  you need to specify that you would like to enable the available integration within Citrix XenApp with the item XA_IISIntegration. However when the IIS feature is installed already this part will be installed automatically.

/exclude:item

When choosing the XenApp component several components are installed automatically as just described at the /install parameter. With the /exclude option you can arrange that some of the items are not installed during the installation phase. The following items can be specified at this item: XA_IISIntegration (when IIS is installed on the server and you don't want to install this integration component), XA_Console (don't install the Citrix Management Console) and XenAppEnhancedDesktopExperience (the Windows Desktop Experience Integration will not be enabled).

It's correct that you miss the Receiver component at this part, those parts cannot be excluded so will always be installed when specify the XenApp item at /include.

/edition

With this parameter you specify the edition of XenApp you are using, so you can use here Advanced, Enterprise of Platinum (when nothing is specified Platinum will be used). I expect that this only need to be used when specifying the XenApp item at the /include parameter, but cannot find any documentation about it and I only used the unattended part for installing XenApp.

/INSTALLDIR=directory

This parameter specifies the destination directory of the component specified at the /include parameter. When not specified the default path c:\Program Files (x86)\Citrix will be used.

/ONLINE_PLUGIN_INSTALLDIRECOTRY=directory

This install directory parameter can be used when specify the XenApp item at the /include parameter and as a result the Citrix Receiver will be installed automatically. With this parameter you can define where the Citrix Receiver should be installed. When not specified the Receiver will be installed in his standard location (C:\Program Files (x86)\Citrix\ICA Client).

Examples

Now we have seen all the parameters, it still good to show some examples. How the parameters can be used.

Let's start with a real basic one, installing only XenApp Enterprise edition with all default settings including another location for the logfile.

"<<MEDIALOCATION>>\XenApp Server Setup\bin\XenAppSetupConsole.exe" /install:XenApp /Enterprise /logfile:%systemdrive%\log\xenapp6_install.log

 

This is an example showing the installation of the Platinum Edition including the EdgeSight Agent and Smart Auditor Agen, but excluding the AppCenter console and the Windows Desktop Integration Experience.

"<<MEDIALOCATION>>\XenApp Server Setup\bin\XenAppSetupConsole.exe" /install:XenApp,EdgeSightAgentFeature,SmartAuditorAgentFeatues /exclude:XA_Console,XenAppEnhancedDesktopExperience /Platinum

Although I did not test it should be possible to installed components via this way when XenApp will not be installed. For example installing Web Interface and Secure Gateway on a separate server.

"<<MEDIALOCATION>>\XenApp Server Setup\bin\XenAppSetupConsole.exe" /install:WebInterface,SecureGateway

Conclusion

In this first part I described how you can install Citrix XenApp unattended. In the second part I will show how the initial setup for XenApp can be performed unattended.