Citrix Application Configuration Settings

The following are the available app.config settings for Citrix integration. These settings apply to the app.config files for both the GenericStub (the Citrix executable) and the ID executable. These settings are not required for operation.

The Citrix installer installs the settings on the server; however, the settings are not installed automatically on client computers. To add these settings to client machines, merge the settings into the existing app.config files for the ID executable, as shown in the following example.

<configuration>
  <appSettings>
    <add key="CitrixIntegration.VirtualChannelNamePrefix" value="CTXCCFC"/>
    <add key="CitrixIntegration.XmitFragmentSize" value="1000"/>
    <add key="CitrixIntegration.RecvTimeoutInMilliseconds" value="2000"/>
    <add key="CitrixIntegration.HeartbeatMaxWaitInMilliseconds" value="60000"/>
    <add key="CitrixIntegration.ClientOnly.HeartbeatIntervalInMilliseconds" value="15000"/>
  </appSettings>
</configuration>

The keys have the following definitions:

  • CitrixIntegration.VirtualChannelNamePrefix – For every launched Citrix-published application, two distinctly named virtual channels that share a common prefix are created. This setting exposes the prefix to customization, although typically it is not necessary. This setting must be identical on the client side and server side. Ensure the VirtualChannelNamePrefix is in the following format:

  • <CTX><3 letter identifier> <C/S>

  • Where,

    • CTX: Identifies that it is a Citrix application.
    • 3 Letter identifier: Unique identifier for the Citrix application.
    • C/S: Use C for client and S for server. This is updated by CCF based on the channel type (Client or Server)
  • CitrixIntegration.XmitFragmentSize – Virtual channel transmissions are fragmented to the size limit specified here (in bytes). The setting is capped internally if it exceeds internal limits (trace messaging should report when this happens). This setting can be different on the client side and server side.

  • CitrixIntegration.RecvTimeoutInMilliseconds – As with all network communication, timeouts are necessary to help decide when the communication peer is unavailable. Citrix integration communication is request/response oriented, and this setting specifies how long the response should take before the system stops waiting for a response. This setting can be different on the client side and server side.

  • CitrixIntegration.HeartbeatMaxWaitInMilliseconds – Any virtual channel communication activity is counted as a heartbeat. This setting specifies the maximum amount of time that can elapse without any intervening communication. After this time elapses, either side of the communication channel (client or server) can conclude that the opposing peer is unavailable. The server-side component, GenericStub, terminates after reaching this conclusion. The client-side component, CitrixApplicationHostedControl, terminates the internal heartbeat PING timer. This setting can be different on the client side and server side.

  • CitrixIntegration.ClientOnly.HeartbeatIntervalInMilliseconds – A client-side only setting, this specifies the period during which a timer will continue to trigger PING messages to the GenericStub, which in turn will reply with corresponding PONG messages. This is intended to prevent the client and server components from incorrectly concluding that their communication peer has disappeared. This setting is consumed by the client side only.

Note

This is a client-side setting and is only read by the client. If it is installed on a server, it is simply ignored.