Distributing Netscape Navigator 4.5 and Higher Using Novell's ZENworks
Articles and Tips: article
Engineer, CNE, ASE
Novell Support Forum SysOp
01 Dec 1999
Special thanks to Ken Brown for his comments on the draft of this AppNote.
Here's an update on how to use ZENworks to distribute personalized copies of the Netscape Web browser to your network users.
- Introduction
- Netscape Changes from Version 4.0x to 4.5
- Preparing the Netscape Application Object
- Conclusion
Introduction
Novell's ZENworks has enjoyed great success as an efficient way to distribute and manage applications in a network environment. Using the snAppShot utility that comes with ZENworks, the network administrator can create a template file that contains all of the modifications that must occur at the workstation in order to run a given application (executable files, Windows registry entries, *.INI files, and so on). From this template, an Application object is created in Novell Directory Services (NDS) which is a logical representation of the application. Users, groups, or containers can be associated with the Application object to determine who can access and run the application.
A previous AppNote, entitled "Distributing Netscape Navigator Using Novell's ZENworks" (see the February 1999 issue of Novell AppNotes), provided guidelines for running the snAppShot utility and creating an Application object for versions 4.0x of the Netscape browser. Since that time, Netscape has released newer versions which introduced changes that require new snAppShot procedures. This AppNote is a follow-up to the original, and should be used for newer versions of Netscape.
If you have not read the original AppNote, I suggest you do so before continuing with this one. The original AppNote can be found at:
http://support.novell.com/techcenter/articles/ana19990202.html
As in the original AppNote, it is assumed that the Netscape application is installed under the F:/Program directory and that each user has drive P: mapped to his or her home directory.
I am sometimes asked, "How large an installation do you need to have for ZENworks to be worthwhile?" I have installed ZENworks in networks with as few as ten workstations and still saved time over what it would have taken me to install the software manually on each PC. Thus the time spent building the Application object is usually time well spent.
Netscape Changes from Version 4.0x to 4.5
In Netscape 4.5 and higher, the user profile information has been moved from the Registry, where it used to reside under the HKLM/Software/Netscape key, into the Netscape configuration file (netscape.cfg). This file is created at installation time in the same directory from which Netscape is run. The file is encrypted using an MD5 hash.
To manipulate this file, you need the Netscape Client Configuration Kit, hereafter referred to as the "CCK." This kit allows almost unlimited customisation of Netscape and can be downloaded for free from Netscape's Web site (as explained below).
Since the NAL feature within ZENworks cannot manipulate a hashed file, we must use another approach. The majority of all settings (that is, everything that is global for all Netscape users) are located in the netscape.cfg file. This file is encrypted and placed in the program directory, where it should be fairly safe from tampering.
Individual settings are put into a Javascript file named netscape.jsc, located in the P:/Netscape/Users/default directory. This file is changed by NAL to reflect the individual settings of each user. The syntax and layout of this file is almost identical to that of the prefs.js file described in the original AppNote.
When the user starts Netscape, a fresh copy of netscape.jsc is copied to P:/Netscape/Users/default. At this time, individual settings are substituted for a number of generic placeholders before Netscape is started. Netscape reads the settings in netscape.cfg, where we will specify to use an autoconfig file (namely, P:/Netscape/Users/default/netscape.jsc) in addition to the settings found in netscape.cfg. Hence every user will get individual settings.
Note: When you install and configure Netscape, make sure to make all necessary configuration changes before resuming snAppShot.
Downloading the Netscape CCK
Start by downloading the latest version of the Netscape browser and the Client Customisation Kit from Netscape. The CCK comes in different flavours for each version of Netscape, so for Netscape versions 4.5, 4,6, and 4.7 you need the 4.5 version of the CCK. You will need to install Netscape 4.5 or higher on the PC before you can run the CCK. As the CCK is a Java application, a fast computer and plenty of RAM is needed for acceptable performance. For example, a Pentium 166 with 32MB of RAM is barely adequate.
The CCK can be downloaded from:
http://www.netscape.com/download/cck.html
Install everything according to the instructions.
Setting Up the Netscape Configuration Files
Next, launch the Netscape Configuration Editor and open the netscape.cfg file located under the F:\Program\Netscape451\communicator\Program directory (see Figure 1). Note that the Editor's dialog box defaults to HTML files, so you have to change the filename mask to *.* to be able to see *.cfg and *.jsc files.
Figure 1: Opening the netscape.cfg file in the Netscape Configuration Editor.
You can now proceed by setting all permanent parameters and locking those that you do not want users to change. You do this by checking the box in the Lock column, as shown in Figure 2 for the manual proxy configuration settings.
Figure 2: Locking settings that you do not want users to be able to change.
You can customise almost every aspect of Navigator through this tool. I suggest you take the time to go through all the menus and options to become familiar with them.
Setting the Auto Config URL. The most important task is to set the Auto Config URL. This tells Netscape to apply the settings from netscape.cfg first and then apply additional settings from a configuration file (in this case, the netscape.jsc file provided to each user). This setting is found by clicking on the Config Items tab (see Figure 3).
Figure 3: Setting the AutoConfig URL.
Since Netscape expects the path/filename to be in URL syntax, enter it as follows:
file:///P|/netscape/users/default/netscape.jsc
Note the use of the vertical bar instead of the normal colon, and the use of forward slashes instead of backslashes.
When you are satisfied with your netscape.cfg file, save it back to F:\Program\ Netscape451\Communicator\Program. If you need to change any settings later, simply open the file in the Configuration Editor, make the changes, and save it again.
Editing the netscape.jsc File. The next step is to create a skeleton netscape.jsc file. To do this, you can use the Netscape Configuration Editor to build one. In the Editor, select File | New and edit all settings that you want to change per user. Then select File | Save As. You will see the dialog box shown in Figure 4.
Figure 4: The "saving a configuration" dialog box.
Note that you have two alternatives: to save the file as a local (encrypted) netscape.cfg or a plain text netscape.jsc. Select the latter option and click Save.
Note: I have provided a sample netscape .jsc file in the User Contributed Files area of Novell's Support Forums at http://support.novell.com/forums/ucf.htm. These files will soon be moved to the ZENworks Cool Solutions site at http://www.novell.com/coolsolutions/zenworks/.
Preparing the Netscape Application Object
You are now ready to customise the Application object created for Netscape. The following sections walk you through this process a tab at a time.
Environment Tab
Adding the "-P" parameter as shown in Figure 5 is just to ensure that Netscape starts with our customised profile, in case more than one profile is available.
Figure 5: Setting the "-P" command line parameter on the Environment tab.
For more information on all available startup options, see:
http://developer.netscape.com/library/documentation/deploymt/options.htm
Scripts Tab
The "Run after termination" setting shown in Figure 6 is simply a security precaution. Since the cache is local, we want to make sure it is empty when the user exits Netscape. To accomplish this, you need to create a DELCACHE.BAT file to be run as Netscape terminates.
Figure 6: Setting a batch file to run at termination to clear the cache.
The batch file looks like this:
echo off echo Clearing the local cache... echo Y|del c:\netscape\cache\*.*
If you don't like the ugly DOS window that pops up when the batch file runs, you could write a small Windows application to clear the cache.
Registry Settings Tab
The Registry settings for Netscape 4.5 are located under the following key:
HKCU/Software/Netscape/Netscape Navigator/biff
Several of these values should be changed. In Figure 7, note the macro that is used to change the name of the mail server and also how %CN% is used to set the userName.
Figure 7: Changing the Registry settings.
Another important item is located under HKLM/Software/Netscape/Netscape Navigator/Main(see Figure 8). If you want to provide your users with a predefined set of plugins, locate the plugin directory under the shared program directory. If you want to prevent users from adding their own plugins, users should have only read access to this directory. If you want to allow your users to add plugins, I suggest you set up a personal plugin directory such as P:\Netscape\Plugins and use NAL to change this setting in the Registry (see Figure 8).
Figure 8: Setting the plugins directory.
Since some plugins are dependent on local files, providing a true roaming profile for a user who is allowed to install private plugins can be difficult.
Application Files Tab
The download directory (see Figure 9) is where all the needed local files (DLLs) are copied. You should also ensure that the local cache directory exists, as well as the directories needed under the user's home directory.
Figure 9: Setting the locations for application files.
It is also important to set the location for the skeleton netscape.jsc file (see Figure 10). This file should always be copied down.
Figure 10: Specifying the location of the skeleton netscape.jsc file.
The skeleton netscape.jsc file is in the program directory. It is created with the CCK and looks like this:
// 02 a2 02 be e4 f3 e1 2d 42 f5 0b 10 4c e1 27 aa // fd 28 28 da f4 a6 1a fe a8 fd 15 31 22 7d 65 80 /* Generated by Netscape Configuration Editor*/ //Begin CE prefs with (PrefConfig) { defaultPref("browser.mac.use_internet_config", false); lockPref("li.enabled", false); defaultPref("mail.server_type", 0); lockPref("mail.identity.organization", "ORGANIZATION"); lockPref("mail.identity.reply_to", "USERSREPLYTOADDRESS"); lockPref("mail.identity.username", "USERSFULLNAME"); lockPref("mail.identity.useremail", "USERSEMAILADDRESS"); lockPref("mail.pop_name", "MAILPOPNAME"); lockPref("network.hosts.nntp_server", "news.alcom.aland.fi"); lockPref("network.hosts.pop_server", "10.0.30.2"); lockPref("network.hosts.smtp_server", "mail.alcom.aland.fi"); config("user_agent", "CCK-MCD "); config("mac_animation_file", ""); config("x_animation_file", ""); lockPref("browser.cache.directory", "C:\\Netscape\\Cache"); lockPref("browser.download_directory", "P:\\DOWNLOAD\\"); } with (SecurityConfig) { } //SecurityConfig //End CE prefs
The keywords "user_pref" and "lockPref" work the same way. The user_pref keyword sets an option so that the user can change it, while lockPref sets an option and locks it so that it cannot be changed within Netscape.
Note the uppercase words in strings such as lockPref("mail.identity.reply_to", "USERSREPLYTOADDRESS"). These are simply placeholders. We will specify actual values for these placeholders in a minute.
Another option worth considering is to create a sample bookmark file for your users. You can use an existing bookmark file as a template or create a new one with Netscape. When finished, save it to your SOURCE_DIRECTORY and have ZENworks copy it to P:/netscape/users/default if it does not exist
Text Files Tab
Here we change the placeholder names in the skeleton netscape.jsc file to values taken from NDS. As shown in Figure 11, select the placeholder from the Text Files list. In this example, the placeholder is USERSREPLYTOADDRESS.
Figure 11: Selecting the placeholder from the netscape.jsc file.
Note that all placeholders should be set to "Track distribution per user" and "Distribute Always".
Click the Modify button to replace the placeholder with the actual value desired. In this example, you would replace USERSREPLYTOADDRESS with %CN%.pedago.fi (see Figure 12), which will expand to the user's NDS distinguished name CommonName.pedago.fi.
Figure 12: Specifying the replacement string for the placeholder.
For static values, you can define macros under the Macros tab and then use them in the substitutions. This helps you keep the design of the Application object "clean" as it collects all static variables in one place. It also helps you avoid errors in situations when a variable appears in more than one place, such as in the Registry and in the netscape.jsc"file.
Conclusion
Using ZENworks to distribute Netscape Navigator in the way outlined in this AppNote provides many benefits. The initial rollout can happen faster, and subsequent updates are easily made. Changes in settings such as proxy server address can also be pushed out if needed, without someone having to visit every desktop. Lastly, integrating the application settings with NDS means that the users do not have to enter information such as e-mail addresses manually, thus eliminating a possible source of error.
Since this procedure involves essentially fooling an application into being distributed in a way it was never intended, there is always the risk of an updated version breaking these routines. For every new version, you should be prepared to do new research to determine whether the routines are still valid and whether an upgrade is even necessary. Detailed knowledge of the application in question is also helpful.
* Originally published in Novell AppNotes
Disclaimer
The origin of this information may be internal or external to Novell. While Novell makes all reasonable efforts to verify this information, Novell does not make explicit or implied claims to its validity.