COUNT! v4.0 October 1993 Network Administrators Guide This document is intended for Network Administrators and assumes the audience is familiar with MS Windows v3.0 or above, MS DOS v3.3 or above, and basic network management principals. Table Of Contents What is COUNT!...........................1 Using COUNT!.............................2 Setting Up COUNT! on a Network...........4 Methods of Controlling Access............5 Multiple Instance Management.............5 Scrubbing License Files..................6 LogFiles.................................7 Installing Non-Network Software Versions.8 USER Messages............................9 Registering COUNT!......................10 Transferring a License to COUNT!........10 Count! is written and copyrighted by: Ed Derzawiec 6 Sweet Fern Rd Cape Elizabeth, ME 04107 Feel free to send any suggestions for future program enhancements to this address. COUNT! v4.0 Network Administrators Guide Page 1 What is COUNT! COUNT! is a MS Windows utility that enables you to abide to "simultaneous use" licenses in a network environment. This type of license allows you to provide applications to a user community without buying a license for each potential user. The result is typically an 80% to 90% reduction in the cost of the application. Simultaneous use licenses: Unlike mainframe programs which base the fee on the number of potential users of a product, personal computer software licenses are often based on the number of people using a program at any point in time. If the network provides a dozen applications to 50 users, it is probable that five to ten licenses for each application will be sufficient to meet the needs of the 50 users without purchasing 50 licenses of each. Most major suppliers of personal computer software base their license on simultaneous use. However, many of these (Microsoft for example) provide no means for maintaining the license. Should you wind up in court, you are required to provide evidence that adequate precautions were taken to ensure that the simultaneous use license was not violated. What does COUNT! Do: COUNT! launches programs in an MS windows environment and keeps track of the number of users. It will enable you to enforce simultaneous use licenses. It also provides features to make many programs which function poorly in a network environment behave better. Finally COUNT! provides the network administrator detailed analysis on the use of licenses so that an appropriate number can be economically purchased to support user needs. COUNT! enables a user to access an application as easily as if it were installed on his local hard disk. To do this, it will if necessary: Establish a network connection Modify the current DOS directory Check for license availability Execute the program Free the network license Disconnect the network connection What COUNT! Won't Do: If a Windows application's primary (loading) executable file terminates before the application does, COUNT! has no way of knowing when the program ends. COUNT! cannot meter the licensing of such programs. It is also arguable that any such application would be impossible to meter licenses for. I am not aware of any major commercial application software that exhibits this behavior. COUNT! v4.0 Network Administrators Guide Page 2 Using COUNT! An end user needs no special knowledge to use COUNT! He simply launches applications normally through Windows. A license dialog box appears informing him the license is being shared. If no more licenses are available, the dialog box will inform him of that and provide a list of current users. In setting up applications to run under count, A network administrator needs to: 1) Set up an environment on user PCs to launch applications through COUNT! rather than directly. 2) Create a COUNT!.ini file which controls how Count! launches applications You also need to be familiar with the methods Windows uses to launch applications. The most common method is for the user to "double click" on an application icon in a Program Manager group. The second is to use the file manager to launch an application with a selected data file. A third is to launch the application using the Program Manager's "Run command". Using the COUNT! Command Line: To support any of the above, you need to use a valid COUNT! command line. The launched application is a parameter for COUNT!. For instance, to launch Microsoft's Excel, the program line could be "COUNT! MS_Excel". To launch Aldus' Persuasion, the program line could be "COUNT! Persuasion". COUNT! would then do everything necessary to make appropriate network connections, start the application, and enforce software licenses. Supporting Applications Launched via a Program Manager Application Icon: You will need to modify the vendor supplied installation procedure to modify the icon's "properties" to use COUNT! to launch the program. The application icon program line properties can be changed using the following procedure: In Program Manager, select the program icon by clicking on it once with the mouse. Select File-Properties, from the Program Manager's menu. A "Program Item Properties" dialog box should appear. Change the command line in the dialog box to launch the program through COUNT! i.e. "COUNT!.exe MS_Excel". You should also change the icon to the application's normal icon, which is typically in the main .EXE file of the application. This is also done from the "Program Item Properties" dialog box. Press the "Change Icon" button and type in the file name containing the Icon (i.e. E:\EXCEL\EXCEL.EXE) The Program .EXE file may not be available to Windows if the network drive is not currently connected. In this case you can substitute an icon from PROGMAN.EXE or MORICONS.DLL. You could COUNT! v4.0 Network Administrators Guide Page 3 also use a 3rd party utility to extract an icon from an application .EXE file, and make the icon file available to Windows. Supporting Applications Launched via File Manager: You need to modify the "[extensions]" section of WIN.ini to associate COUNT! with the extension of data files your program runs. Again, you must supply a command line such as "XLT=COUNT!.exe MS_Excel ^.xlt". Modifying user .INI files can be automated by using the Fix_INI! program which accompanies COUNT! Supporting Applications Launched via Program Manager's Run Command: The user would have to enter a correct COUNT! command Line in Program Manager's "RUN" dialog box. How COUNT!.INI Controls the Launching of Applications: The COUNT!.INI file controls what COUNT! does in launching an application. COUNT!.INI is created and maintained by the Network Administrator using any ASCII editor, such as notepad. It consists of a number of applications "Sections" containing keywords describing how to launch the application. Each section begins with the ApplicationName in square brackets. You can use any ApplicationName you like so long as it is less than 32 Characters. Keywords can be any of the following: ConnectDrive=Drive:,Network_Path,Password (Only Windows 3.1 and above support this command. You can use "Connect" to support Windows 3.0) The Password is optional. However, the comma separator must be included. You can use "*" as the Password and the User will be prompted to provide one. If The Drive and Network service are already in use, this command is ignored. Network Drives which are connected with this command are Disconnected when the user exits the application unless DisConnectDrive=No. DisConnectDrive=Yes or No. Connect=Network connection command (you would issue at a DOS prompt.) The Connect and Disconnect KeyWords are provided to support Windows 3.0, or for Networks incompatible with Windows 3.1 network management features. Disconnect=Network disconnection command StartDirectory=Starting directory. This will override any directory specified in the property's of a Program Manager Icon. Execute=Program invocation command. CountFile=R/W file which holds the current users/license counts. LogFile=R/W file which tracks license use for the application. MaxUsers=Number of users that can use the program simultaneously. MaxTime=Number of minutes of program use before Count! reminds the user to free the application license. UpdateLicense=Number of minutes between updates of the CountFile. The default is 5. A 0 inhibits updates. SkipLicenseMsg=Yes or No. If, Yes, COUNT bypasses its initial dialog informing the user of the licensing activity and immediately launches the application. The default is No. All KeyWords other than Execute are optional. COUNT! v4.0 Network Administrators Guide Page 4 If a CountFile is used, A DOS environment variable must exist prior to entering Windows which provides a user name. This is accomplished by the DOS SET command as follows: "SET Name=UserName" By default, the Environment variable COUNT! uses to identify the user name is "NAME=". You can specify a different environment variable to be used by adding a [Defaults] Section to COUNT!.ini, and adding the keyword "NameEnvVar=AnyName". "AnyName" is the environment variable COUNT! will use to identify the user. The UserName must be unique to each network node. It is typically assigned in a the Autoexec.Bat or Network Startup File. Below is an example COUNT!.INI file. [Defaults] NameEnvVar=Name [MS Excel] Connect=USE E:\\MyServer\ExcelProgram /R Execute=E:\EXCEL\Excel.EXE Disconnect=USE E: /D [MS Project] ConnectDrive=L:,\\MyServer\MSProject,, Execute=L:\WinProj\Project.EXE StartDirectory=c:\Project CountFile=Q:\Licenses\Licenses.Dat MaxUsers=10 MaxTime=120 Setting Up COUNT! on a Network COUNT!.EXE, COUNT!.INI, SCRUB.EXE, and CountMgr.DLL need to be placed in a common network directory accessible to all users. Users should be granted READ ONLY access to these files. If a CountFile is used to monitor or meter access (via MaxUsers), a common user READ/WRITE area needs to be made available for this file. Similarly, If LogFiles are used to Track and analyze license use, these also need to be placed in a user READ/WRITE area. COUNT! will create these files as required. Also, as mentioned previously, A DOS environment variable must exist (NAME=UserName) if a CountFile is used. It is suggested that this be created in each nodes Autoexec.Bat or Network Connection.Bat file. COUNT! v4.0 Network Administrators Guide Page 5 Methods of Controlling Access There are two ways to use COUNT! to enforce simultaneous use licenses. One method is to put each application you want to control access to in a unique network file service, and place a limit on the number of connections to this service. COUNT! could then connect to the service before starting the program, and disconnect when done. The server would perform the license counting/metering. The above method is the most secure method of controlling access. However, there may be situations in which you cannot or prefer not to create unique network services for each application. You can then use COUNT!'s MaxUsers keyword to control access. You can also use both methods simultaneously if you want to provide users with friendlier error Messages when denied access to applications. When a program is launched, COUNT! first checks the CountFile (if specified) to see if the number of current users is less that the MaxUsers defined in COUNT!.INI for that application. If so, COUNT! adds an Entry to the CountFile similar to the one below: [MS Project] John Doe=09:33:27 02/12/92 The timestamp is updated every 5 minutes unless overridden with the UpdateLicense Keyword. The Entry is removed when the user exits the application. If no Licenses are available when using a CountFile, the user will get a list of currently active license holders. Multiple Instance Management Windows enables a user to run multiple copies of an application simultaneously as long as the application itself permits this. COUNT! fully supports this feature and will only reserve a single network license for each user workstation no matter how many instances of the program he is running. CountMgr.DLL manages this activity as necessary. Network connections made via the Connect or ConnectDrive KeyWords will be maintained as long as at least one instance of the application is active. COUNT! v4.0 Network Administrators Guide Page 6 Scrubbing License Files If you use a CountFile, periodic maintenance is required to remove inactive licenses. Licenses become inactive when applications are terminated abnormally, such as rebooting the PC while the application is in use. When this occurs, the license file entry for that user is not freed until that same user runs and exits the application again. The CountFile could be maintained with any ASCII editor by deleting lines identifying inactive licenses. However, there is an easier way. A supplemental program, SCRUB.EXE, is supplied which automatically removes inactive licenses. In addition, Count! will start SCRUB whenever a User is denied access to an application for lack of an available license. SCRUB works by examining the CountFile, waiting a specified time and then reexamining it. If the license entries are not updated in that time, they are assumed to be inactive and removed. By default SCRUB waits for the UpdateLicense interval+1 minute. The extra minute allows for programs which might take total control of the PC for some period of time. For instance, If Excel takes several minutes to recalculate a spreadsheet, it may not allow COUNT! to update the CountFile during that period. (Windows 3.x is Not Pre- emptive.) If you feel 1 minute is not sufficient, you can override this by specifying an larger interval in COUNT!.ini Add a section called [SCRUB] in the file, followed by lines containing AppName=Interval. An interval less than UpdateLicense + 1 minute will be ignored. A interval of 0 will disable Scrubbing for the specified application. When SCRUB is running, an Icon identifying the time remaining will be displayed on the Windows Desktop. As mentioned, COUNT! will automatically run SCRUB when a user is denied access to an application due to lack of an available license. In addition, a Network Administrator may want to periodically run SCRUB, perhaps placing it in his/her Windows startup group. If SCRUB is run without any parameters, it will scrub the CountFile of all applications listed in the [SCRUB] section of COUNT!.ini For example, if the following section appears in COUNT!.ini, running SCRUB.EXE will automatically scrub the licenses for MS_Excel and MS_Project. [SCRUB] MS_Excel=1 MS_Project=1 If you need to, you can scrub an individual application by including it as a parameter on SCRUB's command line. (i.e. "SCRUB MS_Excel") COUNT! v4.0 Network Administrators Guide Page 7 LogFiles LogFiles provide valuable information to the network administrator on how licenses are being used for each application, and by whom. It is highly recommended that you use LogFiles for each application to: Keep track of the average time an application is used. The typical number of licenses in use at any time. The number of times a license has been denied. The use by Individual. Because of the size of these files, it is recommended that a separate file be used to log each application. If you follow this recommendation, each LogFile will consist of an application total use section, followed by individual user sections. While you can use LogFiles without CountFiles, the log information will be somewhat limited if you do so. In the example below, Excel has been used a total of 1062 minutes in 54 sessions. 4 of those sessions terminated abnormally or remain in use. (Did not complete). 2 of the 3 licenses are commonly in use. The average user was connected 21 minutes, and since the log was started, 09/30/93, one user was denied access. In the subsequent sections the activity of each user is identified. In this example, Ed_Derzawiec has used Excel twice, and been denied access once. [MS_Excel] LogStarted=22:37:44-09/30/1993 MaxUsers=3 DeniedAccess=1 3_users=1 2_users=5 1_users=6 nConnects=54 nCompletes=50 ConnectTime=1062 AvgConnectTime=21 [MS_Excel.Ed_Derzawiec] nConnects=2 nCompletes=2 ConnectTime=6 AvgConnectTime=3 DeniedAccess=1 ... COUNT! v4.0 Network Administrators Guide Page 8 Installing Non-Network Software Versions Most software available today installs very easily in most network environments. However, every so often you will run into an application that does not offer a networkable version, or will not install properly on your network. In such situations, you can often install the software for network use using the following procedure. From a client PC, provide Write access to the Network drive you would like the application installed upon, giving it the same DOS drive letter the user will eventually see it as. You may also need to provide Write access to the Windows directory on the server if Windows is being shared over the network. Install the software to a network drive following the vendor's instructions with the following exceptions. 1) Copy the client's WIN.ini and System.Ini files as Win.OLD and System.OLD. Also copy the Autoexec.Bat and Config.Sys files. 2) Make copies of the client's Windows and System Directories and the server's Window system directory if appropriate (ie DIR c:\Windows >Win.Dir). 3) Install the Software. 4) Compare the .INI files and directories to the original saved versions. (ie FC Win.OLD Win.ini). Note any changes. Typically, these changes are entries added to the [Extensions] section of WIN.ini, applications sections added to WIN.ini, and perhaps a few DLLs added or updated in the Windows System Directory. Many applications change the Path variable in the Autoexec.Bat file. In most cases, this change is not required. 5) Make these same changes on each client PC that will run the application by copying or editing files. Fix_ini!.Com and Patch!.Com are very useful utilities in automating this process. 6) If the REG.DAT file in the windows directory on the client PC was modified, some special attention is required. REG.DAT's primary purpose is to support OLE and Drag/Drop capabilities. To provide this, the application must be registered in REG.DAT of each client. You cannot simply copy the revised REG.DAT file to each client. First check the Application directory for an Application.REG file. If it exists, simply RUN it from Program Manager on each client PC. If the application does not have a .REG file, you will need to examine how the installation procedure modified the REG.DAT file (using RegEdit.EXE) and manually make the changes on other clients. COUNT! v4.0 Network Administrators Guide Page 9 USER Messages There are a few messages COUNT! passes to the user that a Network Administrator needs to be aware of. These are covered below: "All Licenses for this application are currently in use!" A user will get this message when all licenses set by the MaxUsers parameter are in use. They will also get a list box identifying users so they can try to free up a license on their own. "Please Exit AppName IMMEDIATELY! License VIOLATION!" Through an Application error or user tampering, the license reserved for this user in the CountFile has been erased. A user should Never get this message. It should be looked into by the Network Administrator. "You have exceeded the recommended time limit for this application and are reminded to free this license when you are finished so that others may use the program." A user will get this message if he uses the program beyond the MaxTime variable. The remaining messages should not normally be seen by a user, but may arise in setting up applications to run under COUNT! "Could Not Connect (to Drive)" A network Error caused by an incorrect DOS drive or Network file service specification in COUNT!.ini, or unidentifiable network connection problem. "Drive In Use on Different Service" A failure to connect to the requested network service in COUNT!.ini because the requested Drive is already being used for a different network service. You should not set up two network applications to share a DOS drive letter for different file services. "Could Not Execute" Execution of the application failed. Most often this is caused by an error in COUNT!.ini or perhaps a DOS PATH Error. "Could Not Find COUNT!.ini" COUNT!.ini is not in the same subdirectory as COUNT!.EXE. "Count Not Load CountMgr.DLL" CountMgr.DLL is not in the same subdirectory as COUNT!.EXE. "No Application Specified" No ApplicationName was specified on the COUNT! Command Line. "No Program to Execute in COUNT!.ini" No "Execute=" was included. "Name Environment Variable Not Defined!" You MUST have a Name Environment variable defined if you are using a CountFile. COUNT! v4.0 Network Administrators Guide Page 10 Registering COUNT! COUNT! is copyrighted software and all rights are reserved by the author. You are free to evaluate the product for 30 days to determine its suitability to your needs. Use beyond 30 days requires registration. Anyone with the conscience to use COUNT! will want to register it. A license to COUNT! enables you copy and use the software on a single server for up to 100 Users. The cost of the license is $59. If you would like to register, please fill out the form on the next page. In return, you will be sent a diskette with a registered version of the software. Transferring a License to COUNT! Upon registering, you will receive a license number. To license the software, you will need Read/Write access to the directory where COUNT!.EXE is located. From Windows Program Manager, use "File Run" and place in the command Line "Drive:\Path\COUNT!.EXE /L". You will prompted you for your company and server name. You are limited to a total of 50 characters, so you may have to abbreviate. If the name appears truncated in the Main dialog box, you can reinstall the license. COUNT! v4.0 User Registration Form NAME: ____________________________________ Company: ____________________________________ Street: ____________________________________ Town, State, Zip: ____________________________________ Please register me for (____) copies of COUNT!. Enclosed is $59.00 for each copy (plus 6% Sales tax for Maine residents). Preferred Media: 5.25"(360K) ____ 3.5" (720K) ____ Please make checks payable to: Edward Derzawiec 6 Sweet Fern Road Cape Elizabeth, ME 04107 Signature: ____________________________________ In signing this form I agree: 1. Not to make copies of the registered software received for purposes outside of my use on a single network server. 2. Not to modify the software without written consent of the author. I welcome your comments on the merits or limitations of COUNT!, or enhancements you would like to see added. _______________________________________________________________ _______________________________________________________________ To improve the testing of COUNT!, please answer the following: Server Type: Operating System: DOS ___, OS2 ___, VMS ___, UNIX ___ NT ____, Other _________________ Network OS: Novel ___, Vines ___, Pathworks ___, Other ________ Nodes: PC/XT (8086/8088) ____, AT (286) ____, (386/486/SX CPU) ____ Display: Mono, ____, CGA, ____ EGA, ____ VGA, ____ Color ____ Windows Version ____ Applications COUNT! is Used For: ______________________________________________________________ ================================================================= Do not write below this line: Serial number licensed to above user: ____________