Bloomberg Anywhere on Citrix XenApp

Long time I didn’t tried to install a Bloomberg component on Citrix XenApp. I know there is not a lot of information and best practices about that on internet, I think it will be a useful blog for everyone looking for information about that. First things first, I wanted to automate the deployment on several XenApp servers so here are the instructions :

Unattended Installation

Run sotrtxxxx20xx.exe and go in the temp folder to get the “setup.blp” file, you can copy it in the same folder as your Bloomberg installation file is. Here is the content of the setup.blp file :

setup.blp   
# setup.blp version May 2012
#
# This document will detail the process to install the Bloomberg Professional Service both silently and unattended
#
# [SILENT]
# A silent installation on a Windows platform can be performed by executing the full installation file (sotrtDDMMYYYY.exe)
# via a command line and requires local administrative permissions
#
# Execution command: sotrtMMDDYYY.exe /s
#
# [UNATTENDED]
# An unattended installation on a Windows platform can be performed the full installation file (sotrtDDMMYYYY.exe) via a
# command line and a customized configuration install file (setup.blp). This installation also requires local administrative
# permissions.
#
# Execution command:  sotrtMMDDYYYY.exe /s /cfg="full path to customized setup.blp file"
# Replace full path to customized setup.blp file with path and file name ie: /cfg=c:\user config\custom.blp
#
# The following options can be configured in the customized configuration file and are shown with their default and optional values
#
# <Maindir>  Full installation directory, including drive letter ie: = C:\Program Files\BLP.
# Default value: c:\BLP
# Note: This option is not used if an existing installation is found on the workstation.
#
# <Program Group> Name of the start menu group to hold the Bloomberg shortcuts ie: = Bloomberg
# Default value: Bloomberg
#
# <Keyboard> Install the Bloomberg Keyboard driver
# Default value: YES
# Valid values:  YES [Recommended]
#                NO
# Note: In both cases, the Bloomberg Keyboard driver package will be placed in \blp\wintrv\extras\TBK for future use
#
# <Launch> Run the Bloomberg Application (wintrv.exe) at end of installation
# Default value: YES
# Valid values:  YES
#                NO
# Note: This is only applicable for Windows XP platforms and we do not auto launch on Windows Vista and Windows 7 platforms
#
# <Conn_type> Connection profile
# Default value: A
# Valid values:  A [Connect to the Bloomberg using a Private IP network]
#                B [Connect to the Bloomberg using Internet]
#
# <Connect through a Proxy server> Configure the Bloomberg to connect through a SOCKS 5 proxy server
# Default value: 0
# Valid values:  0 [Do not use a SOCKS 5 Proxy]
#                1 [Connect via a SOCKS 5 Proxy]
# Note: If the installation is configured to connect via a SOCKS 5 Proxy, the IP Address of at least the Primary Proxy server should be
# configured at time of installation
#
# <Primary Proxy address> IP Address to be configured as the Primary SOCKS 5 server
# Default value: <blank>
#
# <Primary Proxy Port> Destination port number on Primary SOCKS 5 server
# Default value: 1080
#
# <Secondary Proxy address> IP Address to be configured as the secondary SOCKS 5 server
# Default value: <blank>
#
# <Secondary Proxy Port>  Destination port number on Secondary SOCKS 5 server
# Default value: 1080
#
# <Use Proxy Authentication> Specifies that the SOCKS 5 client authenticates to the proxy server
# Default value: 0
# Valid values:  0 [Disable]
#                1 [Enable]
#
# Additional command line switches for Windows Vista/Windows 7
#
# The SetVistaPermissions tool allows for the setting of proper Bloomberg file and registry permissions on a Windows Vista or
# Windows 7 workstation. This tool can be run during the silent and unattended installation
#
# Command line switch: /perm=<value>
# Valid values: default [Permissions set for all user profiles] ie: sotrtMMDDYYYY.exe /s /perm=default
#               path/file [Permissions set to all usernames in text file (separated by newline)]
#               ie: sotrtMMDDYYYY.exe /s /perm=c:\users.txt
 
[Options]
 
Maindir = d:\blp
Keyboard = YES
Launch = YES
Program Group = Bloomberg
TbbcVersion = 07 May 12  12:00
Switch = YES
 
[Connection Settings]
 
Conn_type = A
Connect through a Proxy server = 0
Primary Proxy address =
Primary Proxy Port = 1080
Secondary Proxy address =
Secondary Proxy Port = 1080
Use Proxy Authentication = 0

As you can see, you can configure a lot of settings to realize a clean unattended installation, for my installation I just change the directory to Maindir = d:\blp and rename the setup.blp file to archynet.blp. Now you can proceed the installation by creating a batch file with a command line :

sotrtxxxx20xx.exe /s /cfg=\\fileserver\softwares$\bloomber\archynet.blp /perm=default

The /perm extension is mandatory when installing Bloomberg Anywhere on XenApp, without that, I haven’t been able to make it work properly.

# Command line switch: /perm=<value>
# Valid values: default [Permissions set for all user profiles] ie: sotrtMMDDYYYY.exe /s /perm=default
#               path/file [Permissions set to all usernames in text file (separated by newline)]
#               ie: sotrtMMDDYYYY.exe /s /perm=c:\users.txt

The installation might take some time because the installer upgrade the Microsoft Framework .Net and then install Bloomberg Anywhere. Once the silent installation is done, we do need to test it.

Tests and issues

When I tested Bloomberg everything looked fine except the media and video part, the screen was blinking, flickering a lot and reseting mouse position to the center of the screen until the process was killed.

I had the same issue with some of the button with the Bloomberg macro in Excel 2003 :

The screen was flickering and blinking until the process bxlaui.exe was killed. These issue were clearly XenApp issue, to make sure I tried only with RDP protocol, and everything was fine without XenApp.

Resolution

Using this good old KB about Seamless Configuration settings http://support.citrix.com/article/CTX101644 I combine several parameters to obtain the value 0x87116

Registry Key: HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/Citrix/wfshell/TWI
Value Name: SeamlessFlags
Value Type: REG_DWORD
Values: 0x87116

87116 is the number obtained by using :

DISABLE CLIENT INFO SYNC EXCEPT WORKAREA : Use this flag to configure the server seamless engine to accept the client work area information (size of the desktop excluding the taskbar) but not other client metrics, such as desktop themes and font information as described above for DISABLE CLIENT INFO SYNC, 0x4000.

DISABLE CLIENT INFO SYNC : Some custom applications that did not display properly when running on Windows XP/2000 with the Windows XP Theme enabled, sometimes experienced the same behavior when running as a seamless application on MetaFrame XP Feature Release 3 on Windows 20003 that does not have the Windows XP Theme enabled. For example, the title bar of the application is larger in height.

Starting with MetaFrame XP Feature Release 3 for Windows 2000/2003, the server seamless engine has extended support for certain window style properties of the workstation where the seamless application is running; for example, the styles generated by Windows XP Themes.

This new seamless global registry flag, when set, instructs the server-side seamless engine not to read certain client workstation window style information.

Set this registry flag to instruct the server seamless engine not to synchronize with the client’s window style that pertains to those representative of the Windows XP Theme:

Custom applications that do not display properly when running on Windows XP/2000 with the Windows XP Theme enabled can be run in a seamless session from a workstation that has the Windows XP Theme enabled and be displayed using the Windows Classic style.

Additionally, when setting this Flag, extended data about the client side Desktop is not used in a Seamless session, including the size of the local Desktop Work Area. As a result, when minimizing some applications run in a Seamless session, they may minimize to the local Desktop above the Taskbar or overlap it. The reason for this is that the size and position of the Local Taskbar is not being sent to the Server session, therefore, these metrics are not being used when the calculations are made on where on the Desktop the application is to be minimized to.

If it is necessary to set this flag to disable client desktop information from being sent to the server, but still send the client work area information, then do not use this Flag, instead use DISABLE CLIENT INFO SYNC EXCEPT WORKAREA,0x80000 as documented below.

DISABLE SHELL HOOK AGENT : Instant messenger type programs commonly use the FlashWindow() API to flash the taskbar button to alert users of incoming messages. After applying the updates listed below in the ‘Required’ section, support for the FlashWindow() API is added and turned on by default.

FORCE MENU WINDOW TO HAVE OWNER : Specifies that Menu Windows will always be re-created on the ICA client with an owner window.

DISABLE LOAD CHECK : By default Load Balancing takes precedence over Session Sharing on a fully loaded server. New connections are routed to other less busy servers, rather than have their sessions shared with existing connections. Setting this flag along with the required updates listed below, will allow session sharing of connections on fully loaded servers. Without this, Registry Value set or setting this value to 0x0 retains the default load balancing behavior.

ENABLE COLOR SYNC : Specifies that the seamless session will inherit the client system color settings. This may cause problems with some applications when the color scheme used on the client is not fully supported by the server. Without this Registry Value set, or setting this value to 0x0 specifies that the seamless session will not inherit the client system color settings.

DISABLE ACTIVE ACCESSIBILITY HOOK : Determines if the seamless engine will load its active accessibility hook in a seamless session. By default the seamless engine uses a technique called event hooking to monitor any changes made to an application’s windows on the server and sends these changes to the ICA Client. Wfshell.exe loads the DLL, sehook20.dll. Without this Registry Value set, or setting this value to 0x0 specifies that active accessibility is enabled.

DISABLE MODALITY CHECK : Specifies that the ICA client will not perform a Modality check. The owner window of a Modal Dialog can be moved, although input focus will remain on the Modal Dialog. This is useful when running an application such as PaintShop Pro Version 6 in a Seamless session. Without this Registry Value set, or setting this value to 0x0 specifies that the ICA client will perform a Modality check on Seamless windows.

I hope it will save you some time, it took a while for me to test everything and combine different value of the seamless flag.

Sources :
XenApp Seamless configuration settings : [link]

Post author