Citrix Storefront – Adventures in customization – Change any ICA parameter

Citrix Storefront – Adventures in customization – Change any ICA parameter

/ /
in Blog

When I was originally exploring using the Citrix SDK to manipulate some ICA parameters, I found I couldn’t do it.  Using Powershell and passing a header parameter I could manipulate the ICA file to how I wanted, but when I attempted to do so with Internet Explorer, I found it wasn’t passing the header parameter.  I assumed this was because of how browsers were launching the ICA file.  However, I attempted to use Sam Jacob’s Citrix Storefront clientname manipulation extension, I discovered I had the same problem.  I originally thought I was doing something wrong, but on a whim I tried Chrome and it worked…  Perfectly!

When I investigated further I found it appears that when Storefront detects IE it doesn’t use the GetLaunchStatus API, which passes the headers to Storefront for ICA manipulation.  I found a way to fix this was the add the IE detection to the script.js and add the missing call to the GetLaunchStatus API.

But now that I have headers being passed properly, I thought I should revisit my ICA parameter manipulation.  Sam’s customization works great for manipulating the client name, but we have a few applications with various different requirements:

  1. Pass parameters to some specific applications
  2. Modify clientname based on the specific application that is launched

Can we replace Sam’s customization with one that can manipulate any ICA parameter we so choose?

Yes.  Yes we can.  Storefront is very nice, flexible and powerful 🙂

I’ve designed this customization to look for an additional app setting tag.  This needs to be added to the web.config at the “”C:\inetpub\wwwroot\Citrix\Store\web.config”” level:

Any parameter you want passed through needs to be enabled as a forwarded header in the “”C:\inetpub\wwwroot\Citrix\StoreWeb\web.config”” file:


Lastly, you need to edit your \custom\script.js file to include your application and whatever parameters you want passed to it:

One of the cool things about this is you can still use tags to change the behaviour of these applications.  For instance, if you want a certain subset of your applications to be 8bit you can do set check for that tag on app launch and add the header to set the desired color.  You can set certain applications to keep their ICA file by setting “RemoveICAFile” to Off.  You can individually modify any setting for a specific application or subset of applications.

Here is the StoreCustomization_Launch.dll and source code.

Here is the source code for prosperity:




  1. Pingback: Detailed Change Log – Carl Stalhood

  2. Pingback: Citrix Storefront – Adventures in customization – Define a custom resolution for a specific application – Trentent Tye – Microsoft MVP

  3. Pingback: StoreFront 3.5 through 3.13 – Tweaks – Carl Stalhood

  4. Manu Panicker 2018-03-12 1:16 pm

    Great Article, is it possible to have the clientname generated randomly in receiver ?
    It does that is Web, but not in Receiver.

    • trententtye 2018-03-30 12:58 pm

      Hi Manu, I’m sure it’s possible but I haven’t explored native receiver.

  5. Sébastien 2018-09-21 9:11 am

    Thank you for this article, it works very well.

    Does you know if it would be possible to force to launch the application in the same context if already opened ? In fact, I have an application than can open several files, and I need to open each file, with separates URLs, with the same application instance.

    For now, each URL launch a separate application instance.

    Thanks for your blog

  6. Tim 2020-08-31 9:45 am

    Hi trententtye,

    great article.
    Is it possible to keep the actual ClientName and just add the custom header text?


Post a Comment

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


This site uses Akismet to reduce spam. Learn how your comment data is processed.