Attempting to upgrade Citrix VDA agent from 2106 to 2407 fails with: “Installation of the Citrix Graphics failed with error code 1603”

As mentioned in my previous post:

Unable to RDP to Windows Server after uninstall Citrix Virtual Apps and Desktop (VDA) agent

I don’t manage or deploy Citrix environments anymore but have still retain some of my previous knowledge of Citrix. An ex-colleague of mine recently reached out when he encountered an issue upgrading a XenApp server from VDA version 2106 to 2407 but it would keep failing with this error:

Installation of the Citrix Graphics failed with error code 1603.

Reviewing the logs would provide the following:

=== Verbose logging started: 9/30/2024 3:06:50 Build type: SHIP UNICODE 5.00.10011.00 Calling process: C:\Windows\SYSTEM32\msiexec.exe ===
MSI (c) (88:E8) [03:06:50:286]: Resetting cached policy values
MSI (c) (88:E8) [03:06:50:286]: Machine policy value ‘Debug’ is 0
MSI (c) (88:E8) [03:06:50:286]: ******* RunEngine:
******* Product: C:\Windows\TEMP\Ctx-B23E245A-5663-4A73-B56E-DF5C211B9DD7\Extract\Image-Full\x64\Virtual Desktop Components\TS\IcaGraphics_x64.msi
******* Action:
******* CommandLine: **********
MSI (c) (88:E8) [03:06:50:286]: Client-side and UI is none or basic: Running entire install on the server.
MSI (c) (88:E8) [03:06:50:289]: Grabbed execution mutex.
MSI (c) (88:E8) [03:06:50:291]: Cloaking enabled.
MSI (c) (88:E8) [03:06:50:291]: Attempting to enable all disabled privileges before calling Install on Server
MSI (c) (88:E8) [03:06:50:294]: Incrementing counter to disable shutdown. Counter after increment: 0
MSI (s) (80:88) [03:06:50:302]: Running installation inside multi-package transaction C:\Windows\TEMP\Ctx-B23E245A-5663-4A73-B56E-DF5C211B9DD7\Extract\Image-Full\x64\Virtual Desktop Components\TS\IcaGraphics_x64.msi
MSI (s) (80:88) [03:06:50:302]: Grabbed execution mutex.
MSI (s) (80:8C) [03:06:50:303]: Resetting cached policy values
MSI (s) (80:8C) [03:06:50:303]: Machine policy value ‘Debug’ is 0
MSI (s) (80:8C) [03:06:50:303]: ******* RunEngine:
******* Product: C:\Windows\TEMP\Ctx-B23E245A-5663-4A73-B56E-DF5C211B9DD7\Extract\Image-Full\x64\Virtual Desktop Components\TS\IcaGraphics_x64.msi
******* Action:
******* CommandLine: **********
MSI (s) (80:8C) [03:06:50:303]: Machine policy value ‘DisableUserInstalls’ is 0
MSI (s) (80:8C) [03:06:50:307]: Note: 1: 2203 2: C:\Windows\Installer\inprogressinstallinfo.ipi 3: -2147287038
MSI (s) (80:8C) [03:06:50:308]: SRSetRestorePoint skipped for this transaction.
MSI (s) (80:8C) [03:06:50:310]: File will have security applied from OpCode.
MSI (s) (80:8C) [03:06:50:324]: SOFTWARE RESTRICTION POLICY: Verifying package –> ‘C:\Windows\TEMP\Ctx-B23E245A-5663-4A73-B56E-DF5C211B9DD7\Extract\Image-Full\x64\Virtual Desktop Components\TS\IcaGraphics_x64.msi’ against software restriction policy
MSI (s) (80:8C) [03:06:50:325]: SOFTWARE RESTRICTION POLICY: C:\Windows\TEMP\Ctx-B23E245A-5663-4A73-B56E-DF5C211B9DD7\Extract\Image-Full\x64\Virtual Desktop Components\TS\IcaGraphics_x64.msi has a digital signature
MSI (s) (80:8C) [03:06:50:371]: SOFTWARE RESTRICTION POLICY: C:\Windows\TEMP\Ctx-B23E245A-5663-4A73-B56E-DF5C211B9DD7\Extract\Image-Full\x64\Virtual Desktop Components\TS\IcaGraphics_x64.msi is permitted to run at the ‘unrestricted’ authorization level.
MSI (s) (80:8C) [03:06:50:371]: MSCOREE not loaded loading copy from system32
MSI (s) (80:8C) [03:06:50:374]: End dialog not enabled
MSI (s) (80:8C) [03:06:50:374]: Original package ==> C:\Windows\TEMP\Ctx-B23E245A-5663-4A73-B56E-DF5C211B9DD7\Extract\Image-Full\x64\Virtual Desktop Components\TS\IcaGraphics_x64.msi
MSI (s) (80:8C) [03:06:50:374]: Package we’re running from ==> C:\Windows\Installer\22f6.msi
MSI (s) (80:8C) [03:06:50:375]: APPCOMPAT: Compatibility mode property overrides found.
MSI (s) (80:8C) [03:06:50:375]: APPCOMPAT: looking for appcompat database entry with ProductCode ‘{2AA20F42-228F-4D06-9B9D-784604962F58}’.
MSI (s) (80:8C) [03:06:50:375]: APPCOMPAT: no matching ProductCode found in database.
MSI (s) (80:8C) [03:06:50:380]: Machine policy value ‘TransformsSecure’ is 1
MSI (s) (80:8C) [03:06:50:380]: Machine policy value ‘DisablePatch’ is 0
MSI (s) (80:8C) [03:06:50:380]: Machine policy value ‘AllowLockdownPatch’ is 0
MSI (s) (80:8C) [03:06:50:380]: Machine policy value ‘DisableLUAPatching’ is 0
MSI (s) (80:8C) [03:06:50:381]: Machine policy value ‘DisableFlyWeightPatching’ is 0
MSI (s) (80:8C) [03:06:50:381]: APPCOMPAT: looking for appcompat database entry with ProductCode ‘{2AA20F42-228F-4D06-9B9D-784604962F58}’.
MSI (s) (80:8C) [03:06:50:381]: APPCOMPAT: no matching ProductCode found in database.
MSI (s) (80:8C) [03:06:50:381]: Transforms are not secure.
MSI (s) (80:8C) [03:06:50:381]: PROPERTY CHANGE: Adding MsiLogFileLocation property. Its value is ‘C:\Users\tluk\AppData\Local\Temp\Citrix\XenDesktop Installer\MSI Log Files\IcaGraphics_x641267330468.txt’.
MSI (s) (80:8C) [03:06:50:381]: Command Line: INSTALLLOCATION=C:\Program Files\Citrix ARPSYSTEMCOMPONENT=1 MSIFASTINSTALL=1 MSIRMSHUTDOWN=2 METAINSTALLER=1 CLOUD=False REBOOT=ReallySuppress CURRENTDIRECTORY=C:\Users\tluk\AppData\Local\Temp\rbt_af9367d9-629d-49c4-a825-5c2259bf57b0 CLIENTUILEVEL=3 CLIENTPROCESSID=6280
MSI (s) (80:8C) [03:06:50:381]: PROPERTY CHANGE: Adding PackageCode property. Its value is ‘{79D433D0-4CB1-4AA1-AE83-E100F90048EC}’.
MSI (s) (80:8C) [03:06:50:381]: Product Code passed to Engine.Initialize: ”
MSI (s) (80:8C) [03:06:50:381]: Product Code from property table before transforms: ‘{2AA20F42-228F-4D06-9B9D-784604962F58}’
MSI (s) (80:8C) [03:06:50:381]: Product Code from property table after transforms: ‘{2AA20F42-228F-4D06-9B9D-784604962F58}’
MSI (s) (80:8C) [03:06:50:381]: Product not registered: beginning first-time install
MSI (s) (80:8C) [03:06:50:381]: Product {2AA20F42-228F-4D06-9B9D-784604962F58} is not managed.
MSI (s) (80:8C) [03:06:50:382]: MSI_LUA: Credential prompt not required, user is an admin
MSI (s) (80:8C) [03:06:50:382]: PROPERTY CHANGE: Adding ProductState property. Its value is ‘-1’.
MSI (s) (80:8C) [03:06:50:382]: Entering CMsiConfigurationManager::SetLastUsedSource.
MSI (s) (80:8C) [03:06:50:382]: User policy value ‘SearchOrder’ is ‘nmu’
MSI (s) (80:8C) [03:06:50:382]: Adding new sources is allowed.
MSI (s) (80:8C) [03:06:50:382]: PROPERTY CHANGE: Adding PackagecodeChanging property. Its value is ‘1’.
MSI (s) (80:8C) [03:06:50:382]: Package name extracted from package path: ‘IcaGraphics_x64.msi’
MSI (s) (80:8C) [03:06:50:382]: Package to be registered: ‘IcaGraphics_x64.msi’
MSI (s) (80:8C) [03:06:50:383]: Note: 1: 2262 2: AdminProperties 3: -2147287038
MSI (s) (80:8C) [03:06:50:383]: Machine policy value ‘DisableMsi’ is 1
MSI (s) (80:8C) [03:06:50:383]: Machine policy value ‘AlwaysInstallElevated’ is 0
MSI (s) (80:8C) [03:06:50:383]: User policy value ‘AlwaysInstallElevated’ is 0
MSI (s) (80:8C) [03:06:50:383]: Product installation will be elevated because user is admin and product is being installed per-machine.
MSI (s) (80:8C) [03:06:50:383]: Running product ‘{2AA20F42-228F-4D06-9B9D-784604962F58}’ with elevated privileges: Product is assigned.
MSI (s) (80:8C) [03:06:50:383]: PROPERTY CHANGE: Adding INSTALLLOCATION property. Its value is ‘C:\Program Files\Citrix’.
MSI (s) (80:8C) [03:06:50:383]: PROPERTY CHANGE: Adding ARPSYSTEMCOMPONENT property. Its value is ‘1’.
MSI (s) (80:8C) [03:06:50:383]: PROPERTY CHANGE: Adding MSIFASTINSTALL property. Its value is ‘1’.
MSI (s) (80:8C) [03:06:50:383]: PROPERTY CHANGE: Adding MSIRMSHUTDOWN property. Its value is ‘2’.
MSI (s) (80:8C) [03:06:50:383]: PROPERTY CHANGE: Adding METAINSTALLER property. Its value is ‘1’.
MSI (s) (80:8C) [03:06:50:383]: PROPERTY CHANGE: Adding CLOUD property. Its value is ‘False’.
MSI (s) (80:8C) [03:06:50:383]: PROPERTY CHANGE: Adding REBOOT property. Its value is ‘ReallySuppress’.
MSI (s) (80:8C) [03:06:50:383]: PROPERTY CHANGE: Adding CURRENTDIRECTORY property. Its value is ‘C:\Users\tluk\AppData\Local\Temp\rbt_af9367d9-629d-49c4-a825-5c2259bf57b0’.
MSI (s) (80:8C) [03:06:50:383]: PROPERTY CHANGE: Adding CLIENTUILEVEL property. Its value is ‘3’.
MSI (s) (80:8C) [03:06:50:383]: PROPERTY CHANGE: Adding CLIENTPROCESSID property. Its value is ‘6280’.
MSI (s) (80:8C) [03:06:50:383]: Machine policy value ‘DisableAutomaticApplicationShutdown’ is 0
MSI (s) (80:8C) [03:06:50:384]: PROPERTY CHANGE: Adding MsiRestartManagerSessionKey property. Its value is ’65a1ccc8b3c7e049a55170db32594dca’.
MSI (s) (80:8C) [03:06:50:384]: RESTART MANAGER: Session opened.
MSI (s) (80:8C) [03:06:50:384]: PROPERTY CHANGE: Adding MsiSystemRebootPending property. Its value is ‘1’.
MSI (s) (80:8C) [03:06:50:384]: TRANSFORMS property is now:
MSI (s) (80:8C) [03:06:50:384]: PROPERTY CHANGE: Adding VersionDatabase property. Its value is ‘500’.
MSI (s) (80:8C) [03:06:50:385]: SHELL32::SHGetFolderPath returned: C:\Users\tluk\AppData\Roaming
MSI (s) (80:8C) [03:06:50:386]: SHELL32::SHGetFolderPath returned: C:\Users\tluk\Favorites
MSI (s) (80:8C) [03:06:50:387]: SHELL32::SHGetFolderPath returned: C:\Users\tluk\AppData\Roaming\Microsoft\Windows\Network Shortcuts
MSI (s) (80:8C) [03:06:50:388]: SHELL32::SHGetFolderPath returned: C:\Users\tluk\Documents
MSI (s) (80:8C) [03:06:50:389]: SHELL32::SHGetFolderPath returned: C:\Users\tluk\AppData\Roaming\Microsoft\Windows\Printer Shortcuts
MSI (s) (80:8C) [03:06:50:390]: SHELL32::SHGetFolderPath returned: C:\Users\tluk\AppData\Roaming\Microsoft\Windows\Recent
MSI (s) (80:8C) [03:06:50:391]: SHELL32::SHGetFolderPath returned: C:\Users\tluk\AppData\Roaming\Microsoft\Windows\SendTo
MSI (s) (80:8C) [03:06:50:392]: SHELL32::SHGetFolderPath returned: C:\Users\tluk\AppData\Roaming\Microsoft\Windows\Templates
MSI (s) (80:8C) [03:06:50:392]: SHELL32::SHGetFolderPath returned: C:\ProgramData
MSI (s) (80:8C) [03:06:50:393]: SHELL32::SHGetFolderPath returned: C:\Users\tluk\AppData\Local
MSI (s) (80:8C) [03:06:50:394]: SHELL32::SHGetFolderPath returned: C:\Users\tluk\Pictures
MSI (s) (80:8C) [03:06:50:396]: SHELL32::SHGetFolderPath returned: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools
MSI (s) (80:8C) [03:06:50:397]: SHELL32::SHGetFolderPath returned: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
MSI (s) (80:8C) [03:06:50:398]: SHELL32::SHGetFolderPath returned: C:\ProgramData\Microsoft\Windows\Start Menu\Programs
MSI (s) (80:8C) [03:06:50:399]: SHELL32::SHGetFolderPath returned: C:\ProgramData\Microsoft\Windows\Start Menu
MSI (s) (80:8C) [03:06:50:400]: SHELL32::SHGetFolderPath returned: C:\Users\Public\Desktop
MSI (s) (80:8C) [03:06:50:402]: SHELL32::SHGetFolderPath returned: C:\Users\tluk\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Administrative Tools
MSI (s) (80:8C) [03:06:50:403]: SHELL32::SHGetFolderPath returned: C:\Users\tluk\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
MSI (s) (80:8C) [03:06:50:404]: SHELL32::SHGetFolderPath returned: C:\Users\tluk\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
MSI (s) (80:8C) [03:06:50:405]: SHELL32::SHGetFolderPath returned: C:\Users\tluk\AppData\Roaming\Microsoft\Windows\Start Menu
MSI (s) (80:8C) [03:06:50:407]: SHELL32::SHGetFolderPath returned: C:\Users\tluk\Desktop
MSI (s) (80:8C) [03:06:50:408]: SHELL32::SHGetFolderPath returned: C:\ProgramData\Microsoft\Windows\Templates
MSI (s) (80:8C) [03:06:50:408]: SHELL32::SHGetFolderPath returned: C:\Windows\Fonts
MSI (s) (80:8C) [03:06:50:408]: Note: 1: 2898 2: MS Sans Serif 3: MS Sans Serif 4: 0 5: 16
MSI (s) (80:8C) [03:06:50:413]: MSI_LUA: Setting MsiRunningElevated property to 1 because the install is already running elevated.
MSI (s) (80:8C) [03:06:50:413]: PROPERTY CHANGE: Adding MsiRunningElevated property. Its value is ‘1’.
MSI (s) (80:8C) [03:06:50:413]: PROPERTY CHANGE: Adding Privileged property. Its value is ‘1’.
MSI (s) (80:8C) [03:06:50:413]: Note: 1: 1402 2: HKEY_CURRENT_USER\Software\Microsoft\MS Setup (ACME)\User Info 3: 2
MSI (s) (80:8C) [03:06:50:413]: Note: 1: 1402 2: HKEY_CURRENT_USER\Software\Microsoft\MS Setup (ACME)\User Info 3: 2
MSI (s) (80:8C) [03:06:50:413]: PROPERTY CHANGE: Adding DATABASE property. Its value is ‘C:\Windows\Installer\22f6.msi’.
MSI (s) (80:8C) [03:06:50:413]: PROPERTY CHANGE: Adding OriginalDatabase property. Its value is ‘C:\Windows\TEMP\Ctx-B23E245A-5663-4A73-B56E-DF5C211B9DD7\Extract\Image-Full\x64\Virtual Desktop Components\TS\IcaGraphics_x64.msi’.
MSI (s) (80:8C) [03:06:50:413]: Machine policy value ‘MsiDisableEmbeddedUI’ is 0
MSI (s) (80:8C) [03:06:50:413]: EEUI – Disabling MsiEmbeddedUI for service because it’s not a quiet/basic install
MSI (s) (80:8C) [03:06:50:414]: Note: 1: 2205 2: 3: PatchPackage
MSI (s) (80:8C) [03:06:50:414]: Machine policy value ‘DisableRollback’ is 0
MSI (s) (80:8C) [03:06:50:414]: User policy value ‘DisableRollback’ is 0
MSI (s) (80:8C) [03:06:50:414]: PROPERTY CHANGE: Adding UILevel property. Its value is ‘2’.
=== Logging started: 9/30/2024 3:06:50 ===
MSI (s) (80:8C) [03:06:50:414]: Note: 1: 2203 2: C:\Windows\Installer\inprogressinstallinfo.ipi 3: -2147287038
MSI (s) (80:8C) [03:06:50:415]: APPCOMPAT: [DetectVersionLaunchCondition] Launch condition already passes.
MSI (s) (80:8C) [03:06:50:415]: PROPERTY CHANGE: Adding ACTION property. Its value is ‘INSTALL’.
MSI (s) (80:8C) [03:06:50:415]: Doing action: INSTALL
Action start 3:06:50: INSTALL.
MSI (s) (80:8C) [03:06:50:415]: Running ExecuteSequence
MSI (s) (80:8C) [03:06:50:415]: Skipping action: CA_CheckUserIsAdmin (condition is false)
MSI (s) (80:8C) [03:06:50:415]: Doing action: FindRelatedProducts
Action start 3:06:50: FindRelatedProducts.
MSI (s) (80:8C) [03:06:50:416]: PROPERTY CHANGE: Adding WIX_UPGRADE_DETECTED property. Its value is ‘{68E42F62-C2C9-4D0A-AB06-75138305D914}’.
MSI (s) (80:8C) [03:06:50:416]: PROPERTY CHANGE: Adding MIGRATE property. Its value is ‘{68E42F62-C2C9-4D0A-AB06-75138305D914}’.
MSI (s) (80:8C) [03:06:50:417]: Doing action: AppSearch
Action ended 3:06:50: FindRelatedProducts. Return value 1.
Action start 3:06:50: AppSearch.
MSI (s) (80:8C) [03:06:50:418]: Note: 1: 2262 2: Signature 3: -2147287038
MSI (s) (80:8C) [03:06:50:418]: PROPERTY CHANGE: Adding WINDOWSMAJORVERSIONNUMBER property. Its value is ‘#10’.
MSI (s) (80:8C) [03:06:50:418]: Note: 1: 2262 2: Signature 3: -2147287038
MSI (s) (80:8C) [03:06:50:418]: PROPERTY CHANGE: Adding WINDOWSCURRENTBUILD property. Its value is ‘17763’.
MSI (s) (80:8C) [03:06:50:418]: Note: 1: 2262 2: Signature 3: -2147287038
MSI (s) (80:8C) [03:06:50:419]: Note: 1: 2262 2: Signature 3: -2147287038
MSI (s) (80:8C) [03:06:50:419]: PROPERTY CHANGE: Adding NETFRAMEWORK40FULLINSTALLROOTDIR property. Its value is ‘C:\Windows\Microsoft.NET\Framework\v4.0.30319\’.
MSI (s) (80:8C) [03:06:50:419]: Note: 1: 2262 2: Signature 3: -2147287038
MSI (s) (80:8C) [03:06:50:419]: PROPERTY CHANGE: Adding NETFRAMEWORK45 property. Its value is ‘#528049’.
MSI (s) (80:8C) [03:06:50:419]: Doing action: LaunchConditions
Action ended 3:06:50: AppSearch. Return value 1.
Action start 3:06:50: LaunchConditions.
MSI (s) (80:8C) [03:06:50:420]: Product: Citrix HDX Graphics x64 — Uninstall the currently installed version of this package to proceed with a new installation.

Action ended 3:06:50: LaunchConditions. Return value 3.
Action ended 3:06:50: INSTALL. Return value 3.
MSI (s) (80:8C) [03:06:50:422]: Note: 1: 1708
MSI (s) (80:8C) [03:06:50:422]: Product: Citrix HDX Graphics x64 — Installation failed.

MSI (s) (80:8C) [03:06:50:422]: Windows Installer installed the product. Product Name: Citrix HDX Graphics x64. Product Version: 7.42.100.79. Product Language: 9. Manufacturer: Citrix Systems, Inc.. Installation success or error status: 1603.

MSI (s) (80:8C) [03:06:50:425]: Deferring clean up of packages/files, if any exist
MSI (s) (80:8C) [03:06:50:425]: MainEngineThread is returning 1603
MSI (s) (80:88) [03:06:50:428]: RESTART MANAGER: Session closed.
MSI (s) (80:88) [03:06:50:428]: No System Restore sequence number for this installation.
=== Logging stopped: 9/30/2024 3:06:50 ===
MSI (s) (80:88) [03:06:50:429]: User policy value ‘DisableRollback’ is 0
MSI (s) (80:88) [03:06:50:429]: Machine policy value ‘DisableRollback’ is 0
MSI (s) (80:88) [03:06:50:429]: Incrementing counter to disable shutdown. Counter after increment: 0
MSI (s) (80:88) [03:06:50:429]: Note: 1: 1402 2: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\Rollback\Scripts 3: 2
MSI (s) (80:88) [03:06:50:429]: Note: 1: 1402 2: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\Rollback\Scripts 3: 2
MSI (s) (80:88) [03:06:50:430]: Decrementing counter to disable shutdown. If counter >= 0, shutdown will be denied. Counter after decrement: -1
MSI (c) (88:E8) [03:06:50:431]: Decrementing counter to disable shutdown. If counter >= 0, shutdown will be denied. Counter after decrement: -1
MSI (c) (88:E8) [03:06:50:432]: MainEngineThread is returning 1603
=== Verbose logging stopped: 9/30/2024 3:06:50 ===

The error appears to point to:

MSI (s) (80:8C) [03:06:50:420]: Product: Citrix HDX Graphics x64 — Uninstall the currently installed version of this package to proceed with a new installation.

Implying that the Citrix HDX Graphics x64 was stopping the upgrade. Attempts to use the VDA Cleanup Agent, manually delete folders and HKLM registry keys, unselecting all options in the GUI did not allow the install to complete.

After troubleshooting the issue with my colleague for hours, we eventually came across this registry key:

Computer\HKEY_CLASSES_ROOT\Installer\Products\26F24E869C2CA0D4BA60573138509D41

Which referenced the Citrix HDX Graphics 64. We went ahead and deleted it from the GUI (you can also use reg delete HKCR\Installer\Products\26F24E869C2CA0D4BA60573138509D41 /f), then ran the install again and the VDA agent completed.

This was one of the most frustrating troubleshooting experiences I’ve had and I hope this post helps anyone who may encounter this issue.