Upgrade CTX Storefront and retain customizations
There are different ways to upgrade a Storefront Group and below you’ll find my preferred way.
This quickpost covers only a single scenario, including the following components:
- Load balancing of a Storefront Group via Netscaler
- Server Group out of min. 2 Storefront servers
Further I assume:
- Same OS, no mix between different server OS versions (not supported)
- Functional replication
- Your ability to understand how Citrix components work
Steps
1. Test your Replication
2. Put the first server in maintenance mode
3. Perform a snapshot of all Storefront servers
Create a snapshot without including the virtual machine’s memory
I
4. Installation
Reboot your server in order to remove any locks. This ensures a successful upgrade.
Stop all Citrix services and perform an “iisreset /stop”
get-service *citrix*
get-service *citrix* | stop-service -force
iisreset /stop
Mount your ISO, click on autoselect.exe or launch the EXE itself by navigating to ‘:\x64\Storefront\CitrixStoreFront-x64.exe’
Restore your customizations using the following script
<# restore customizations by restoring the settings from the original host#>
#Variables
$SourceSF = Read-Host "Please provide the DNS Name of the source Host: "
$Source_Base_Folder = '\\' + $SourceSF + '\C$\' + "inetpub\wwwroot\Citrix\"
$TargetSF = Read-Host "Please provide the DNS Name of the destination Host: "
$Target_Base_Folder = '\\' + $TargetSF + '\C$\' + "inetpub\wwwroot\Citrix\"
$Stores = (Get-ChildItem $Source_Base_Folder -Exclude "*Web","*Auth","Configuration","Roaming").Name
foreach ($Store in $Stores){
if (Test-Path $($Target_Base_Folder + $Store)){
"`r`n"
"--------------------"
$Store
"--------------------"
# default.ica on Source SF
$Source_ICA = $Source_Base_Folder + $Store + '\App_Data\default.ica'
# default.ica on destination SF
$Target_ICA = $Target_Base_Folder + $Store + '\App_Data\'
# custom Folder on Source SF
$Source_custom = $Source_Base_Folder + $Store + 'Web\custom\'
# custom Folder on this SF
$Target_custom = $Target_Base_Folder + $Store + 'Web\'
if (-not(Test-Path $Target_ICA)){md $Target_ICA}
Copy-Item -Path $Source_ICA -Destination $Target_ICA -WhatIf
Copy-Item -Path $Source_ICA -Destination $Target_ICA -Force
if (-not(Test-Path $Target_custom)){md $Target_custom}
Copy-Item -Path $Source_custom -Destination $Target_custom -Recurse -WhatIf
Copy-Item -Path $Source_custom -Destination $Target_custom -Recurse -Force
"--------------------"
}
Else {Write-Host "ERROR - Store $Store doesn't exist on this Server" -ForegroundColor Red}
}
Test your settings by modifying the hostfile under ‘C:\windows\system32\drivers\etc\hosts’ and point to the IP of the updated Storefront.
# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
192.168.10.116 sf.acx.lab
Confirm all your customizations and test all relevant authentication methods
5. Upgrade the rest of your Storefront group by following the steps mentioned above
6. Cleanup
Remove the installation files and delete all snapshots
Good luck with your next upgrade
6 Responses
Great article Balint! Looking forward to seeing more of your articles!!
Thank you, Dennis!
Good doc to add to our EUC list of ways to upgrade SF.
Thank you Ray!
Nice Balint, thanks for the good content! 😉
Hi Balint!
Congrats top this blogpost. Looking forward seeing many more like this from you!
Br
Christoph