The Java ICA Client and Drive Mapping

As an application service provider (ASP), we offer a small vertical application to users over the Internet. We use a Windows 2000 Server Terminal Services farm with Citrix MetaFrame 1.8. Because my users work with different types of workstations and connection speeds, some people have suggested that the Citrix Java ICA client might be a good solution. We tried it, but we had some trouble installing the client, and we don't quite understand the setup information in the administrator's guideā€”in particular, the drive mapping information. Can you help?

The Java ICA client is a good option because it provides features you don't get from the Active-X client. It downloads faster than the 32-bit Citrix client, and it works on most machines that have a Java Virtual Machine (JVM) 1.1 or higher. When installing and using the Java ICA client, you can choose between Application mode and Applet mode. Both use the same installation files and methods, but where you install each and how you use them differs. You can perform an Application mode install anywhere, starting from a command prompt at the local workstation. Application mode also includes a Java-based version of Program Neighborhood. However, you'll want to use the Applet mode install for your situation.

To install the Java ICA client in Applet mode, you install the files to a subdirectory of the Web server's root directory. You can install to the root of the Web itself, but that gets sloppy. You can download the setup.class file from the Citrix download site ( http://www.citrix.com/download ), get it from the installation CD-ROM, or copy it from the \WINNT\system32\clients\ICA\ICAJAVA directory on the server. I'm inherently lazy, so I copy the file to the SystemRoot (WINNT) directory where the Java application resides. Next, click Start, Run, and type m:\winnt\jview setup (as with DOS-based .exe commands, you don't have to include the .class extension). A wizard will appear and help you add the new directory under the Web site's root and install the files.

Your next step is to create a Web page so that the magic can happen. Again, because I'm lazy, I prefer to use the Citrix Published Application Manager. Use it to publish the application, then right-click to create an HTML and ICA file that points to the application that uses the Java client.

Next, edit the HTML and ICA files. You need to change the HTML file's codebase parameter to the correct install directory. Replace the default, a period, with the correct path (e.g.,

</script><applet codebase=/java code='com.citrix.pn.class'
archive='JICAEngJ.jar' width=800 height=600><script language="Javascript"><!

). Make sure that you edit the server's address if it's located behind a firewall.

The end of the HTML file holds the key to mapping drives. At its Web site, Citrix refers readers to pages 42 and 43 of the administrator's guide for an explanation of how to map drives from the Program Neighborhood UI or from the command line. Understandably, many of you wonder how you might use the Program Neighborhood UI from within Applet mode and wonder which command line Citrix is referring to. Both are good questions. As it happens, the information on those pages is more appropriate for Application mode. In fact, you have to place the drive commands on the user's workstation under Windows\Java\Citrix\Appsrv.ini, which is where the Java Program Neighborhood UI would locate it, or you can place the information in an ICA file. The latter is the best solution for your needs. Comment out the "Initial program" and "WorkDirectory commands," and add a command to call the ICA file. For example,

<!param name="InitialProgram" value="#desk">
<!param name="WorkDirectory"  value="dir">
<param name=icafile value=desk.ica>

In the ICA file or the appsrv.ini file, add the following four commands to point to the client drives:

  • DriveReadAccessC:0|1|2 (0 to permit Read access, 1 to deny Read access, or 2 to permit access and prompt the user the first time access is required; you must use 2 for Applet mode)
  • DriveWriteAccessC:0|1|2 (0 to permit Write access, 1 to deny Write access, or 2 to permit access and prompt the user the first time access is required; again, you must use 2 for Applet mode)
  • DrivePathC - DrivePathZ
  • DriveEnabledC:on|off
  • For example,

\[WFClient\]
Version=2
HttpBrowserAddress=200.20.4.37
TcpBrowserAddress=200.20.4.37
NetBiosBrowserAddress=WTSRV1
DriveReadAccessD=2
DriveWriteAccessD=2
DrivePathD=d:
DriveEnabledD=yes

This code maps the client's D drive to the server's D drive, if it's available. Otherwise, it maps it to the V drive or lower, depending on what's available.