Windows 32-bit ICA Clients - Citrix MetaFrame XP

Citrix has spent considerable effort creating and maintaining the 32-bit Windows ICA clients, which also have several features that others do not.

In the real world, about 80 percent of all users that access MetaFrame XP do so from client devices with a 32-bit Windows operating system running locally. For this reason, Citrix has spent considerable effort creating and maintaining the 32-bit Windows ICA clients, which also have several features that others do not. In order to study the 32-bit Windows ICA clients, we'll look at the following areas:

  • Technical overview of the 32-bit Windows family of ICA clients.
  • Configuration.
  • Differences between the many downloadable 32-bit Windows ICA client packages.

Technical Overview

All 32-bit Windows ICA clients created after the year 2000 are known as "Universal Win32 Clients." This is because the same core client files are used universally on any Win32 platform, including Windows 9x, ME, NT, 2000, XP, XP Embedded, and all web browsers on these platforms, such as Internet Explorer and Netscape Navigator. If you still remember the dedicated ActiveX control and Netscape Navigator plug-in ICA clients from a few years ago, forget them-they no longer exist. They've both been replaced by this new universal Win32 client (which still can be configured to automatically download when a user visits a web page).

Fundamentally, the core of the Citrix ICA Universal Win32 client is made up of a single executable: wfica32.exe. Of course, there are many configuration files and DLLs that support additional functionality, but all core functionality on any Win32 device is accomplished by this one executable. This is the file that is executed by any user on any Win32 device, whether they connect through Program Neighborhood, Internet Explorer, or Netscape Navigator.

In addition to the wfica32.exe executable, there are two other major types of components to the Win32 Universal Citrix ICA client:

  • INI Configuration files.
  • Feature-specific DLLs and executables.

INI Configuration Files

Each client device stores its own configuration information in INI files. Some of these files are user-specific and stored in the user's Windows profile. Others are machine-specific and stored in common folders. Later in this chapter, we'll examine these files in detail and discuss how they are used.

Feature-Specific DLLs and Executables

The other major component of the Win32 Universal ICA client software is the collective DLLs and executables that provide additional functionality over the basic connection to a MetaFrame XP server. Even though wfica32.exe is the core client component, it provides only the basic ICA session support. Almost all of the client features that make ICA attractive (and that we discussed earlier in this chapter) are performed by separate DLLs or executables. Among these features are compression, encryption, client device mapping, Program Neighborhood, and the ICA connection center. We will look at these files in depth later in this chapter when we explore client installation methods.

Differences Between Downloadable Win32 Client Packages

Once you decide to use the Win32 ICA client, a quick check to the Citrix download website (www.citrix.com/download) reveals that there are six different downloadable packages for the Win32 clients. Some of these packages are current, and others have been officially retired (although for some reason they are still available for download). The Citrix website does not make a clear distinction between the different versions. Because all are readily available, it's important to know which are current and which are old, and how each package is used today. The following six different ICA 32-bit Windows client installation packages are available today:

Current Win32 ICA clients

  • Full Program Neighborhood Client - CAB file.
  • Full Program Neighborhood Client - EXE file.
  • Full Program Neighborhood Client - MSI file.
  • Web Client - CAB file.
  • Web Client - EXE file.
  • Program Neighborhood Agent Client - EXE file.
  • Program Neighborhood Agent Client - MSI file.

Let's look at what each of these packages represent.

Current Win32 ICA Clients

The current universal Win32 ICA client is available in three versions-one with Program Neighborhood, one without Program Neighborhood (known as the Web version), and one with the Program Neighborhood Agent.

Full Program Neighborhood Client

The universal Win32 ICA client with Program Neighborhood is the traditional "full client." This package includes the Program Neighborhood executables and is fully installed on a Win32 PC, complete with icons and Start menu integration. This Win32 client contains all of the standard client installation files, including all DLLs and all INI files.

This version comes packaged in three different formats: an executable (ica32.exe), a cab file (wfica.cab), and a Microsoft Installer package (ica32.msi). The contents of these three packages are 100% identical, allowing you to choose which package is best for your particular deployment situation.

Web Client

The universal Win32 web client is identical to the Program Neighborhood Win32 client, except that the web client does not contain any of the Program Neighborhood files (Program Neighborhood being the actual Windows user interface). When installed, this version of the client does not show up on the user's desktop. There are no help files, and no Start menu item. (It also does not support pass through authentication.) This ICA client must be launched through an external source, such as a website (like NFuse) or an ICA file.

There are two reasons that the Program Neighborhood files have been left out of the ICA web client:

  • The client installation is smaller.
  • There are no components that end users will discover and alter.

This Win32 web client comes packaged in two different formats: an executable (ica32t.exe) and a cab file (wficat.cab). Notice that these files are named like the full Program Neighborhood versions, except that the letter "t" has been added to the end of their names. Also like the Program Neighborhood clients, the files contained in these two packages are 100% identical.

Program Neighborhood Agent Client

The Program Neighborhood Agent client also contains the same core files as the other two types of universal Win32 clients. Like the web client, the Program Neighborhood Agent client does not include the full Program Neighborhood software. However, in its place it includes the components needed to use the Program Neighborhood Agent.

There are also two different packages for the Program Neighborhood agent: an executable (ica32a.exe) and a Microsoft Installer package (ica32a. msi). Again, these two packages contain identical contents, so you can choose whichever is easier for you to deploy. Also, notice the naming convention. The Program Neighborhood Agent client packages end with the letter "a."

32-bit Windows Program Neighborhood Client

The Program Neighborhood client is the "standard" 32-bit desktop ICA client. This client includes the full Windows ICA user interface. This main feature that the Program Neighborhood client offers over the other clients is the "Program Neighborhood," a desktop interface that allows users to establish connections with server farms or to create custom connections to individual published applications or servers.

Program Neighborhood Client Configuration

In the appendix you'll find a chart listing all of the MetaFrame XP configuration options and where those options can be configured (farm, server, client, connection, etc.). In the 32-bit Windows desktop world, those options that can be configured at the ICA client are configured from within Program Neighborhood.

In order to understand how configurations are made to the Program Neighborhood ICA client software, it's important to understand how the Windows 32-bit Program Neighborhood software works.

Program Neighborhood supports two different types of ICA connections:

  • Application Sets. From within Program Neighborhood, connections to server farms are referred to as Application Sets. A single user can have many application sets, and so will be able to access many different server farms. Program Neighborhood only shows one icon for each application set. When a user double-clicks that icon, he will be logged into that server farm. The icons that are then displayed are based on the published applications and content that are configured for that user.
  • Custom ICA Connections. Through Program Neighborhood, users can also manually create shortcuts for individual published applications or specific servers. These are known as custom ICA connections. Most likely, your users will not have any custom ICA connections because they will be connecting through an Application Set. As an administrator, however, you'll probably have many custom ICA connections configured in your Program Neighborhood on your personal workstation. At minimum, you'll want to create one custom ICA connection for each MetaFrame XP server, so that you can connect to a specific server for troubleshooting purposes.

When you first open the Program Neighborhood client software (Start | Programs | Citrix ICA Client | Citrix Program Neighborhood), you are taken immediately to the "Custom ICA Connections" page. This page contains a single icon called "Add ICA Connection." Obviously, this is where you can manually create icons and specify connections for custom ICA connections.

If you click the "up" button on the toolbar, you will be taken to the Program Neighborhood home screen. This screen contains two icons, "Find new application set" and "Custom ICA Connections." Double-clicking the "Find new application set" icon launches a wizard that allows you to connect to a server farm. When this wizard has completed, an icon for the new application set will be placed on the Program Neighborhood home screen, along with the existing "Find new application set" and "Custom ICA Connections" icons.

There are several different areas in which to configure properties of components of the Program Neighborhood. The two main areas are the Custom ICA Connection Properties and the Application Set Settings. Configuring the properties of an application set allows you to change the settings for that single application set only, (Program Neighborhood | Right-click Application Set | Application Set Settings) or (Program Neighborhood | Highlight the Application Set | click the Settings button on the toolbar).

Additionally, you can configure the properties of a Custom ICA connection. To configure the default properties for all new custom ICA connections, highlight the "Custom ICA Connections" icon in the Program Neighborhood home screen and click the "Settings" button on the toolbar (or right-click the "Custom ICA Connections" icon and choose "Custom Connections Settings). You can also configure the settings for one single custom ICA connection by applying this procedure to the connection's icon instead of the generic "Custom ICA Connections" icon.

Figure 10.5 (next page) shows which settings can be configured for custom ICA connections or for application set settings. A value of "CD" in the connection settings means you have the option of specifying that an individual setting will inherit the "Custom ICA Connection Default." A value of "SD" in the application set settings column indicates that you have the option of configuring that setting to user the default from the server. In both cases, you can override the default if you need to. For option columns that simply contain an "X," the options must be specified explicitly for that connection or application set.

  • Connection Type
    • Custom ICA Connection Properties: X
    • Application Set Settings: X
  • Connection (Server or Published App)
    • Custom ICA Connection Properties: X
    • Application Set Settings: n/a
  • Protocol
    • Custom ICA Connection Properties: CD
    • Application Set Settings: X
  • Server Group
    • Custom ICA Connection Properties: CD
    • Application Set Settings: X
  • Compression
    • Custom ICA Connection Properties: X
    • Application Set Settings: X
  • Disk Bitmap Cache
    • Custom ICA Connection Properties: X
    • Application Set Settings: X
  • Queue Mouse and Keystrokes
    • Custom ICA Connection Properties: X
    • Application Set Settings: X
  • Desktop Integration
    • Custom ICA Connection Properties:
    • Application Set Settings: X
  • Sound
    • Custom ICA Connection Properties: CD
    • Application Set Settings: SD
  • Encryption
    • Custom ICA Connection Properties: CD
    • Application Set Settings: SD
  • SpeedScreen Options
    • Custom ICA Connection Properties: X
    • Application Set Settings: X
  • Color Depth
    • Custom ICA Connection Properties: CD
    • Application Set Settings: SD
  • Resolution
    • Custom ICA Connection Properties: CD
    • Application Set Settings: SD
  • Credentials or Smart Card Use
    • Custom ICA Connection Properties: X
    • Application Set Settings: X
  • App to Run
    • Custom ICA Connection Properties: X
    • Application Set Settings: n/a

Figure 10.5: Where options can be set with Program Neighborhood

In addition to options that are configured on a per-connection or per-application set basis, there are also some options that are only configured on a client-wide basis. For the most part, these options apply to specific hardware components of the ICA client that will be used for all ICA connections.

With the Program Neighborhood client, you can access these client-wide options via the tools menu (Program Neighborhood | Tools | ICA Settings). Because the tools menu contains all of the options that apply client-wide, you can access the "Tools" menu from any screen of the Program Neighborhood, regardless of whether your current view is a custom connection or an application set.

The following options are configured on a client-wide basis:

  • Client Name. This is the name of the client device that will show up on the server through the Citrix Management Console.
  • Serial Number. This is for legacy licensing situations. You can leave it blank.
  • Keyboard Layout & Type. By default, this will pull the layout from the user profile, and the type from the current keyboard that is installed.
  • Dial-In settings (Connect to Screen and Terminal Window).
  • Enable or disable auto client updates.
  • Whether pass-through authentication is enabled.
  • Bitmap cache disk usage amount and cache directory.
  • Minimum size bitmap that will be cached.
  • Hotkeys shortcut configuration.
  • Log file Settings.

Program Neighborhood INI Configuration Files

Now that you understand how the different options can be configured via the Program Neighborhood interface, we need to look at how these options are saved under the hood.

For some reason, the 32-bit Windows ICA client software configuration information is still saved within INI configuration files, instead of being written to the registry. All of the configuration changes that users or administrators make via the menus and options of the Program Neighborhood are written to configuration files.

In some ways, this is helpful. For example, saving configuration information makes it easy to copy the configuration of one ICA client to another, because all you have to do is copy some INI files. You don't have to worry about the registry at all.

The Program Neighborhood Windows 32 ICA Client software uses the following configuration files:

  • appsrv.ini
  • module.ini
  • pn.ini
  • wfclient.ini
  • uistate.ini
  • wfcname.ini
  • wfcwin32.log
  • webica.ini

Let's take a look at each of these files and what they do.

Appsrv.ini

Location: %UserProfile%\application data\ICAclient\

Purpose: Appsrv.ini contains settings that define preferences related to custom ICA connections. These settings are configured through the Program Neighborhood GUI when you click the "settings" button (Or through File | Custom Connection Settings).

Module.ini

Location: ICA client installation directory. (Default %ProgramFiles%\ Citrix\ICA Client\)

Purpose: This file contains information about which ICA modules are installed, including their versions and options. Essentially, this is just a list of ICA client DLLs. You will generally not have to worry about editing the contents of this file.

Pn.ini

Location: %UserProfile%\application data\ICAclient\

Purpose: This file contains settings that define server farm application sets for the Program Neighborhood. Obviously, this pn.ini file does not exist in the web only or Program Neighborhood Agent Win32 clients, since these clients do not use Program Neighborhood.

The pn.ini file has two sections: a "Program Neighborhood" section and an "Application Set" section. The Program Neighborhood section contains information that applies to the Program Neighborhood in general. Additionally, each application set (or server farm) that you connect to has a corresponding section that contains settings for that server farm.

Let's take a look at a sample pn.ini file:

[Program Neighborhood]
Corporate=4839r93j
  
[Corporate]
ICASOCKSProtocolVersion=0
ICASOCKSProxyPortNumber=0
ICASOCKSTimeout=0
SSLEnable=Off
SSLProxyHost=*:443
SSLNoCACerts=0
SSLCiphers=COM
PNName=CorporateSet
UseDefaultSound=Off
ClientAudio=On
UseDefaultWinColor=Off
DesiredColor=2

The first section is the same for every pn.ini file in the world. That section begins with [Program Neighborhood]. The Program Neighborhood section simply contains a list of all the server farms that the user has previously set up in their Program Neighborhood software. Next to each server farm is an eight-character random identifier. This random identifier is created by the ICA client software when a user first connects to the server farm. It is simply used as a way for the ICA client software to internally keep track of multiple farms. This identifier has nothing to do with the MetaFrame XP servers. In fact, it will be different on every single ICA client.

In this sample pn.ini file, the user has only connected to one server farm. That farm's name is "corporate," and the random identifier is "4839r93j."

The random identifier also corresponds to two files saved in the same directory as the INI files. These two files have the extensions .idx and .vl. For this example, these files would be called 4839r93j.idx and 4839r93j.vl. The .vl file contains a cached list of all the applications that are available for the server farm, and the .idx is an index for the .vl file.

If the user has chosen to save his password locally (Program Neighborhood | Application Set Settings | Login Information tab), the .vl file also contains an encrypted version of that password.

After the [Program Neighborhood] section of pn.ini, there is one section for each server farm. In the previous sample file, the only server farm is "corporate," so the only other section is [Corporate]. As you can see in the example, the [Corporate] section of the pn.ini file contains the connection options for that server farm.

Wfclient.ini

Location: %UserProfile%\application data\ICAclient\

Purpose: This file contains hardware settings for the ICA client software, including the keyboard layout, color depths, resolutions, and COM port mapping names. All of these settings can be configured via the tools menu in the Program Neighborhood GUI (Program Neighborhood | Tools | ICA Settings | General tab).

Uistate.ini

Location: %UserProfile%\application data\ICAclient\

Purpose: The uistate.ini file contains information about the ICA session window. ("Uistate" stands for User Interface State.) This file is modified whenever an ICA session ends. It specifies the size and location of the windows, so that the software can place the session window on the local desktop right where the user left it. A sample uistate.ini file is shown below:

[Desktop]
WindowXPos=40
WindowYPos=28
DeskTopWidth=640
DeskTopHeight=300
ScaledWidth=0
ScaledHeight=0

Wfcname.ini

Location: Root of the system drive.

Purpose: For ICA clients prior to version 6.30, this file specifies the name of the ICA client device. It only contains two lines, as shown below:

[WFClient]
ClientName=brian
You can change the name of the client in the Program Neighborhood (Program Neighborhood | Tools | ICA Settings | General tab | Client Name). When you make this change, the wfcname.ini file is updated, which means that you can change the name simply by bypassing the Program Neighborhood GUI and changing the value in the file directly. Many people configure logon scripts to automatically update the wfcname.ini file when a user logs on, so that the ICA client name will always match the username.

ICA clietns version 6.30 and newer store the name of the ICA client device in the registry instead of the wfcname.ini file. The following registry location is used:

Location: HKLM\Software\Citrix\ICA Client
Key: ClientName
Type: REG_SZ
Data: The name of your client device.

Wfcwin32.log

Location: The name and location of this file are configurable. By default, this file is located in the ICA client installation folder.

Purpose: This file is the log file that is used for logging the various ICA client options (Program Neighborhood | Tools | ICA Settings | Event Logging tab).

Webica.ini

Location: %systemroot%

Purpose: This file is contains security settings for ICA applications that you access through web browsers. It allows you to specify the amount of local access that different ICA applications have to your computer when they are launched from the web browser. A detailed discussion of the use of this file is covered in Chapter 15.

Program Neighborhood Client Deployment Configuration

Once you decide which features and options of the ICA client software to use, you need to figure out how to deploy the software to your users. If you have many users, you'll also want to configure the ICA client software before it is installed on all of their workstations. That way, you won't have as much work to do and the chance that users will not configure things properly themselves is diminished.

Advantages of Preconfiguring ICA Client Software

  • Saves time if you have many users.
  • Decreases the chance that an individual user might not install something properly.

Disadvantages of Preconfiguring ICA Client Software

  • Additional time must be spent configuring the client software before it's deployed.
  • All users will receive the same options.

In order to prepare the ICA client software for your users, there are several steps that you must take:

  1. Extract the installation source files from the ICA client installation package downloaded from the Citrix website.
  2. Preconfigure specific ICA client options and settings.
  3. Configure a silent install routine.
  4. Repackage the installation files.

Let's focus on these steps.

Step 1. Extract the Files from the Single-File Source Package

Usually it's fairly easy to edit the installation source files for an application that you need to install. Most of today's applications come on CD-ROM, and you simply copy the contents of the CD to your hard drive and make whatever changes are needed. From there, you can usually burn a new CD or copy the installation files to a network share where users can access them.

Editing the source files of Citrix's ICA client software is not so easy. None of the 32-bit Windows ICA clients are in a form that allows you to directly access the files. Instead, they come consolidated and compressed into one single file. Depending on the package, that one file is a CAB, MSI, or EXE.

Because of this, you'll need to extract the real source files from the compressed installation package before you can edit the source files and change certain client options.

The exact method that you must use to extract the files depends on whether you have chosen to download the CAB, MSI, or EXE package. Citrix provides the three different packages as a matter of convenience. They all contain the exact same files. For that reason, you should pick whichever file type is easiest for you to work with. In fact, you can even choose to download one type and then repackage it into another.

Extracting Files from the CAB Package

If you're using Windows 2000 or Windows XP, you can open CAB files simply by double-clicking them in Windows Explorer, causing you to "explore" the contents of the CAB. From there, you can drag and drop the entire contents of the CAB file into a temporary directory where you can work with them. If you're using Terminal Server 4.0, you will not be able to open the CAB file by clicking it in Explorer. Instead, you'll have to use a command-line tool called expand.exe, which is located in the \system32\ folder.

Extracting Files from the MSI Package

MSI files are created with the "Windows Installer." The Windows Installer is a program from Microsoft that developers use to create installation routines for their software. Anyone can install an MSI file, but in order to edit the contents of one, you need to have a copy of the Windows Installer. (You can get this with many of the Microsoft Development tools.) For more information about the Windows Installer, check out the Microsoft Developer Network, at msdn.microsoft.com. (From the MSDN homepage, navigate to the MSDN Library link. Follow the table of contents to Setup and System Administration | Setup | Windows Installer.)

If you are familiar with the Windows Installer, you might want to use it to edit the files in the in MSI package. Otherwise, choose the CAB or EXE package.

Extracting Files from the EXE Package

The EXE version of the ICA client installation package is a self-unzipping executable. Running the executable will not unzip the files, it will just install the ICA client. However, you can use the following command line options to extract the files from the EXE package without installing the ICA file:

ica32.exe /a /extract /path c:\yourextractpath

Alternately, you can use a third party tool such as WinZip to extract the files.

Step 2. Preconfigure ICA Client Options and Settings

Once you've extracted the ICA client installation source files from the downloaded package, you can modify certain configuration files. Preconfiguring the client settings and options relieves users from needing to manually configure their client software. In order to preconfigure the Citrix ICA client software, you can configure the options that are saved into the INI files. Then, when users install the ICA client software, they get the INI files configured exactly as you want them.

Even though the Windows 32-bit ICA client software uses several different .INI files to hold configuration data, most of the important information is stored in three main files: appsrv.ini, module.ini, and pn.ini. You can build custom versions of these three files to be included in your ICA client installation package. That way, your users will get certain options configured for them as soon as they install the client software. Most people use this to preconfigure connection options for the server farm.

In order to configure options that will be installed into these three INI configuration files, you need to configure the "source" versions of the files, which are included in the installation package and named appsrv.src, module.src, and pn.src. When the ICA client software is installed, the installation routine uses the appropriate .SRC file as a template to generate the .INI files.

You can open the .SRC files with a standard text editor. When you do this, you'll see that they look exactly like their .INI counterparts. This means that you have two choices when it comes to preconfiguring these files. You can edit them directly, or you can configure a Program Neighborhood client exactly as you like it, copy the three .INI files to a temporary folder, rename them with the .SRC extensions, and copy them into your ICA source file package.

Step 3. Configure the ICA Client for a Silent Install

A "silent install" is an installation routine that does not require any input whatsoever during the installation process. Silent installs are used when you want to automatically deploy the ICA client software to the users without any chance that they could choose the wrong option.

In order to create a silent install, you need to install the Citrix ICA client software on a test workstation. When performing that installation, configure it so that all of your inputs and answers for the dialog boxes are recorded into an "answer file." Then, when you install the software on your users' workstations, the setup program uses the answer file to provide the answers to the dialog boxes, instead of presenting the user with the choices.

With the 32-bit Windows ICA client software, this silent installation option is automatically available because Citrix chose to package their client installation with tools from InstallShield. This ability to create silent installations is one of the great things about InstallShield. Citrix did not have to do any extra work to enable this silent install functionality. It's automatically available anytime InstallShield is used to package application installation routines. In fact, the silent install methods discussed here can be used with any application whose installation routine was created with InstallShield, which is probably 90% of all applications in the world (except for those written by Microsoft, because they use the Windows Installer instead).

To create a silent install for the 32-bit Windows Citrix ICA client, follow these simple steps:

  1. Start with a test workstation that closely resembles your target workstations. If all of your users already have an old version of the ICA client that they will be upgrading, then make sure that your test workstation has that same ICA client installed. If they do not have any clients installed, then make sure that your test workstation does not have any clients installed.
  2. Start the installation routine from the command line by typing setup -r. (This assumes that you have extracted the files as outlined previously.) In this case, the "-r" option tells the installation program (InstallShield) that you want to "record" this installation.
  3. Install the ICA client as usual, choosing whatever options you want for the ICA client software on your target workstations.
  4. When the installation is finished, a text file called setup.iss will be created in the %systemroot% folder. (ISS stands for "InstallShield Script.") This file contains all the answers to the dialog boxes from your installation and allows you to perform future installations using those same answers. Copy the setup.iss file into the same directory as your unpacked ICA client installation files.
  5. In order to use the silent install script that you just created, you must run "setup -s" to kick off the installation. For this to work, the setup.iss file must be in the same directory as setup.exe.

Every option and action that can be set during an application's graphical installation process is saved in the setup.iss file. Let's take a look at a sample setup.iss file now. Comments as to how the different parts of the file are used have been inserted throughout the file.

The setup.iss file begins with the [InstallShield Silent] tag, indicating that this is a recorded file for an InstallShield silent install routine.

[InstallShield Silent]
Version=v5.00.000
File=Response File
The Version= line refers to the InstallShield version, not the ICA Client version. The File item tells InstallShield that this is a response file that contains answers for installation.

[DlgOrder]
Dlg0=SdWelcome-0
Count=7
Dlg1=SdLicense-0
Dlg2=SdAskDestPath-0
Dlg3=SdSelectFolder-0
Dlg4=SdShowDlgEdit1-0
Dlg5=AskOptions-0
Dlg6=MessageBox-0
The DlgOrder section contains an overview of the dialog boxes that will be encountered during the installation. The next part of the file contains a section for each dialog box. Each of these sections contains the button that was pressed (Result=1) and any options that were selected on the screen (as indicated in the lines beginning with "sz").

[SdWelcome-0]
Result=1
[SdLicense-0]
Result=1

As you can see by these two entries, the first two dialog boxes that a user sees when installing the ICA client software are the welcome screen and the licenses agreement. Neither of these screens have any options, and the Result=1 line indicates that the confirmation button was pressed when the recording was made.

[SdAskDestPath-0]
szDir=C:\Program Files\Citrix\ICA Client
Result=1

This dialog box asks the user for the destination path for the installation of the ICA client software. You can edit this section of the setup.iss file directly, if you want to have different silent install package options.

[SdSelectFolder-0]
szFolder=Citrix ICA Client
Result=1

This "SdSelectFolder" section indicates the name of the program group that will be added to the user's start menu that will contain the shortcuts to Program Neighborhood.

[SdShowDlgEdit1-0]
szEdit1=YOURICACLIENTNAME
Result=1

This "SdShowDigEdit" section contains the name of the ICA client device. This name is written to the wfcname.ini file. If you are automating the client install for your users, but you want each of them to have their own unique client name, it's probably easiest to leave this section of the setup.iss file with a generic name, and then to change the name in the wfcname.ini file later.

[AskOptions-0]
Result=1
Sel-0=0
Sel-1=1

This "AskOptions" dialog box is the final confirmation that comes up before the installation begins. This simply provides the user with a confirmation of their choices. Like the other dialog boxes, the Result=1 indicates that the user has pressed "OK."

[Application]
Name=ICA Client
Version=4.0
Company=Citrix
[MessageBox-0]
Result=1

This last section represents the dialog box that appears after the installation has successfully completed.

After you examine this setup.iss file, you can clearly see that this file is created simply by recording the answers, inputs, and buttons pressed as you installed the ICA client software. This is why it's important that your test workstation has the same configuration as your production workstations. If the configuration of your test workstation is different from the configuration of your users' production workstations, then the dialog boxes presented during the installation of the ICA client software could be different.

For example, if the ICA client software is installed onto a fresh workstation that does not have any previous versions of the ICA client installed, the third dialog box of the installation procedure asks the user to specify the path they want to use to install the new software.

In contrast, if the ICA client is installed onto a workstation that already has a previous version of the ICA client installed, then the third dialog box is different. Instead of asking about the install location, it asks the user if he wants to upgrade the current ICA client or install a fresh copy.

Clearly, you cannot use the same setup.iss script for both of these environments, because the script will fail if the installation dialog boxes are not 100% identical to when the script was recorded.

Step 4. Repackage the Installation Files

After the source files are configured for your environment, you need to prepare them to be distributed to your users. If you will be installing the ICA client software from a network share, floppy disk, or burned CD, then you can simply copy the files as they are and instruct your users to run setup.exe -s to kick off the installation. You can even use a utility such as WinZip to create a self-extracting executable.

However, if you will be deploying the ICA client installation files to users via a web browser, then you will not be able create a normal self-extracting EXE. You will need to create a digitally "signed" package. If you don't do this, then the security settings of many users' web browsers will not allow them to run your EXE or install your CAB.

The easiest way for you to package and sign your ICA client installation source file is to use InstallShield's PackageForTheWeb product. This product is available for free from the InstallShield website (www.installshield.com). Basically, PackageForTheWeb allows you to combine a directory full of source files into a single CAB file or self extracting EXE. It also allows you to apply the proper digital signatures to your packages so that they can be downloaded by your users.

If you will only be deploying this package internally, then you can run your own certificate server and generate certificates that you can use to sign your installation packages. However, if you will need to deploy this package externally, you will probably find it easier to purchase a digital certificate from a real certificate authority. VeriSign offers a Commercial Internet Software Distribution License for only $400 per year (www.verisign.com/installshield). For more information about how digital certificates work, see Chapter 15 of this book.

32-bit Windows Web Client

If you have users that will only access MetaFrame XP applications via links from websites, they can use the 32-bit Windows ICA web client. The web client is the full Program Neighborhood client without Program Neighborhood. This version of the client requires that users launch ICA sessions via an external source, since there is no Program Neighborhood. The ICA web client is most often used in situations where users access ICA applications through the web from Citrix NFuse servers. (NFuse is discussed in detail in the next chapter.)

Web Client Configuration

Even though the ICA web client does not have a local Program Neighborhood interface, it is identical to the full Program Neighborhood client in every other way. All of the "web" functionality of the ICA web client is also included as part of the Program Neighborhood and Program Neighborhood Agent clients.

In years past, Citrix has always created a dedicated version of the ICA client for use with the web. This was an ActiveX control or Netscape plug-in. Users who wanted to access ICA applications launched from web browsers could install these dedicated web ICA clients instead of the standard ICA clients. However, with today's new ICA clients this is no longer done, because the functionality needed to integrate with Internet Explorer or Netscape Navigator is included in all ICA client packages.

Because the web integration functionality is built into all new ICA client packages, the current ICA "web client" integrates with the web in the exact same way as the "Program Neighborhood" client or the "Program Neighborhood Agent" client.

How the ICA Client Integrates with Web Browsers

In order to access an ICA application via a web browser, a user surfs to a web page that contains hyperlinks to ICA application sessions (in the form of ICA files). When the user clicks on a hyperlink, the web browser receives the information about the ICA session and passes that information over to the ICA client. The ICA client receives the connection information from the web browser, and establishes a connection with the MetaFrame XP server.

This web browser to ICA client software integration is possible because the ICA client is registered as a COM component. A COM (Component Object Model) component is a piece of executable code that has registered its interfaces with the operating system allowing different applications to interact with each other.

In order for the operating system to be able to keep track of all the different COM components, each has its own serial number, called a "class ID." When application vendors create COM components to be part of their applications, they register the class IDs of their components so that they are guaranteed to be unique from the class IDs of all other COM components in the world.

For example, the class ID of the Citrix ICA client is 238F6F83-B8B4-8771-00A024541EE3. This is the class ID number that Citrix reserved several years ago. Even though it is the same for every ICA client on every computer in the world, this class ID uniquely defines the ICA client and will never be used by any component other than the ICA client.

The ICA web client uses the class ID of the COM component to make its services available to the web browser. This is what allows the ICA client software to automatically launch ICA applications using information received from the web browser. An ActiveX control (wfica.ocx) contains the specific code needed to link the two. When the ICA client is properly set up on a user's machine and configured to launch ICA sessions from web page information, the following registry key will exist:

Key: HKLM\SOFTWARE\Classes\CLSID\{238F6F83-B8B4-8771-00A024541EE3}
Value: InprocServer32
Type: REG_SZ
Data: C:\PROGRA~1\Citrix\ICACLI~1\WFICA.OCX

The data is the path to the ActiveX control, which is the wfica.ocx file located in the ICA client installation directory.

Web Client Installation and Deployment

Even though the ICA web client is made up of the same core files as the full Program Neighborhood client, the installation routines of the two are not the same. Since the ICA web client is primarily designed to be downloaded and installed from websites, Citrix has chosen to streamline its installation routine, so that little user intervention is required.

For example, instead of asking a lot questions and displaying several dialog boxes, the ICA web client installation only has two dialog boxes. The first tells the user that the web client is about to be installed, and the second tells the user that the installation is complete.

The ICA web client installation is invoked with "ctxsetup.exe" instead of "setup.exe." The "ctxsetup.exe" program is written as a silent install that doesn't ask the user many questions. You can configure the installation options by editing an .INI file instead of having to go through the trouble of recording a silent install.

In order to understand how the ICA web client can be used in the real world, let's take a look at the process that is used to configure and deploy it:

  1. Configure the ICA web client options.
  2. Reduce the size of the web client installation package.
  3. Configure the ICA web client installation process.
  4. Repackage the modified installation files.
  5. Use the web to deploy the client.

Step 1. Configuring the ICA Web Client Options

Because the 32-bit Windows ICA web client contains the same core components as the full Program Neighborhood client, you can configure many of the options in the same way. The ICA web client comes from Citrix in two different packages: a CAB file and an EXE file. In order to work with these files, you will need to extract their contents to a temporary folder, just as you did with the full Program Neighborhood client. See the full Program Neighborhood client section (previous section) of this chapter for information about the ICA client packages and how they can be extracted.

After you extract the ICA web client source files, you can modify the parameters that will be contained in the .INI files by editing the appropriate .SRC files, just like when you preconfigured the full Program Neighborhood client. Again, see the previous section of this chapter for details. In general, the .INI and .SRC files are the same for the web client as they are for the full Program Neighborhood client except that the ICA web client does not contain a pn.ini or pn.src file, since it does not have a Program Neighborhood.

Once you get the ICA web client installation source files extracted and configured, you can continue preparing the ICA client for distribution. The next thing that you should do is take a look at the files contained within your installation procedure and figure out if you need all of them or if there are some that can be removed.

Step 2. Reducing the Size of the Web Client Installation Package

Usually, the ICA web client is installed onto users' computers automatically when they visit a website that establishes an ICA connection to a MetaFrame XP server. When this happens, the ICA web client source package is automatically downloaded from the website and executed on the user's computer.

Even though the ICA web client is only about half the size of the full Program Neighborhood ICA client (1.8MB for the web client compared to 3.4MB for the Program Neighborhood client), there are situations in which bandwidth is tight and you might want to further decrease the size of the downloaded ICA client software. This is most often done when users will be downloading the ICA web client over a slower Internet connection.

In order to further reduce the size of the ICA web client installation package, you can decide which features your users will need to use and then delete the source files that support those features that will not be used. This creates a smaller CAB or EXE file for your users.

Advantages of Reducing the Size of the Client Installation

  • Download time is decreased.

Disadvantages of Reducing the Size of the Client Installation

  • Some functionality will be lost.
  • Extra administrative time is required to remove the files and reconfigure the client.

The first step to reducing the size of the ICA web client is to select the files that you want to remove from the source installation package. After you have unpacked the installation files from the CAB or EXE file, refer to Figure 10.6 to determine which files you can remove for features that you will not use. Take note of any files that you delete, because you will need to refer to them in the next step.

File: Function

  • acrdlg.dll: Auto Client Reconnect
  • adpcm.dll: Audio
  • appsrv.ini: INI configuration file
  • APPSRV.SRC: Source file for INI
  • audcvtN.dll: Audio
  • clientn.ico: Icon
  • concentr.cnt: Seamless Windows
  • concentr.dll: Seamless Windows
  • CONCENTR.hlp: Seamless Windows Help
  • ctxsetup.exe: Setup Executable
  • ctxsetup.ini: Setup Options
  • cudhlpt.dll: CUD Helper
  • ICAClObj.class: Netscape Plug-in
  • license.txt: License Agreement
  • migrateN.exe: WinFrame File Migration Tool
  • module.ini: INI configuration file
  • MODULE.SRC: Source file for INI
  • npicaN.dll: Netscape Plug-in
  • pcl4rast.dll: Client Printing
  • pdc128N.dll: SecureICA and Logon Encryption
  • pdcompN.dll: Compression
  • sslasock.dll: SSL Encryption
  • sslsdk_b.dll: SSL Encryption
  • update.ini: Auto Client Update
  • vdcamN.dll: Audio
  • vdcmN.dll: Auto Client Update
  • vdcom30N.dll: COM Port Mapping
  • vdcpm30N.dll: LPT Port Mapping
  • vdfon30n.dll: SpeedScreen
  • vdtw30n.dll: Display Driver
  • vdzlcn.dll: SpeedScreen
  • version.dat: Text File w/ ICA version info
  • wfclient.ini: INI configuration file
  • WFCLIENT.SRC: Source file for INI
  • wfcmoveN.exe: Auto Client Update
  • wfcrun32.exe: Seamless Windows
  • WFCSETUP.INI: Setup INI options
  • wfcwinn.dll: Client DDE
  • Wfica.ocx: ActiveX Control
  • wfica32.exe: Core Client Executable
  • wficat.inf: CAB file list

Figure 10.6: Specific roles of the files in the Win32 ICA client

For example, if you want to disable audio from remote ICA sessions, then you can remove the files needed to support audio. Referring to Figure 10.6 shows that you can remove the adpcm.dll, audcvtN.dll, and vdcamN.dll.

If you choose to remove any source files, it is important to remember that the functionality of the files that you removed will be permanently disabled on the client devices that receive the installations with files removed. If you were to decide that you would like to support audio through ICA sessions after you deployed the ICA client without audio support, then you would have to figure out how to get the missing audio files to your users.

After you delete the files for the features that you do not need, you will need to tell the ICA client software that you removed some files. If you don not, the installation will fail because it thinks that the files are missing and the installation package has been corrupted.

To do this, open the configuration file ctxsetup.ini. This file contains the file information for the ICA client setup. Within ctxsetup.ini, locate the section for each file that you have deleted. The section will have the file name in brackets, like this: [FILENAME]. Delete the file name in brackets and the TargetDir, SourceFileName, and TargetFileName sections for each file that you have removed. For example, if you decide that you will never use audio, then you would remove the following lines from ctxsetup.ini:

[adpcm.dll]
TargetDir=%TARGETDIR%
SourceFilename=adpcm.dll
TargetFilename=adpcm.dll
RequiredCopy=1
  
[audcvtn.dll]
TargetDir=%TARGETDIR%
SourceFilename=audcvtn.dll
TargetFilename=audcvtn.dll
  
[vdcamN.dll]
TargetDir=%TARGETDIR%
SourceFilename=vdcamN.dll
TargetFilename=vdcamN.dll

You will also need to remove the references to the names of the files you are removing from the [AddFiles.Win32] section of the ctxsetup.ini file, which would be the following three lines:

adpcm.dll
audcvtn.dll
vdcamN.dll

Step 3. Configuring the ICA Web Client Installation Process

As mentioned in the introduction of this section, the installation options of the ICA web client are configured with an .INI file instead of recording options for a silent install. These options are saved in a file called ctxsetup.ini, located in the web client CAB or EXE source file. The ctxsetup.ini file contains many different sections. The section that is used to specify the behavior of the installation is the [Setup] section at the beginning of the file. Figure 10.7 shows a sample [Setup] section from this file.

 

[Setup]
Product=Citrix ICA Web Client
InitialPrompt=1
TARGETDIR=%PROGRAMFILES%Citrix\icaweb32
UninstFile=%TARGETDIR%uninst.inf
DisplayLicenseDlg=1
AddUninstallLink=1
PromptForCopyingPlugins=0
 

Figure 10.7: The default [Setup] section from the ctxsetup.ini file.

Let's define what each option entails:

  • InitialPrompt. If you disable this (by changing the "1" to a "0"), the initial dialog box that tells the user that the ICA web client is about to be installed will not be displayed. Most people set this to "0."
  • TARGETDIR. This represents the directory on the client device where the ICA web client files will be installed to.
  • UninstFile. This specifies the path to the .INF file that will contain the uninstall information.
  • DisplayLicneseDlg. If this is enabled (value is set to "1") then the License agreement dialog box is displayed to the user when the installation takes place. A value of "0" causes this box to not appear, and it is assumed that the user accepts the terms of the license agreement. In the real world, most people set this to "0."
  • AddUninstallLink. When this is set to "1," a link to remove the ICA web client is added to the Windows Add / Remove Programs list in the control panel. A value of "0" means that this link will not be added.
  • PromptForCopyingPlugins. When this is enabled (value is set to "1") the user will be prompted when the ICA client plug-in is copied to the Netscape plug-ins directory.

As long as this ctxsetup.ini file is located in the same directory as the other installation files, the settings that you configure will be used for the installation.

Step 4. Repacking the Modified ICA Web Client Installation Files

In order to deploy the ICA web client to your users, you need to repackage your modified group of files into a package that can easily be distributed via the web. This is most easily done by grouping them into a CAB file. For details about how this is done, see the repackaging information in the previous section when packaging was discussed for the full Program Neighborhood client.

Step 5. Deploying CAB Files via Web Sites

The easiest way to deploy the ICA web client to end users is to configure a web page to automatically install the client if the current version is not already installed. If you are using NFuse, the NFuse web pages will automatically be configured to allow users to automatically download the ICA web client. See the next chapter for information on how this works with NFuse.

If you are not using NFuse, the easiest way to allow the ICA client to be automatically downloaded and installed is to add this line to your web page:

<object
classid="clsid:238f6f83-b8b4-11cf-8771-00a024541ee3"
codebase="/clients/wficat.cab#Version=6,30,1050,0" width=0 height=0>
</object>
The classid attribute is the class ID of the ICA client COM object. This value should never change.

The codebase attribute specifies the location and version of the ICA web client CAB source files. In the above example, the ICA client is in the form of the file "wficat.cab" which is located in the "\clients" folder in your web server's root web directory. In other words, this CAB file is accessible via the path http://yourwebserver/clients/wficat.cab.

The "version" value after the CAB file location indicates the version of the ICA web client that is contained in that CAB file. If you do not know the version, you can find it by locating the wfica.ocx file contained in the ICA client installation source files. Right-click on this file, and view the version information contained in the "version" tab. When you specify the version number in the web page, it is important to separate the groups of numbers with commas instead of periods.

When a user accesses a web page with this code added to it, his web browser will check to see if he has the COM object installed with the class ID in the tag specified in the web page. If he does, the browser will then check the version of the COM object to see if the version in the web page is newer than its version. If the user does not have the COM object installed, or if he has an older version installed, then the web browser will automatically download and install the CAB file specified in the web page.

As an administrator, if you ever get a new version of the ICA web client, you will need to copy the new CAB file to your web server. Then you will need to update the web page with the new version number. That will cause your users to automatically download the new version. If you want to create a web page that causes the CAB file to be downloaded and installed every time a user visits the page, then you can change the version number in your HTML code so that it read Version=-1,-1,-1,-1.

Program Neighborhood Agent

The Program Neighborhood Agent version of the 32-bit Windows ICA client is something that was introduced with Feature Release 1 for MetaFrame XP. It's also including with Feature Release 2.

The Program Neighborhood Agent is "officially" covered in the next chapter. For that reason, we won't delve into the workings of the Program Neighborhood Agent here. We will cover how to install the PN Agent client in this chapter and then you can see in the next chapter how it is configured.

Program Neighborhood Agent Client Configuration

Most of the settings for the Program Neighborhood Agent client are configured via an XML file on a web server. That's really the whole point of the PN Agent and its major advantage over the full Program Neighborhood client. As an administrator, if you need to change something, you simply change the settings in the XML file on your web server. Unlike the full Program Neighborhood client, there are no appsrv.ini or pn.ini files that must be individually updated on every single client device.

Program Neighborhood Agent Client Deployment

The PN Agent client comes in two formats, an EXE and an MSI. Even though most options are configured via the XML file on the web server, there are some options that you can configure as part of the PN Agent client installation. These include installation options, such as which directory you want to install to and the path to your web server and the XML configuration file.

As you know by now (from reading about the full Program Neighborhood and web clients), if you want to edit the source files for the PN Agent installation package, you will need to extract them to a temporary directory, make your changes, and then repackage the files.

Modifying Source Files

The PN Agent does not come from Citrix in the form of a CAB file-your only choices are the self-extracting EXE or the Windows Installer MSI file. In this case, it's probably easiest to work with the EXE package. As with the Program Neighborhood client, you can use the following command to extract the source files from the Program Neighborhood Agent installation file:

ica32a.exe /a /extract /path c:\yourextractpath

You can also use a third party utility such as WinZip.

Once you extract the source files from the PN Agent installation package, there are two files that you might want to modify:

  • module.src
  • install.ini

Module.src

The module.src file is the only SRC installation INI file that is available with the PN Agent. This module.src file works in the same way with the PN Agent client as it does with the other 32-bit Windows clients. For the most part, there shouldn't be anything that you need to modify with this file.

Install.ini

The install.ini contains the default settings that apply to the installation of the PN Agent client. The default install.ini file is shown here.

[install]
;ServerURL=
;InstallorUpdate=
;SetMachineNameClientName=
;Location=
;StartMenu=
;InstallSingleSignOn=
;AcceptClientSideEULA=

You can change the values for any of these lines. As with many text configuration files that you may have worked with, the leading semicolon on each line indicates that the line is a comment and the contents should be ignored. Therefore, if you configure any of the lines in this install.ini file, be sure to remove the semicolon from those lines. Let's interpret what each line means:

  • ServerURL. This allows you to specify the URL of the XML configuration file that the Program Neighborhood Agent client will use. If you specify a URL to a server, the PN Agent client will append a path. For example, if you set this value to www.yourserver.com, the Program Neighborhood Agent will append /Citrix/PNAgent/config.xml, making the full path www.yourserver.com/Citrix/PNAgent/config.xml. If you specify the path directly to an XML file, such as www.yourserver.com/yourfiles/yourconfig.xml, then the PN Agent will not append anything.
  • InstallorUpdate. This stands for "Install or Update." (It is not the word "Installer" spelled incorrectly.) It allows you to specify whether to perform a maintenance update or a fresh install of the PN Agent client.
  • SetMachineNameClientName. This allows you to specify the name of the ICA client.
  • Location. This specifies the directory that the PN Agent will be installed into, for example c:\PNAgent.
  • StartMenu. This specifies the location of the folder that the Program Neighborhood icon will be installed to in the start menu. For example, if you set this value to "PNA," then the Program Neighborhood Agent start menu icon will be in the Start | Programs | PNA folder.
  • InstallSingleSignOn. This line allows you to specify whether single sign on support (pass-through authentication) is enabled or disabled. If it is disabled, you can only enable it by reinstalling the PN Agent client software.
  • AcceptClientSideEULA. If you set this to "true" then the introduction screen and the license agreement screens will not be displayed.

For each line that you configure via this install.ini file, the corresponding dialog box will not be presented to the user during the installation. Therefore, if you want to create a totally "silent" install, you need to specify answers for every line, remove all of the leading semicolons, and set the "AcceptClientSideEULA" to "true."

Refer to the next chapter for more information on how the Program Neighborhood Agent client is used in the real world.

 

Dig Deeper on Virtual desktop delivery tools

Enterprise Desktop
Cloud Computing
SearchVMware
Close