Citrix XenApp 6.0 to 6.5 Upgrade Utility
XenApp 6.5 does not provide a binary upgrade path from XenApp 6.0. For some environments, the ability to create a new virtual machine image or clean installation XenApp 6.5 servers might not be possible.
The script performs what normally would be a long process of manually uninstalling XenApp 6.0 components in a select order, then installing XenApp 6.5. The following steps are performed:
- Checks to see if XenApp 6.0 is installed or not, and if the XenApp 6.5 installer is available.
- Prompts for a password to silently run the install process after reboot.
Note: This is not stored by the script but is stored by the operating system in the Task Scheduler.
- Uninstalls XenApp 6.0 components. By default these include the Online-Plugin, Management Consoles, and XenApp Application Delivery role. Other components are included in the script and can be enabled for automatic removal.
- Installs XenApp 6.5 and, by default, joins the server to the farm as a worker. This can also be changed by editing the JOIN command parameters as outlined in the document.
- Verifies the join is successful by checking to see if the IMA service is running.
IMPORTANT: This script is designed to operate silently in the background without requiring you to log in between reboots. After starting the script it takes 30 minutes (or more) and a few reboots to complete. Instructions for checking the status can be found at the end of this article.
By default, the script installs XenApp 6.5 as a worker in the farm. As such, one XenApp 6.5 controller is required. If the script will be used to join workers to multiple zones, then one controller in each zone is required. For more information on workers and controllers, contact your TRM.
User Account Control (UAC) must be turned off for the user executing the script. UAC can be reset after the install is complete.
PowerShell execution policy must be set to Unrestricted and can be reset after the install is complete.
If installing XenApp 6.5 from a network share, at least Read permission from the location.
If you plan on using the script as an unattended install of XenApp 6.5 on a new Windows 2008 R2 machine, ensure that .NET 3.5 is installed prior to running the script or the install will fail.
Installing XenApp 6.5 Worker Upgrade Utility
Download the script and place it on a local directory of the XenApp 6.0 machine.
How to Use XenApp 6.5 Worker Upgrade Utility
Setup Environment and Copy DSN File and Script
- Turn UAC off for the current administrator.
- Set the PowerShell execution policy to Unrestricted by running PowerShell in administrator mode and executing Set-ExecutionPolicy Unrestricted and entering “Y” when prompted.
- Copy the DSN file from the already installed XenApp 6.5 to the server you wish to install XenApp 6.5 in a directory with read/write permissions. You can also copy it to a network share location.
If the DSN file is from a server where SQL Express is the data store, you must edit the DSN file, navigate to the line SERVER=(local)\CITRIX_METAFRAME and change the (local) to the IP address or short name of the server with SQL Express installed.
Edit and Configure Script
- Edit the script in Notepad or PowerShell ISE and configure the following parameters:
Master log file used to record the progress of this script.
$global:logfile = “$($global:LogFolder)\XenAppUpgrade.txt”This location should have read/write privileges for the current user executing the script. By default, this is the C:\Windows\Temp directory.Network location for latest version of XenApp
Computer and Share information for mapping a share to where the latest XenAppSetupConsole.exe is found. The share must be accessible by the current user account. It can also be a local drive and/or directory.
$global:SharePathName = \\TestPC\dvd\XenApp Server Setup\bin\XenAppSetupConsole.exe
Install XenApp Command Line
This line sets the install option for installing XenApp and the log location and name for the XenApp install.
$global:InstallCommandLine = “/install:XenApp /logfile:$($global:LogFolder)\XenAppIronCoveInstallLog.txt”
Local location for legacy Citrix Online-Plugin
This must be configured since the Online-Plugin has its own installer.
$global:legacyCitrixReceiverPathName = “C:\ProgramData\Citrix\Citrix online plug-in\TrolleyExpress.exe”
Local location for Server Config Tool
$global:ConfigPathName = “c:\Program Files (x86)\Citrix\XenApp\ServerConfig\xenappconfigconsole.exe”
Configure XenApp Command Line (JOIN)
This configures the parameters that will be used in conjunction with the “xenappconfigconsole.exe” command to join the server to the XenApp farm.
To install XenApp 6.5 as a controller, remove the parameter /ImaWorkerMode:True.
Note: If you require a space in the zone name, you must use double quotes after the colon and precede each double quote with a tick (`) as it is the PowerShell escape character. (ex. /ZoneName:`”Default Zone`”)
The following example installs XenApp 6.5 and joins the server into the Default Zone as a worker.
$global:ConfigCommandLine = “/Executionmode:Join /ImaWorkerMode:True /DsnFile:c:\mf20.dsn /AuthenticationType:Windows /OdbcUserName:[domain name]\administrator /OdbcPassword:password /LicenseServername:licenseserver.com /LicenseServerPort:27000 /AddAnonymousUsersToRemoteDesktopUserGroup:True /AddUsersGroupToRemoteDesktopUserGroup:True /AddAuthenticatedUsersToRemoteDesktopUserGroup:True /ZoneName:`”Default Zone`””
- Copy the script file to a location on the XenApp 6.0 machine. The script cannot be run from a network share.
Execute the Script
- Open PowerShell in Administrator elevation. If not already done, set the PowerShell execution policy to Unrestricted. Change to the directory where the upgrade is located.
a. To execute the script as the default install as a worker, run the script as:
b. To execute the script on a blank machine as a fresh install run the script starting at step 2:
- The script prompts for a password. For the process to automatically continue after reboots, the Task Scheduler needs to launch the PowerShell process using the administrator account, and the operating needs to reconnect to the network shares. The password is not stored in the script but is handled by the operating system and stored in the Task Scheduler.
- To monitor the progress of the script, choose one of the following:
a. Log on to the server console and either open Event Viewer and filter by the process MSIEXEC and to see the overall progress. Entries of Information type will show what step has previously passed and the step the script is executing. Entries of an Error type will display what step failed and to examine the log file UpgradeXenApp.txt in the log file directory.
b. You can also navigate to the log file location and open the file XenAppUpgrade.txt and scroll to the bottom.
- When the upgrade process is complete, the message in the event log will state “Citrix XenApp upgrade Step 4: PASS! Citrix XenApp upgrade is complete!”
Should the upgrade process FAIL for any reason, review the logs and correct the error, then start the script using the step it failed at as a parameter.Example:
To start at step 4, verifying the install of XenApp 6.5..\UpgradeXenapp.ps1 4
- Run Discovery from the XenApp 6.5 controller and verify the new server is in the farm. You may also run Get-XAServer from any controller.
Data Modified by XenApp 6.5 Worker Upgrade Utility
The utility completely uninstalls XenApp 6.0 and the selected components, then installs XenApp 6.5.
How to Undo the Changes Made by XenApp 6.5 Worker Upgrade Utility
As noted above, to replace the farm back to XenApp 6.0, restore a virtual machine image or a disk image with XenApp 6.0 installed.
Uninstalling XenApp 6.5 Worker Upgrade Utility
Delete the XenAppUpgrade.ps1 file from the machine when the upgrade is complete.
The script is completely customizable and can be edited to suit any need.
You might want to use the new XenApp Migration tools to export all of the XenApp 6.0 settings and import them into XenApp 6.5 for an easier transition.