`Platt
`
`US005421009A
`5,421,009
`[11] Patent Number:
`[45] Date of Patent: May 30, 1995
`
`
`
`
`
`. file containingalist oor to provide a remote com-
`
`[57]
`ABSTRACT
`[54] METHOD OF REMOTELY INSTALLING
`A method for remote installation of software over a
`SORRECTLY FROM A CENTRAL
`computer networkallows a user to interactively select
`each remote computer system fotsoftware installation,
`Inventor:
`Stephen M.Platt, Ft. Collins, Colo.
`[75]
`putersystems. Before attempting to install the software,
`[73] Assignee: Hewlett-Packard Company, Palo
`the method ensures that the remote system can be
`Alto, Calif.
`reached through the network, that the remote system
`[21] Appl. No.: 171,498
`has the capability of running processes remotely, that
`the remote system has all the commands necessary to
`[22] Filed:
`Dec, 22, 1993
`
`[51] Tint, CVS ooeccescssestssccsescsesssensccccessecenneee GO6F 13/00_Perform theinstallation, that the remote system has the
`[52] WS. CD. ceeccccccssssssnsssseseseseeeeseeees 395/600; 395/200;
`correct hardware and software to support theinstalla-
`395/650; 364/DIG.1
`tion, and that sufficient disk space exists on the remote
`[58] Field of Search ...............0- 395/600, 650, 200|computer system for the installation. The method then
`combinesall files that are being remotely installed into
`[56]
`References Cited
`a single data stream, sends this single data stream over
`U.S. PATENT DOCUMENTS
`the network to the remote computer system, and sepa-
`5,155,847 10/1992 Kirouac et ale sacssssessssoen 395/600 eme datastream into theoriginal files on the remote
`Primary Examiner—Thomas G. Black
`Assistant Examiner—Peter Y. Wang
`
`
`
`16 Claims, 7 Drawing Sheets
`
`.
`
`CENTER)
`
`802
`
`804
`
`LOCATE REMOTE
`SYSTEM THROUGH
`NETWORK
`
`
`
`
`
`
`
`COMBINE FILES
`INTO A DATA
`
`STREAM
`
`
`
`SEND DATA
`STREAM TO
`
`REMOTE SYSTEM
`
`
`
` 8247 EXTRACT FILES
`
`’
`FROM DATA
`STREAM
`
`?
`
`
`
`
`Y
`
`812
`
`HARDWARE
`OK?
`
`PRINT ERROR
`MESSAGE
`
`UPDATE FILES
`
`STORE FILES
`ON REMOTE
`SYSTEM
`
`___
`
`RETURN
`
`Google Exhibit 1044
`Google v. VirtaMove
`
`Google Exhibit 1044
`Google v. VirtaMove
`
`
`
`U.S. Patent
`
`May30, 1995
`
`Sheet 1 of 7
`
`5,421,009
`
`IG.
`
`f F
`
`
`
`U.S. Patent
`
`May 30, 1995
`
`Sheet 2 of 7
`
`5,421,009
`
`
`
`
`
` .COOOOOOOREMHEEAEEREREETDEEHEROROEPEEEOEEEEREDEROODFEESSSEDEOHESTHESESEESOHOLOEEEOSOTHSHFEHEOHHESECESEESESESHOHOSHSEDHSEHSERHEHEHASBOOHEHESSEEEE
`
`
`
`
`
`
`
`90T|
`
`JOVAYZLNI1zZ0ZINSW3S13
`
`YYOMLINvONISSSOOUd
`
`912
`
`ONILVYAadOXINN INS9VHSNd
`
`WS1SAS
`
`Co
`
`902||rTT
`
`AYOWSW
`
`
`
`
`
`ETSSOTHdVuoauvogAs»
`
`AV1dSIG
`
`zcOt
`
`
`
`
`U.S. Patent
`
`May30, 1995
`
`Sheet 3 of 7
`
`5,421,009
`
`TIVLSNI
`
`
`
`gT¢SJAILOVYSLNIote
`
`HOLVE
`
`THVISNI
`
`
`
`porAtP3|gooTMISNT]go
`
`LIX3TIVLSNI
`
`INTMd
`
`OUINI
`
`ZcOL[NEVA
`
`9T¢
`
`rTeZTEgT¢
`yt?CTS
`
`N3ayoS901
`
`Yuva19N3d0O
`
`
`
`Naauos|][oor
`
`
`
`¥va10.||[N3d0
`
`£Oly
`
`
`
`
`
`U.S. Patent
`
`—s
`
`May30, 1995
`
`Sheet 4 of 7
`
`5,421,009
`
`
`
`CLOSE LOG
`FILE
`
` Y
`
`
`
`U.S. Patent
`
`May 30, 1995
`
`Sheet 5 of 7
`
`5,421,009
`
`302
`
`INSTALLATION
`FILES
`
`504
`
`DISPLAY BATCH/
`INTERACTIVE
`MENU
`
`READ MENU
`
`
`310
`
`309
`
` FIND
`
` 506
`MESSAGE
`CHOICE
`
`
`
`INTERACTIVE
`
`NSTALL
`FIG. 6
`
`
`
`DISPLAY ERROR
`
`
`
`
`
`
`BATCH INSTALL
`FIG. 7
`
`
`|
`
`
`
`U.S. Patent
`
`May 30, 1995
`
`Sheet 6 of 7
`
`3,421,009
`
`OPEN LOG
`FILE |
`
`602
`
`
`
`604
`
`
`READ REMOTE
`SYSTEM NAME
`THROUGH
`KEYBOARD
`
`
`
` INSTALL TO
`
`FIG. 6
`
`DISPLAY SYSTEM
`NAMED SYSTEM
`NAMES FROM
`FILE
`|FIG.8
`
`INSTALL TO
`NAMED SYSTEM
`|FIG.8
`
`FIG. 7
`
`702
`
`704
`
`OPEN LOG
`FILE
`
`READ BATCH
`
`
`
`
`
`FILE sa
`
`DisreayTERROR
`
`LIST
`CORRECT?
`
`GET FIRST/
`NEXT NAME
`
`
`
`
`
`
`
`
`
`
`U.S. Patent
`
`May30, 1995
`
`Sheet 7 of 7
`
`5,421,009
`
`ENTER
`
`LOCATE REMOTE
`SYSTEM THROUGH
`
`NETWORK
`
`
`820
`
`COMBINE FILES
`INTO A DATA
`STREAM
`
`802 804
`
`
`SEND DATA
`
`STREAM TO
`
`REMOTE SYSTEM
`
`
`
` 824) EXTRACT FILES
`
`FROM DATA
`
`STREAM
`<FARpWARE
`
`
`
`
`
`Y
`
`7812
`
`HARDWARE
`
`PRINT ERROR
`MESSAGE
`
`RETURN
`
`UPDATE FILES
`
`STORE FILES
`ON REMOTE
`SYSTEM
`
`
`
`1
`
`5,421,009
`
`METHOD OF REMOTELY INSTALLING
`SOFTWARE DIRECTLY FROM A CENTRAL
`COMPUTER
`
`FIELD OF THE INVENTION
`
`This invention relates to computer systems and more
`particularly to software installation within computer
`systems. Even moreparticularly, the invention relates
`to remotely installing software on a computer system.
`
`BACKGROUND OF THE INVENTION
`
`Whensoftwareutilizing a client-server architecture is
`being distributed to customers, the server portion ofthe
`softwareis installed on a server computer system, and
`the client portion of the software is typically installed
`on each client computer system attached to the net-
`work. The installation of the server portion of the soft-
`wareis routine, since usually there is only one, or a very
`few, server computer systems. Installation of the client
`portion of the software is considerably moredifficult.
`Often there are many client computer systems, some-
`times hundreds, and the client portion of the software
`must be installed individually on each machine. One
`prior art method of accomplishing this installation is for
`an installer to manually take the software distribution
`media to each client machine and individually install
`from the media onto that machine. A more efficient
`method is to first install the client portion of the soft-
`ware on the server machine, and then an installer goes
`to each individual client machine, logs on to the ma-
`chine, and manually enters the commands necessary to
`copyandinstall the software, from the network server,
`onto the client machine.
`Another prior art method is to manually place a
`download program on the server and client machines,
`then the download program can be used to automati-
`cally install other client-server software over a network
`connecting the server and client machines. This method
`has the disadvantage that the download program must
`first be manually installed on all the client machines,
`which requires considerable effort when a large number
`of client machines are being served.
`All these methods, however, require considerable
`time to perform the installation, either of the client
`server software or the download program,particularly
`where a large number of client computer systems are
`involved. There is need in the art then for a way of
`installing the client portion of client server software
`onto client machines without requiring that the soft-
`ware or a download program be manually copied to
`each client computer system. The present invention
`solves this and other needsin the art.
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`45
`
`30
`
`35
`
`. SUMMARYOF THE INVENTION
`
`It is an aspect of the present invention to provide a
`method of remotely installing software or data files
`over a network onto a remote computer system.
`Anotheraspect of the invention is to remotely install
`software withoutfirst installing a download program on
`the client computer system.
`It is another aspect of the invention to ensure that the
`remote computer system has all needed facilities before
`the remoteinstallation is started.
`A still further aspect of the inventionis to combineall
`files being installed into a single data stream thatis sent
`
`2
`to the remote computer system where thefiles are sepa-
`rated andinstalled.
`The above and other aspects of the invention are
`accomplished in a method that allowsinstallation of the
`client portion of software tobe done automatically over
`the network from the server computer system. The
`method allowsa user to interactively select each client
`computer system for softwareinstallation, or to provide
`a batchfile containing a list of all client computer sys-
`tems. This batch file allows the method to easily install
`software on large numbers of remote computer systems.
`For each client computer system, the method first
`ensures that the system can be reached through the
`network, and then ensures that the client computer
`system allows the server computer system to run pro-
`cesses remotely. It then ensures that the remote com-
`puter system has all the standard operating system com-
`mands necessary to perform theinstallation. By using
`-Standard operating system commands,
`the system
`“bootstraps” the installation of the software into the
`remote computer system, without requiring installation
`of a download program in the remote computer system,
`thus avoiding any manual operations on the remote
`computer system.
`After ensuring that the remote system has the neces-
`sary commands, the method then determines whether
`the hardwareof the remote computer system is capable
`of supporting the remoteinstallation. It further deter-
`mines whether the operating system level of the remote
`computer system can support the installation, and then
`it determines whethersufficient disk space exists on the
`remote computer system for theinstallation.
`If all the necessary standard operating system com-
`mandsare available and spaceis sufficient, the system
`combines all files that are being remotely installed into
`a single data stream.It then sends this single data stream
`over the network to the remote computer system, and
`runs a standard operating system installation program in
`the remote computer system which separates the data
`stream into the original files, updates the files to con-
`form to the remote computer system, and installs these
`files on the remote computer system.
`BRIEF DESCRIPTION OF THE DRAWINGS
`The above and other aspects, features, and advan-
`tages of the invention will be better understood by read-
`ing the following more particular description of the
`invention, presented in conjunction with the following
`drawings, wherein:
`FIG. 1 showsa diagram of a local and a remote com--
`puter system connected by a computer network and
`illustrates the remote installation process;
`FIG.2 shows a block diagram of the local computer
`system that performs the remoteinstall;
`FIG. 3 showsa hierarchy chart of the software mod-
`ules of the invention; and
`FIGS. 4-8 show flowcharts of the software modules -
`of the invention.
`
`wo
`
`65
`
`DESCRIPTION OF THE PREFERRED
`EMBODIMENT
`
`The following description is of the best presently
`contemplated mode of carrying out the present inven-
`tion. This description is not to be taken in a limiting
`sense but is made merely for the purpose ofdescribing
`the general principles of the invention. The scope of the
`invention should be determined by referencing the ap-
`pended claims.
`:
`
`
`
`5,421,009
`
`10
`
`15
`
`25
`
`30
`
`3
`FIG.1 shows a diagram of a computer network hav-
`ing server and client machines. Referring now to FIG.
`1, a server machine 102 has a display element 108 that
`contains a menu display 112. The server computer sys-
`tem 102 is connected to a client computer system 104
`over a network 106. The network 106is typically a local
`area network (LAN), but may be any type of network.
`The present invention comprises software running in
`the network computer system 102 and also in the client
`computer system 104 to install software from the net-
`work computer system 102 over the network 106 to the
`client computer system 104.
`FIG. 2 showsa block diagram of the server system
`102. This same block diagram could also be applicable
`to the client computer system 104. Referring now to
`FIG.2, the computer system 102 contains a processing
`element 202 which communicates to other elements of
`the computer system 102 over a system bus 204. A
`keyboard 206 allows text input to the computer system
`102 and a mouse 210 allows graphical locator input to
`the computer system 102. A graphics display 208 pro-
`vides for graphics and text output to be viewed by a
`user of the computer system 102 and a disk 212 stores
`the software and data of the present invention, as well as
`an operating system and otheruser data ofthe computer
`system 102. A network interface 214 allows the com-
`puter system 102 to transfer data and commands over
`the network 106 (FIG.1).
`A memory 216 contains the unix operating system
`218. Those skilled in the art will recognize that other
`operating systems could also work with the present
`invention. Memory 216 also contains the push agent
`software 220 which comprises the present invention.
`FIG.3 illustrates a hierarchy chart which shows the
`modules of the present invention, and how theyinter-
`connect. Referring now to FIG. 3, main module 302is
`called by the operating system 218 (FIG. 2) whenever
`the user requests remote installation of software. Main
`module 302 presents a menu to the user of the system
`through the graphics display 208 (FIG. 2). If the user
`requests help information, module 302 calls PRINT
`INTRO module 304 to present the help info. When the
`user desires to terminate the remote installation, MAIN
`module 302 calls exit module 308. When the user re-
`quests that remoteinstallation be continued, module 302
`calls INSTALL module 306 which presents another
`menu to the user to allow the user to elect batch or
`interactive installation.If the user elects a batchinstalla-
`tion, INSTALL 306 calls BATCH INSTALL 310
`which calls OPEN LOG 312, CLEAR SCREEN314,
`and the DO INSTALLATIONmodule 316. If the user
`elects an interactive install, INSTALL module 306 calls
`INTERACTIVE INSTALL 318 which calls OPEN
`LOG 312, CLEAR SCREEN 314, and the DO IN-
`STALLATION module 316. The OPEN LOG module
`312 opens the log file so that error messages can be
`written to the log file, and the CLEAR SCREEN mod-
`ule 314 clears the user’s screen in preparation for dis-
`playing a menu. The functions of each of the other
`modules will be described below with respect to FIGS.
`4-8.
`FIG.4 showsa flowchart of the MAIN module 302
`(FIG.3) which is called by the unix operating system
`218 (FIG. 2) when the user requests a remote installa-
`tion of software. Referring now to FIG.4, after entry,
`block 402 displays a menuto the user and requests input.
`This menu has three options, option 1 requests an intro-
`duction, such as help information, option 2 requests an
`
`20
`
`4
`install of the software on the remote system, and option
`3 requests termination of the remote softwareinstalla-
`tion system. After presenting the menu, block 404 reads
`the menu choice from the user, and block 406 deter-
`mines whether the user selected option 1 to print an
`introduction. If the user did select option 1, block 406
`transfers to block 408 which displays a help message
`and then returns to block 402 to re-display the menu.
`If the user did notselect option 1, block 406 transfers
`to block 410 which determines whether the user se-
`lected option 2, to install the remote software. If user
`selected option 2, block 410 transfers to block 412
`which calls FIG. 5 to perform the remote software
`installation. After performing the installation, control
`returns to block 402 to re-display the menu.
`If the user did not’select install, block 410 transfers to
`block 414 which determines whether the user selected
`theexit, option 3, and if not, block 414 transfers back to
`block 402 to re-display the menu.If the user did select
`option 3, block 414 transfers to block 416 which closes
`a log file, which was created during the remote soft-
`ware installation, and then returns to the operating
`system.
`FIG.5 shows a flowchart of the INSTALL module
`306 (FIG.3). This module is called by block 412 of FIG.
`4. Referring now to FIG. 5, after entry, block 502 lo-
`cates the installation files on the server system. Before
`the installation can proceed, theinstallation files must
`be in place on the server computer system. The present
`invention uses a predefined setof installation files for
`each set of remote software being installed. Those
`skilled in the art will recognize that the invention could
`also request that the user specify the installation files
`+ when the remoteinstallation is started.
`35
`Block 504 then determines whether block 502 was
`successful in finding the installation files and if block
`502 was not successful, block 504 transfers to block 506
`which displays an error message to the user indicating
`the missing files and then returns to FIG. 4. If the files
`were found, block .504 transfers to block 508 which
`displays a menu to the user asking whetherthe installa-
`tion should be an interactive installation or a batch
`installation. Block 509 reads a menu choice from the
`user and block 510 determines whether the user re-
`quested an interactive install. If an interactive install
`was requested, block 510 goes to block 512 whichcalls
`FIG. 6 to interactively perform the remote software
`installation and after the installation is complete block
`512 returns to FIG.4.
`If an interactive install was not requested, block 510
`goes to block 514 which determines whether the user
`requested a batchinstall and if so, block 514 transfers to
`block 516 which calls FIG. 7 to perform a batch install.
`After the batch install is complete block 516 returns to
`FIG.4.
`If neither type ofinstall is requested, block 518 deter-
`mines whether the user wishes to terminate the installa-
`tion, and if not, block 518 returns to block 508 to re-dis-
`play the menu. If the user requested termination, block
`518 returns to FIG.4.
`FIG. 6 showsa flowchart of the INTERACTIVE
`INSTALL module 318 (FIG. 3) which is called from
`block 512 of FIG. 5. Referring now to FIG.6, after
`entry, block 602 opens a log file which is used to write
`information about each of the remote installations.
`Block 604 then displays a message requesting that the
`user enter the name of the next system to beinstalled,
`and block 604 reads this name through the keyboard 206
`
`40
`
`45
`
`50
`
`35
`
`65
`
`
`
`5,421,009
`
`25
`
`35
`
`40
`
`45
`
`50
`
`20
`
`5
`6
`(FIG.2). Biock 606 then determines if the user entered
`Server system must be authorized to use the remote shell
`a nameandifso, transfers to block 608 whichcalls FIG.
`in orderto perform theinstallation.If there is no autho-
`8 to install the software onto the system named by the
`rization, block 808 transfers to block 814 to print an
`user. After the software has been installed on that sys-
`error message and return to the user. If the remote shell
`tem, block 608 returns to block 604 to read another
`is present, block 808 transfers to block 810 which inter-
`system name from the user. After the user has remotely
`rogates the remote client computer system to determine
`installed the software on all desired systems, no more
`whether all necessary commandsare available for the
`names are entered so block 606 returns to FIG.5.
`installation. These commands include the “mknod”
`FIG.7 showsa flowchart of the BATCH INSTALL
`command, “bdf’ command, “uname” command, “cat”
`module 310 (FIG.3), whichis called from block 516 of
`command, “delete file(rm)” command, and the update
`FIG.5. Referring now to FIG.7, after entry, block 702
`command used toinstall the files. Each of these com-
`opensa log file in the same mannerof block 602. Block
`mandsis well known to the unix user community and
`704 then displays a message requesting the name of a
`will not be described further. Those skilled in the art
`batchfile, and then reads this name from the keyboard.
`will recognize that other commonly available com-
`A batch file is a file that contains a list of names of
`mands may be needed for a remoteinstallation.
`systems to which the software will be installed. Block
`If all the above described commandsarenotavailable
`706 determines whetherthefile is a valid file, that is,
`on the remote system,the installation cannot proceed so
`block 706 checks the file system on the serveranddeter-
`block 810 transfers to block 814 whichdisplays an error
`mines whether it can locate the file. Block 706 also
`message and returns.If all these commandsare avail-
`removes blank lines and comments from the file and
`able, block 810 transfers to block 812 which interro-
`determines whetherthe file contains any names. If the
`gates the remote system to determinethe type of hard-
`file cannot be located, or contains no remote system
`ware used in the remote system. The present invention
`names, block 706 goes to block 708 which displays an
`can be limited to installing only on certain hardware,
`error message and then returns to FIG.5.
`and block 812 determines whether the hardware of the
`If the file is valid, block 706 goes to block 710 which
`client computer system is compatible. Although this
`displays the system names foundin thefile on the graph-
`type oflimitation is not necessary for the present inven-
`ics display 208 (FIG.2), so that the user of the system
`tion, it provides a method ofinsuring a successful instal-
`knows wherethe software will be installed. Block 710
`lation. If the hardware is not compatible, block 812
`also asks the user to verify that the list is correct, and
`transfers to block 814 which displays an error message
`block 711 reads the user input and determines whether
`and returns. If the hardware is compatible, block 812
`the user verified that thelist is correct. If the user indi-
`transfers to block 816 which interrogates the remote
`cates that the list is not correct, block 711 returns to
`system to determine the operating system level. In the
`FIG.5. If the user indicates that thelist is correct, block
`711 goes to block 712. Block 712 then gets the first or
`same manner as block 812 checked the hardware and
`limits the installation to certain types of hardware,
`next namefrom thebatchfile, and block 714 calls FIG.
`block 816 limits the installation to certain types and
`8 to install the software on the system identified by the
`levels of operating systems. As described above this is a
`name from the batch file. Block 716 then determines
`limitation that insures a smooth installation, but is not
`whether there are more names in thefile, and if there
`required by the present invention. If the operating sys-
`are, transfers back to block 712 to get the next name
`tem level is not supported, block 816 transfers to block
`from the file and install the software on that remote
`814 which prints an error message and returns. If the
`system. After all names have been read from thefile,
`block 716 returns to FIG.5.
`operating system level is compatible, block 816 transfers
`FIG. 8 shows a flowchart of the DO INSTALLA-
`to block 818 which determines whether the remote
`TION block 316 from FIG. 3, which is called from
`computer system has sufficient disk space to allow for
`block 608 and also from block 714 of FIGS. 6 and 7
`the installation. In the present invention, the amount of
`disk space required forinstallation is defined by the user
`respectively. Referring now to FIG. 8, after entry,
`block 802 writesalist of thefiles to install for input to
`of the system, however, those skilled in the art will
`the installation program. Thislist offiles will be used in
`recognize that the amountof disk space could be dy-
`block 820 to combinethefiles into a single data stream.
`namically determined from the amountof space used by
`Thefile list may also include commandsto cause other
`the files on the server computer system. Determining
`changes whenthe softwareis installed, such as setting
`the disk space available on the client computer system is
`file permissions or deleting existing files from the client
`donebyissuing a commandthrough the remote shell to
`computer system. Block 804 then sends a message
`display the amountof disk space available in the remote
`through the network in an attempt to locate the client
`system. If insufficient disk space is present on the re-
`computer system where the software will be installed.
`mote system, block 818 transfers to block 814 which
`Block 806 determines whether the client computersys-
`prints an error message. and returns.
`tem could be found through the network, and if not,
`If the remote system does have sufficient disk space,
`block 806 transfers to block 814 which prints an error
`block 818 transfers to block 820 which uses thefile list
`message and then returns to its caller. The means of
`prepared in block 802 to combineall the files being
`locating a remote system is a unix network command
`installed on the remote system into a single data stream.
`called “ping”. This command is well known in unix
`By combining thefiles into a single data stream, a con-
`systems and will not be described further. Similar com-
`siderable performance improvement is achieved over
`mands exist in most local area network systems.
`individually transferring each file to the remote system.
`If the remote client computer system was located,
`The files are combined by concatenating the files to-
`block 806 transfers to block 808 which interrogates the
`gether, and including any otherinstallation commands
`remote system to determine whether the server com-
`necessary to correctly install the software. Optionally,
`puter system has authorization to execute commands on
`thefiles could be compressed as well to improve perfor-
`mance.
`a remote shell available in the remote system. The
`
`55
`
`60
`
`65
`
`
`
`5,421,009
`
`7
`After combining the files into a single data stream,
`block 822 sends this data stream to the remote system
`and block 824 runs the update program described above
`to extract thefiles from the data stream and block 826
`updates the files to conform to the remote computer
`system. This updating includes, for example, modifying
`startup files so the newly installed software runs auto-
`matically when the remote computer system is started;
`updating security files; changing file permissions; etc.
`After updating the files, block 828 stores the files on
`the remote system as well as performing other software
`installation commands, suchas deleting files that are no
`longer used. Block 828 then returns, since the installa-
`tion for this remote computer system is complete.
`Asa performance improvement, block 822 may send
`the data stream to a pipe in the remote computer sys-
`tem, and block 824 may read the data stream from the
`pipe before performing the separation. Pipes are well
`known methodsoftransferring data from one process to
`another within an operating system, and perform in a
`manner similar to a temporary file. By using the pipe,
`the process that receives the data stream into the remote
`computer system, and the process that separates the
`data stream into the individual files can be separate
`processes that run concurrently, thus improving perfor-
`mance.
`
`the
`Those skilled in the art will recognize that
`methodofthe present invention is not limited to install-
`ing software on a client computer system from a server
`computer system, but could be used to install any type
`of files on a client computer system from a server com-
`puter system.
`Having thus described a presently preferred embodi-
`ment of the present invention, it will now be appreci-
`ated that the aspects of the invention have been fully
`achieved, and it will be understood by those skilled in
`the art that many changes in construction and circuitry
`and widely differing embodiments and applications of
`the invention will suggest themselves without departing
`from the spirit and scope ofthe present invention. The
`disclosures and the description herein are intended to be
`illustrative and are not in any sense limiting of the in-
`vention, more preferably defined in scope by the fol-
`lowing claims.
`Whatis claimedis:
`1. A programmatically performed within a central
`computer system, for installing software to a remote
`computer system through a computer network, the
`method comprising thestepsof:
`(a) requesting a list identifying at least one remote
`computer system from a user of the central com-
`puter system;
`(b) selecting one previously unselected remits com-
`putersystem from the list identifying at least one
`remote computer system;
`(c) stopping the method when all remote computer
`systems have been previously selected from thelist
`identifying at least one remote computer system;
`(d) sending a general response request to the selected
`remote computer system to determine whether the
`selected remote computer system can be contacted
`through the computer network, and transferring to
`step (b) if the selected computer system cannot be
`contacted;
`(e) determining whether the selected remote com-
`puter system allows remote performing of com-
`mands, and transferring to step (b) if the selected
`
`8
`computer system does not support remote perform-
`ing of commands;
`(f) remotely performing a commandtolist all other
`commands in the remote computer system and
`examining the list to determine whether the se-
`lected remote computer system contains all stan-
`dard operating system commands necessary to
`install the software on the selected remote com-
`puter system, and transferring to step (b) if the
`selected computer system does not contain all the
`standard operating system commands;
`(g) remotely performing a commandtolist available
`disk space on the remote computer system and
`examining the list to determine whether the se-
`lected remote computer system contains an amount
`of free disk space required to install the software,
`andtransferring to step (b) ifthe selected computer
`system does not have the amountof free disk space;
`(h) combiningall individual files contained within the
`software into a single data stream;
`@transferring the single data stream to the remote
`computer system; and
`(j) separating the single data stream into the individ-
`ual files to complete the installation.
`2. The computer implemented method of claim 1
`wherein step (a) further comprises the steps of;
`(al) requestinga file containingthelist identifying at ©
`least one remote computer system from the user of
`the method; and
`(a2) reading thelist from thefile.
`3..The computer implemented method of claim 1
`wherein step (a) further comprises the step of requesting
`identification of each remote computer system individu-
`ally from the user of the method.
`4. The computer implemented method of claim 1
`wherein step (f) further comprises thestep of:
`(fi) remotely performing a commandtolist a level of
`operating system software contained in the remote
`computer system, and transferring to step (b) if the
`level of operating system software is an incorrect
`level for the software being remotely installed.
`5. The computer implemented method of claim 1
`wherein step (f) further comprises the step of:
`(f1) remotely performing a commandto list a type
`and level of electronics contained in the remote
`computer system, and transferring to step (b) if the
`type and level of electronics is incorrect for the
`software being remotely installed.
`6. The computer implemented method of claim 1
`wherein the combining of step (h) comprises concate-
`nating the individual files together to form a single data
`stream.
`7. The computer implemented method of claim 1
`wherein step (i) further comprises the following step
`(iD) and wherein step (j) further comprises the following
`step (jl):
`(1) transferring the single data stream to a temporary
`file in the remote computer system; and
`(jl) reading the single data stream from the tempo-
`rary file and separating the single data stream into
`individual files to complete the installation.
`8. The computer implemented method of claim 7
`wherein the temporary file comprises a pipe.
`9. A computer implemented method programmati-
`cally performed within a central computer system for
`installing software on a remote computer system by
`installing and updating a plurality of data files on the
`
`20
`
`25
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`
`
`5,421,009
`
`10
`(j) separating the single data stream into the plurality
`of data files to complete theinstallation.
`10. The computer implemented method of claim 9
`wherein step (a) further comprises the steps of:
`(al) requesting a file containingthelist containing at
`least one remote computer system from the user of
`the method; and
`(a2) reading the list from thefile.
`11. The computer implemented method of claim 9
`wherein step (a) further comprises the step ofrequesting
`identification of each remote computersystem individu-
`ally from the user of the method.
`12. The computer implemented method of claim 9
`wherein step (f) further comprises the step of:
`(fl) remotely performing a commandtolist a level of
`operating system software contained in the remote
`computer system, and transferring to step (b) if the
`level of operating system software is not correct
`for the plurality of data files being remotely in-
`stalled.
`13. The computer implemented method of claim 9
`wherein step (f) further comprises the step of:
`(f1) remotely performing a commandtolist a type
`and level of electronics contained in the remote
`computer system, and transferring to step (b) if the
`type and level of electronicsis not correct for the
`software being remotely installed.
`14. The computer implemented method of claim 9
`wherein the combining of step (h) comprises concate-
`nating the individual files together to form a single data
`stream.
`18. The computer implemented method of claim 9
`wherein step (i) further comprises the following step
`(il) and wherein step (j) further comprises the following
`step (jl):
`(il) transferring the single data stream to a temporary
`file in the remote computer system; and
`(jl) reading the single data stream from the tempo-
`rary file and separating the single data stream into
`the pl