I recently helped a customer get going with Citrix Cloud (Virtual Apps and Desktops sevice) and whilst in the process of configuring their published apps they asked for a handful of custom icons. A number of their webapps run using Chrome but they wanted to have a custom icon for the application that was more relevant, opposed to the standard Chrome icon, this makes for a better look and feel and improved user experience. With Citix Cloud, you only get to choose from the Citrix default icons with no option to upload your own:
Thankfully, with a little help from Powershell, it’s easily achieved. In this example, we will use Grafana which leverages the browser to access configured dashboards.
It’s a pretty straight forward setup – publish Chrome as you normally would with the addition of the command line argument targeting the URL of the application:
Tip – Typically, published browsers are setup before anything that’s custom so you can choose to duplicate the application in Studio > Applications to save a little time on the setup, just be sure to rename, group and deliver as required:
Your target icon must be saved in the correct .ico format, this is not a case of saving the image file as a .ico, use one of the many online converters. I recommend icoconverter…
Choose your custom image, select all sizes (256 pixels is key), select 32 bits for bit depth and convert.
Place the downloaded image (it should have exported with the .ico extension) in the root the C drive on your domain-joined management box (or wherever you intend on connecting to Citrix Cloud from)
Now we connect to the Citrix Cloud tenant using the Powershell SDK, if you are not familiar with this process, here are the steps (taken from https://docs.citrix.com/en-us/citrix-virtual-apps-desktops-service/sdk-api.html)
Install and use the Remote PowerShell SDK
- Ensure that PowerShell 3.0 or later is available on the machine.
- If the machine has the Citrix Virtual Apps and Desktops Delivery Controller SDK installed, remove that SDK (from Windows Programs and Features) before installing the Remote PowerShell SDK.
To install the Remote PowerShell SDK:
- Download the installer: https://download.apps.cloud.com/CitrixPoshSdk.exe. The package contains both x86 and x64 implementations.
- In the downloaded folder, locate and run the installer.
- Follow the dialogs to complete the installation.
Installation logs are created in %TEMP%\CitrixLogs\CitrixPoshSdk. Logs can help resolve installation issues.
Run the Citrix Virtual Apps and Desktops Remote PS SDK on a domain-joined computer within that resource location:
- Open a PowerShell command prompt. You do not need to run as an administrator.
- Add the Citrix snapins:
- You can explicitly authenticate by using the
Get-XdAuthenticationcmdlet. Or, execute your first Citrix Virtual Apps and Desktops PS SDK command, which will prompt you for the same authentication as Get-XdAuthentication.
- To bypass the authentication prompt, you can use the Set-XdCredentials cmdlet to create a default authentication profile, using a Secure Client created in the Citrix Cloud console.
Once authenticated, run the following Powershell command:
$icon=Get-BrokerIcon -FileName "<Location of the .ico file>" |New-BrokerIcon | Select-Object Uid Get-BrokerApplication -name "<Name of the published application>" | Set-BrokerApplication -IconUid $icon.Uid
Using my Grafana example, it looks like this:
$icon=Get-BrokerIcon -FileName "grafana.ico" |New-BrokerIcon | Select-Object Uid Get-BrokerApplication -name "IMC Grafana Dashboards" | Set-BrokerApplication -IconUid $icon.Uid
Once the command has run, no news is good news… refresh Studio, Storefront/Workspace and you should be good…
Studio > Applications:
NOTE – The application icon should appear in Studio after a refresh but I’ve experienced some delays of it showing up in Citrix Workspace, give it 30 mins or so before you go digging.
If you happen to get a ‘CannotReadLocation’ error when running the Powershell command it’s likely a problem with the file format… try rerunning the .ico conversion process with a fresh image:
I hope this has been of use, cheers!