Branding the Citrix ICA Client

Using the techniques described in this article, it is possible to put your own custom logos on the Citrix ICA client during application launch.

Using the techniques described in this article, it is possible to put your own custom logos on the client during application launch. See screen shots below:

Before After
Disclaimer: This article is for informational purposes only. Be sure to reference your license agreement before implementing this in a production environment.
Tools Needed:

  • Citrix Presentation Server Client Packager
  • Resource Hacker (free)
  • Graphics Editing Software (Microsoft Paint is sufficient)

Step 1: Export Existing Citrix MetaFrame ImageThis step is performed to export the existing resource image so you can replace the image with a new one with identical dimensions.

Follow these steps to complete this task:

  • Launch Resource Hacker and open statuiUI.dll. Note: statuiUI.dll is located in C:\Program Files\Citrix\ICA Client\resource\en for an English installation.
  • Navigate to Bitmap -> 101 -> 1033 (Note: since I am using the English version of the client, 1033 is my locale ID. Your locale ID may differ)
  • Right click 1033 and select “Save [Bitmap : 101 : 1033]…” Save this bitmap to any desired location

Step 2: Modify the Exported Image

Using your preferred graphics editor, open up the bitmap exported in step 1.
Modify the image as desired and save as a different name if desired.

Step 3: Replace the Resource in statuiUI.dll

  • Make a backup of statuiUI.dll
  • Launch Resource Hacker
  • Navigate to Bitmap -> 101 -> 1033
  • Right click 1033 and select “Replace Resource…”
  • Click the button labeled “Open file with new bitmap…”
  • Navigate to the bitmap created in step 2.
  • Click the Replace button.
  • Save the new statuiUI.dll file.


You will now have a branded client when launching applications. Go ahead and try it out.

You will probably notice that about half way through the application launch process, the picture you created in this step reverts back to the original Citrix Metaframe bitmap if you are running Presentation Server 3.0 or above. Why does this happen? Read on.

Citrix introduced an improved user logon process in Presentation Server 3.0 and above that included a progress bar indicating connection status throughout the entire application launch process. Basically, when you launch a published application, the process starts on the client computer setting up the connection to the server. Then, the process gets handed over to the server to complete the application launch (logon to the server, load the profile, etc). Prior to Presentation Server 3.0, when the launch process got handed over to the server, the Windows logon dialog boxes were displayed. This created kind of a disjointed look and feel for the end user. In Presentation Server 3.0 and above, the Windows logon dialog boxes were “replaced” with new dialogs that look like the local client dialog. This gave the end user a smooth looking look and feel throughout the entire launch process.

So, how do you stop this seemingly regression from happening? Move on to step 4.


Step 4: Replace statuiUI.dll on the Server.

The “replacement” dialog box for the server piece of the launch process is located at system_drive:\Program Files\Citrix\System32\resource\en\statuiUI.dll. Simply make a backup of this file and replace it with the statuiUI.dll file created in step 3.

Note: this file may be locked if other people are logged in to the server.

Now, try launching an application again and you will notice that the branding stays throughout the entire launch process.

Another file that is fun to play with is the login screen for the PN Agent. That resource is C:\Program Files\Citrix\ICA Client\resource\en\pnagenUI.dll. Have fun!

Author: Jason Conger

Hey there. Hope you like the site.

15 thoughts on “Branding the Citrix ICA Client”

  1. Hi,

    Like older versions of the grey PN client you can download from http://www.thethin.net, you can create your own. With ResHack you can also remove options from the menu’s. Since I am an CCI I have been showing this my student for some time already. Kewl thing to put this into an article.. now I can just reference this article.

    thnx!

    subsequently, rad

  2. I am tring to add the modified .dll to the MSI package from Citrix and I cannot figure out how. Anyone have know?

    J.

  3. I am using Citrix XPe nfuse, there is no StatuiUi.dll to my server, but i still getting Citrix Metaframe logo, can anyone know which file needs to alter?

    thx.
    NY

  4. StatusUI.dll (server side) is only on PS3.0 and above. What you are seeing is the Citrix GINA background. That background is located at Program Files\Citrix\System32\ica256.bmp

  5. This is great stuff, but does anyone know of a way to remove all the status messages altogether? I know of CTX104893, but that just toggles the enhanced feedback – the Windows GINA is still displayed. Surely there must be a way to remove all logon progress, so that the user sees the remote app as if it were locally installed??

  6. I performed this article on the 10.x client and it’s working great.
    After the unattended installation of the MSI file with a TRANSFORMS file i copy my custom statuiUI.DLL over the existing one.

  7. Nice article!
    I’ve branded only the server part of the connection process because we’re an application service provider and our customers user their own PCs to connect, so I don’t want to distribute them our ICA client. Some of them even use their own Citrix farm, too, and it would be somewhat strange to see our logo and then the “normal” one…

    But I like to make them see the moment when the connection is established by changing the logo! And I resized the dialog box with Resource Hacker! It’s not as simple as it seems, because the original logo isn’t displayed in its actual size: it’s scaled down for display!
    So I had to recalculate the height of the logos (original logo size: 285×42 pixels, displayed size: 186×27/28; our logo: 285×178, resized to 186×116) and changed the dialog box (German version) script from

    ——snip——
    103 DIALOGEX 0, 0, 186, 74
    STYLE DS_FIXEDSYS | DS_MODALFRAME | DS_NOIDLEMSG | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
    CAPTION “Vorlagetitel”
    LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
    FONT 8, “MS Shell Dlg”, FW_NORMAL, FALSE, 1
    {
    CONTROL 101, 1005, STATIC, SS_BITMAP | WS_CHILD | WS_VISIBLE, 0, 0, 186, 43
    CONTROL “Vorlagestatus…”, 1003, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 5, 35, 186, 16
    CONTROL “”, 1001, “msctls_progress32”, PBS_SMOOTH | WS_CHILD | WS_VISIBLE | WS_BORDER, 3, 59, 117, 11
    CONTROL “Abbrechen”, 2, BUTTON, BS_PUSHBUTTON | BS_FLAT | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 125, 56, 58, 14
    }
    ——snip——

    to

    ——snip——
    103 DIALOGEX 0, 0, 186, 158
    STYLE DS_FIXEDSYS | DS_MODALFRAME | DS_NOIDLEMSG | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
    CAPTION “Vorlagetitel”
    LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
    FONT 8, “MS Shell Dlg”, FW_NORMAL, FALSE, 1
    {
    CONTROL 101, 1005, STATIC, SS_BITMAP | WS_CHILD | WS_VISIBLE, 0, 0, 186, 133
    CONTROL “Vorlagestatus…”, 1003, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 5, 119, 186, 16
    CONTROL “”, 1001, “msctls_progress32”, PBS_SMOOTH | WS_CHILD | WS_VISIBLE | WS_BORDER, 3, 143, 117, 11
    CONTROL “Abbrechen”, 2, BUTTON, BS_PUSHBUTTON | BS_FLAT | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 125, 140, 58, 14
    }
    ——snip——

    And it works! After some seconds the dialog pops up and displays the new and bigger logo :o))
    Thanx!

  8. If anyone is using 64 bit servers, there’s only a slight change to the location of the server side statuiUI.dll location, but I thought it couldn’t hurt to post it here:
    C:\Program Files (x86)\Citrix\System32\resource\en

    Works great, tested with 11.x client and XenApp 5.x on Win 2008 server

Leave a Reply

Your email address will not be published. Required fields are marked *