throbber
[19]
`United States Patent
`6,117,187
`[11] Patent Number:
`
`Staelin
`[45 J Date of Patent:
`*Sep. 12, 2000
`
`USOO6117187A
`
`[54] AUTOMATIC GENERATION OFA
`SOFTWARE INSTALLATION PACKAGE
`
`5,721,824
`5,832,205
`5,835,777
`
`2/1998 Taylor ..................................... 709/203
`11/1998 Kelly et al.
`714/53
`
`., 395/712
`11/1998 Staelin
`
`[75]
`
`Inventor: Carl H. Staelin, Palo Alto, Calif.
`
`5,860,012
`
`1/1999 Luu ......................................... 395/712
`
`[73] Assignee: Hewlett-Packard Company, Palo Alto,
`Calif.
`
`Primary Examiner4<akali Chaki
`Attorney, Agent, or Firm—Marc R. Mayer
`
`[*] Notice:
`
`This patent is subject to a terminal dis-
`I
`'
`.
`C a1mer
`
`.
`[21] Appl. No” 08/940’756
`[22]
`Filed:
`Sep. 30, 1997
`
`7
`
`...................................................... G06F 9/445
`Int. Cl.
`[51]
`.................................................... 717/11, 717/1
`[52] U.S. Cl.
`[58] Field of Search ..................................... 395/712, 701,
`395/702, 703; 709/203, 220, 221, 222,
`223, 224; 713/1, 100; 707/200, 203, 204
`_
`References Clted
`U. S. PATENT DOCUMENTS
`
`[56]
`
`5,247,683
`573617360
`57361686
`5’421’009
`5’473’772
`5,493,682
`5,555,416
`5,634,114
`
`9/1993 Holmes et a1.
`......................... 709/221
`11/1994 I§higami et a1.
`..
`395/712
`
`1141994 Fisher et a1.
`~~
`395/712
`
`5/1995 Platt """""""
`709/221
`12/1995 Halhwell et al'
`'
`395/712
`2/1996 Tyra ct al.
`395/703
`
`........................... 395/712
`9/1996 Owens et al.
`5/1997 Shipley ................................... 395/500
`
`[57]
`
`ABSTRACT
`
`A method of automatically generating a software installation
`package. The method operates on an application program
`that has been ported to and debugged on a target computer
`system. A manifest is automatically generated, listing all
`application program files that must be installed on the target
`computer system. Then the method automatically deter-
`mines Wthh resources, in particular shared libraries, are
`needed by any of the listed files. Necessary filesets and
`subproducts are then automatically generated. Program files
`are then automatically assigned to the filesets and filesets are
`automatically assigned to the subproducts. The need for
`control scripts is automatically detected and control scripts
`are automatlcally generated. Then the mstallation package 1s
`generated by combmmg the llsted files, filesets, subproducts,
`control scripts, the needed resources, and any related instal-
`lation materials. The needed resources are determined by
`generating a dependency list, comparing it with existing
`software installation packages, and identifying any packages
`that contain needed shared libraries as needed resources
`'
`
`18 Claims, 6 Drawing Sheets
`
`pplieation Provide
`Qy Software Engflififl\\
`1
`100
`Port and Debug as
`
`Needed
`\
`
`V
`Generate
`Manifest
`,
`xi
`, ,
`Determine
`1
`.\\
`I
`RNeeded
`
`esoiirces
`J
`400
`v
`Fileset and
`\
`'
`‘
`Subpioduct \
`
`Generation
`500
`’Tssigi'nm—i
`Files to Filesets
`l
`
`and Filesets to
`ram)
`
`, Subproduets
`l
`V ,,
`
`
`
`*
`
`,,,,,,,,
`
`
`
`
`
`
`\
`200
`
`\\
`300
`
`
`
`
`l
`Detect Need for
`Control Scripts r\
`
`AWQ\
`W
`l
`Interaction)
`\
`c
`'
`/ \\
`
`x orrectinn 800
`Error Checking A900
`V
`Generate Control
`
`
`Scripts
`moo
`lV
`Generate Installation
`Package
`
`1i on
`
`Apple v. Realtime
`Proceeding No. |PR2016-01738
`APPLE 1031
`
`1
`
`Apple v. Realtime
`Proceeding No. IPR2016-01738
`APPLE 1031
`
`

`

`US. Patent
`
`Scp. 12, 2000
`
`Sheet 1 0f 6
`
`6,117,187
`
` pplication Provide-
`
`100
`
`200
`
`_\300
`
`:
`
`
`
`5
`
`l_______*
`
`y Software Enginee
`________*‘
`Generate
`
`Manifest
`;
`Detefime
`""""’
`£33,215
`700
`1
`r—
`Filesetand
`
`""""* 22:22:20? 3x
`L 500
`
`Assignment of
`Files to Filesets
`and Filesets to d
`
`
`
`
`
`
`
`
`
`Subflfducts
`
`600
`
`‘L_______* Detect Need for
`1
`Control Scripts \
`
`3
`2
`700
`
`FlG.1
`
`oftware Enginee
`Interaction]
`
`Correction
`
`
`
`
`.
`Error Checking
`/‘\
`
`900
`
`
`V
`
`
`
`
`
`Generate Control /_\
`scripts
`‘
`1000
`
`Generate Installation
`
`Package
`
`1 100
`
`2
`
`

`

`US. Patent
`
`Scp. 12, 2000
`
`Sheet 2 0f 6
`
`6,117,187
`
`
`
`
`
`Select an
`
`Executable File
`
`
`
`
`
`Run CHATR to Create
`
`List of Shared Libraries
`
`
`
`Executable
`
`Yes
`
`410
`
`420
`
`Save New Timestamp R
`
`310
`
`Install Application in
`Testbed Computer \|
`I
`320
`
`
`
`
`
`
`
`Select Directories
`
`to be Searched
`
`Use FIND -NEWERC to
`
`‘Generate List of Installed Files
`
`
`
`‘l
`
`
`
`Delete Files Known to
`be Spurious \
`340
`
`330
`
`Check for
`
`Spurious Files
`
`350
`
` More
`
`
`
`Files?
`
`430
`
`440
`
`Identify Packages as
`Needed Resources
`
`
`
`
`
`
`
`List Any Needed
`Shared Libraries
`
`460
`
`450
`
`FIG. 2
`
`FIG. 3
`
`3
`
`

`

`US. Patent
`
`Scp. 12, 2000
`
`Sheet 3 0f 6
`
`6,117,187
`
`
`
`
`
`Select a File
`W
`—>
`605
`
`3
`
`
`
`
`Scan Fileset Rules
`
`for First Match W
`610
`
`I
`
`Assign File
`to Fileset \
`615
`
`Yes
`
`
`
`No
`
`620
`
`
`
`—> SelectaFileset —\
`625
`
`Y
`
`
`
`Scan Subproduct Rules
`for First Match \
`630
`
`
`First Match
`
`Exists?
`
`635
`
`
`
`Assign Fileset
`to Subproduct \
`640
`
` More
`Filesets?
`
`
` Assignment of Files to
`( Filesets and Filesets to
`
`\Subproducts Cornpilete
`650
`
`FIG. 5
`
`
`
`
`
`
`
`
`
`
`%
`
`Select a File
`
`}\
`
`i
`
`E
`Scan Fileset Rules
`
`
`for First Match \
`510
`
`505
`
`!No
`
`——> SelectaFileset b
`i
`535
`,,
`,
`V
`
`
`
`
`Scan Subproduct Rules
`for First Match
`
`v 540
`
`Subproduct
`Exists?
`
`
`
`
`
`Generate 7
`Subproduct
`
`
`
`
`
` Generate Fileset /\525
`
`530
`
`
`
`
`More
`Filesets?
`
`
`
`
`
`_ Fileset and Subproduct
`\ Generation Complete
`
`565
`
`FIG. 4
`
`4
`
`

`

`US. Patent
`
`Sep. 12, 2000
`
`Sheet 4 0f 6
`
`6,117,187
`
`k
`702
`
`Select a File
`
`<—~—
`
`Filename
`n atches *Ietc/*7
`
`No
`
`
`
`
`
`ilename matches
`
`*Inewconfig/*?
`
`
`
`Select a File
`
`702
`
`Pathname
`
`
`: atches *Ibinl*7
`
`718
`
`
`
`
` IethPATH Action
`
`or Pathname Exists?
`
`
`
`
`
`
`
`
`
`Create [etc/PATH
`.
`(-
`722 Action for Pathname
`
`
`athname matches
`*lmanlman*?
`
`724
`
`Yes
`
` ANPATH action for
`Pathname Exists?
`
`
`
`ile is Share -
`
`730
`
`728
`
`Create MANPATH
`Action for Pathname
`
`
`
`
`
`
`
`
`
`Yes
`HL|B_PATH Action
`or Pathname Exists?
`
`
`
`
`Create SHLIB_PATH J
`Action for Pathname
`
`
`
`
` Need for Control
`Script Detection
`Complete
`
`
`
`
`
`
`
`704
`
`rYes
`
`
`
`Newconfig Control
`ction for File Exists?
`
`708
`
`
`i No
`
`l Create Newconfig
`‘
`c tl
`t'
`[
`onroAcIon
`
`’\
`710
`
`eed for Control Scrip
`Detection Complete
`
`714
`
`FIG. 6A
`
`
`
`
`
`
`
`714
`
`
`5
`
`

`

`US. Patent
`
`Scp. 12, 2000
`
`Sheet 5 0f 6
`
`6,117,187
`
`
`
`/j
`702 '
`
`Select a File
`
`
`
`/
`
`Select a File eh
`
`File in Default Set of
`User IDs?
`
`742
`
`User ID Action
`for File Exists?
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`746
`
`Create User ID /
`Action for File
`
`
`
`
`roup ID Action
`for File Exists?
`
`758
`
`Create Group ID d
`Action for File
`
`
`760
`
`Need forControl
`
`
`Script Detection
`
`Complete
`
`Need for Control
`
`Script Detection
`Complete
`
`
`
`FIG. 6C
`
`FIG. 6D
`
`6
`
`

`

`US. Patent
`
`Scp. 12, 2000
`
`
`Sheet 6 0f 6
`
`6,117,187
`
`
`Select a Fileset R
`
`
`1005
`
`
`
`
`1010
`\ SelectaScriptType 4—H
`
`1
`
`"”L
`
`'
`Select a Control Action 4“
`
`outine for
`
`
`
`No
`
`
`Control Action for Script
`T pe Exists?
`
`
`
`
`Retrieve Relevant
`Parameters using Routine ;
`
`
`
`
`Select Script
`Fragment Template
`
`
`y’
`
`
`
`$030
`
`
`
`Output 0
`@ript Fragment TemW
`Exist?
`060
`Yes 1
`
`Open Script File /
`
`
`1 065
`
`1070
`
`l
`
`
`Write Preamble, Output, & /
`Postamble into Script File
`
`Close Script File
`
`
`
`
`
`No
`
`i No
`
`FIG. 7
`
`Yes
`
`9
`'
`\More Frlesets.
`\<1080
`
`No
`
`1085
`
`‘
`
`7
`
`Control Script
`Generation Complete
`
`
`
`
`
`Y
`
`
`
`
`Insert Parameters into Script
`Fragment Template
`
`A
`
`1040
`Call Script Fragment /
`Template
`7 4%
`1 045
`‘_/
`Collect Output of Script‘
`Fragment Template
`
`
`
`
`1050
`
`1055
`{
`
`
`
`7
`
`

`

`6,117,187
`
`1
`AUTOMATIC GENERATION OF A
`SOFTWARE INSTALLATION PACKAGE
`
`BACKGROUND OF THE INVENTION
`
`1. Field of the Invention
`
`10
`
`15
`
`The present invention relates generally to computer sys-
`tems and more particularly to a method of automatically
`generating a software installation package that can be used
`to install an application program in a user’s computer
`system.
`2. Description of the Related Art
`There has been a continuing need for a simple and easy
`way to install an application program in a user’s computer
`system. At one time this was done manually. The user would
`obtain an application program,
`typically on diskettes or
`other magnetic media, and would manually copy the appli-
`cation files from the magnetic media into one or more
`directories in the user’s computer system. After this was
`done, the user would manually configure the application. As '
`applications acquired more capabilities and grew corre-
`spondingly more complex, this installation process became
`a time-consuming and error-prone ordeal that often ended in
`an inoperative system and extreme frustration on the part of
`the user.
`
`25
`
`Software publishers have devoted much effort to finding
`a way to make it easier for users to install application
`programs. These efforts have led to the development of
`installation packages that take over the installation process
`from the user. Such installation packages have been per-
`fected to the point that now they can install an application
`program almost completely automatically, ensuring that the
`application will work as desired and relieving the user of this
`burdensome chore.
`
`Creating an installation package that can reliably install
`an application program is not a trivial task. The installation
`package must include all the files of the application program,
`and these files must be properly configured for the target
`computer system.
`In addition,
`the installation package
`includes other materials such as data files, scripts, execut-
`able programs, or the like. These materials operate more or
`less automatically to carry out the installation of the appli—
`cation program files. Depending on the operating system and
`other characteristics of the computer system in which the
`application is to be installed, creating a new installation
`package generally requires creating some or all of such
`materials anew, and this in turn may involve such tasks as
`writing a new program or creating a complicated data file.
`The burden of creating these materials falls on the software
`engineer, who must devote many hours of meticulous effort
`to this task.
`
`Software tools that can create portions of installation
`packages are known. However, such tools do not relieve the
`software engineer of the considerable effort of creating the
`complete package. For example, one such tool requires the
`software engineer to manually create an arcane and com-
`plicated configuration file specifying many of the details of
`the installation.
`
`A mass-marketed application program may sell hundreds
`of thousands of copies and thereby generate sufficient rev-
`enue to justify the extensive effort required to produce a
`good installation package. But many applications, especially
`those created for use by engineers and others who use
`computer workstations in environments such as the UNIX®
`operating system are distributed singly or in only a few
`copies (UNIX is a registered trademark in the United States
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`2
`and other countries licensed exclusively through X/Open
`Company, Ltd.). It has not been economically justifiable to
`spend the time necessary to develop good installation pack—
`ages for such applications. The result has been either that
`effort is expended out of all proportion to the value of the
`application, or that the installation package does not get
`developed at all, or that an inadequate package is prepared.
`None of these outcomes is satisfactory.
`One part of developing an installation procedure for a new
`application is determining which files to install and where in
`a target computer system to install them. A script has been
`developed that attempts to do this by (1) saving a list of all
`files in the system prior
`to installation of the new
`application, (2) saving preselected configuration files prior
`to installation, (3) installing the new application, (4) saving
`a list of all files in the system after the installation, (5) saving
`the preselected configuration files after installation, and (6)
`comparing to make a list of added files and any configuration
`changes. This script does not account for any files that are
`modified during installation (except the preselected configu-
`ration files). Thus, although the script performs one step in
`the process of creating an installation package, most of the
`work must still be done manually by the software engineer.
`One method was developed to automatically generate
`various parts of the software installation package, saving the
`software engineer a great deal of time and effort. In copend-
`ing US. patent application Ser. No. 08/619,876, now US
`Pat. No. 5,835,777 entitled “Method of Automatically Gen-
`erating a Software Installation Package,” assigned to the
`assignee of the present invention and incorporated herein by
`reference,
`there is described a method for automatically
`generating a manifest that lists all application program files
`which need to be installed, determining needed resources,
`providing installation materials, and generating the installa-
`tion package. The method described requires however, that
`certain steps necessary to generate a software installation
`package be done manually.
`From the foregoing it will be apparent that there is a need
`to automate the steps that are done manually in the method
`described in copending US. patent application Ser. No.
`08/619,876, now US. Pat. No. 5,835,777 in order to further
`reduce software engineering effort and increase efficiency.
`SUMMARY OF THE INVENTION
`
`The present invention provides a method of automatically
`creating a new software installation package that can cor-
`rectly install an application program on a target computer
`system. Using the method of the invention, a software
`engineer can more easily and quickly create the installation
`package than was possible in the past.
`Briefly and in general terms, the method of the invention
`begins with a new application program. The application
`program may have been created by the same engineer who
`wishes to use the method of the invention to create an
`installation package, or it may have been created by others.
`Once the application has been ported to the target computer
`system and debugged so that it is operable on the target
`system,
`the invention is used to generate the installation
`package. This includes the steps of automatically generating
`a manifest that lists all application program files which need
`to be installed on the target system, automatically determin-
`ing which resources are needed by those files, automatically
`generating filesets and subproducts, automatically assigning
`files to the filesets and filesets to the subproducts, automati-
`cally determining a need for control scripts, automatically
`generating the control scripts, and generating the installation
`
`8
`
`

`

`6,117,187
`
`3
`package by combining the listed files, any needed resources,
`the filesets, the subproducts, and the control scripts.
`The step of determining which resources are needed
`preferably includes several substeps. The first substep is
`automatically generating a dependency list of any shared
`libraries referenced by any of the listed application program
`files. The next substep is automatically determining which of
`these shared libraries is already present in a preexisting
`software installation package. Finally, if any shared libraries
`are included in one or more preexisting software installation
`packages, then such preexisting packages are identified as
`needed resources.
`
`The step of automatically detecting the need for control
`scripts also preferably includes several substeps. The first
`substep is automatically detecting the need for an add-new-
`configuration-file control script. The next substep is auto-
`matically detecting the need for an add-new-user control
`script. Athird substep is automatically detecting the need for
`an add-new-group control script. A final substep is auto-
`matically detecting the need for an add-pathname-elements
`control script. Additional substeps may also be included to
`automatically detect the need for additional control scripts
`beyond those listed here.
`Optionally, a cross-reference to any listed shared library
`that is not included in any of said preexisting installation
`packages is also included in the software installation pro-
`gram.
`The new software installation package is typically dis-
`tributed by recording on magnetic media, such as tape or
`diskettes or by imprinting the data in optical media, such as
`CD-rom or DVD. The magnetic or optical media can then be
`reproduced and distributed to users as desired. Alternatively,
`the package may be stored in a central location such as the
`hard disk of a network server so that the application program
`can be installed on any other computer having access to the
`central location.
`
`The step of generating the manifest preferably includes
`saving a new timestamp, installing the application program
`in a testbed computer, and generating a list of all files in the
`testbed computer system having a timestamp more recent
`than the saved timestamp. This will ensure that all necessary
`files are identified. In one embodiment any file of a kind that
`has been previously determined to be spurious is excluded.
`The software engineer may review the list to delete any other
`spurious files that may have crept in. In another embodiment
`only files in certain preselected directory trees are consid-
`ered.
`
`Other aspects and advantages of the invention will
`become apparent from the following detailed description,
`taken in conjunction with the accompanying drawings,
`illustrating by way of example the principles of the inven-
`tion.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`FIG. 1 is a flowchart depicting in general outline the
`method of the invention.
`
`FIG. 2 is a flowchart depicting more details of a preferred
`embodiment of the “generate manifest” block of FIG. 1.
`FIG. 3 is a flowchart depicting more details of a preferred
`embodiment of the “determine needed resources” block of
`FIG. 1.
`
`FIG. 4 is a flowchart depicting more details of a preferred
`embodiment of the “fileset and subproduct generation”
`block of FIG. 1.
`
`FIG. 5 is a flowchart depicting more details of a preferred
`embodiment of the “assignment of files to filesets and
`filesets to subproducts” block of FIG. 1.
`
`4
`FIG. 6A is a flowchart depicting details of a first portion
`of a preferred embodiment of the “detect control scripts”
`block of FIG. 1.
`
`FIG. 6B is a flowchart depicting details of a second
`portion of a preferred embodiment of the “detect control
`scripts” block of FIG. 1.
`FIG. 6C is a flowchart depicting details of a third portion
`of a preferred embodiment of the “detect control scripts”
`block of FIG. 1.
`
`10
`
`FIG. 6D is a flowchart depicting details of a fourth portion
`of a preferred embodiment of the “detect control scripts”
`block of FIG. 1.
`
`15
`
`FIG. 7 is a flowchart depicting more details of a preferred
`embodiment of the “generate control scripts” block of FIG.
`1.
`
`DESCRIPTION OF THE PREFERRED
`EMBODIMENT
`
`As shown in the drawings for purposes of illustration, the
`invention provides a method of automatically creating a new
`software installation package that
`is used to install an
`application program in a target computer. Software engi-
`neers have had to create such installation packages
`manually, a procedure that has required increasingly large
`amounts of effort as application programs have grown larger
`and more complex.
`In accordance with the invention, when a new application
`program has been ported to a target computer system and
`debugged, the method of the invention automatically gen-
`erates a manifest of files, a list of required shared libraries,
`appropriate filesets and subproducts, and necessary control
`scripts. The method of the invention also automatically
`assigns each file to a fileset and assigns each fileset to a
`subproduct. Using this information, an installation package
`is assembled. This method enables the software engineer to
`quickly and easily create an installation package that cor-
`rectly installs even a very large and complex application
`program.
`
`A method of automatically generating a software instal-
`lation package for installing an application program on a
`target computer system according to the principles of the
`invention is depicted in flowchart form in FIG. 1. Initially
`the new application is provided, for example by a software
`engineer or by a team of such engineers (block 100), and is
`ported and debugged (block 200) so that it is operable on a
`target system. This has been satisfactorily done if the soft-
`ware is in such condition that the application program can be
`installed on a testbed computer. For example, in a computer
`system that uses the HP-UX operating system version 9.0,
`distributed by Hewlett-Packard Company, often the appli-
`cation is in satisfactory condition when the “MAKE
`CLEAN”, “MAKE”, and “MAKE INSTALL” commands
`build and install the application properly.
`Starting with software that has been ported and debugged,
`the first step of the invention is to automatically generate a
`manifest that lists all files which must be installed on the
`
`target computer system for the application program to func-
`tion correctly (block 300). The next step is to automatically
`determine which resources referenced by any of the listed
`files are needed on the target computer system for the
`application program to function correctly (block 400). Then,
`filesets and subproducts needed on the target computer
`system for the application program to function correctly are
`automatically generated (block 500).
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`9
`
`

`

`6,117,187
`
`5
`Filesets and subproducts are part of a hierarch of software
`objects that make rip the applications or operating systems
`on which Software Distributor-Unix (SD-UX) commands
`work. Filesets include all the files an control scripts that
`make up a product. The are the smallest selectable SD-UX
`software object. Subproducts are used to group logically
`related filesets within a product when the product contains
`several filesets.
`
`Following automatic generation of the filesets and
`subproducts, each listed file is automatically assigned to an
`appropriate fileset and each of the filesets is automatically
`assigned to an appropriate subproduct (block 600). The next
`step is automatically detecting a need for certain control
`scripts that are necessary for installation on the target
`computer to function correctly (block 700). A control script,
`sometime known as a macro or batch file,
`is a list of
`commands that can be executed without user interaction. A
`
`10
`
`15
`
`software engineer then views the results of the steps which '
`have already been performed according to the invention and
`provides information regarding any necessary corrections or
`additions to the invention (block 800).
`If the software
`engineer has directed that changes or additions are needed,
`the previous steps (block 200 through block 700) may be
`repeated as necessary. Otherwise, error checking is per—
`formed to ensure the previous steps have functioned prop-
`erly (block 900). Next,
`the control scripts necessary for
`installation on the target computer to function correctly are
`generated (block 1000). The last step is generating an
`installation package by combining the listed application
`program files, any needed resources,
`the filesets,
`the
`subproducts, and the control scripts (block 1100).
`
`25
`
`30
`
`35
`
`6
`In one embodiment the file list is filtered to remove any
`file of a kind which has been predetermined as indicative of
`a spurious file (block 340). This may be done, for example,
`by searching for all files having a certain name or a certain
`character string in their name. Such files may have been
`generated or modified by system daemons. Such filtering
`can be done during the generation of the list, such that the
`unwanted files are never added to the list, or afterwards by
`deleting the unwanted files from the list. Optionally, the
`software engineer then manually reviews the file list to
`remove any other unwanted files (block 350).
`
`In another embodiment, only files in predetermined direc-
`tory trees are checked and, if their timestamps are newer
`than the saved timestamp, are placed on the list (block 360).
`This can shorten the time required to prepare the list if the
`software engineer knows ahead of time which directories
`need not be checked, for example because it is known that
`no new program files will be inserted in such directories.
`
`The step of determining which resources are needed
`(block 400) preferably comprises automatically generating a
`dependency list that lists any shared libraries referenced by
`any of the listed object files, automatically determining
`which of the listed shared libraries are already included in
`one or more preexisting software installation packages, and
`identifying each such preexisting software installation pack-
`age as a needed resource. An example of how these steps
`preferably are carried out is given in FIG. 3. An executable
`file is selected from the manifest (block 410). This file is
`then examined to determine which shared libraries it uses
`
`and a list of these libraries is prepared (block 420). In the
`HP-UX 9.0 environment this is conveniently done by means
`of the “CHATR” command. If there are more executable
`
`The step of generating the installation package typically
`includes recording the listed files and other subject matter on
`media, such as tape, floppy diskettes, CD-rom, and DVD, for
`distribution to a user of the target computer system. These
`files and other subject matter may also be placed in an
`accessible location on a computer system, for example the
`hard disk of a network server, that is in electrical commu—
`nication with the target computer system. The target system
`can run the installation package directly from the server or
`it can download the installation package and then run the
`installation program locally.
`
`FIG. 2 illustrates an example of how to generate the
`manifest. A new timestamp is generated and saved (block
`310). Then the application program is installed in a testbed
`computer system (block 320). In the HP-UX 9.0 environ-
`ment
`this may be done by running the “MAKE” and
`“MAKE INSTALL” commands. Typically the testbed is a
`system similar to the target systems on which the installation
`package will
`later be run. Then all files in the testbed
`computer system having a timestamp more recent than the
`saved timestamp are listed (block 330). In the HP—UX 9.0
`environment this may be done by using the “-NEWERC”
`option with the “FIND” command.
`
`Depending on the operating system, it may be necessary
`to attach the new timestamp to each of the application
`program files prior to installing the application on the
`testbed computer. In the HP-UX 9.0 environment this is not
`necessary because the files will automatically receive new
`timestamps when they are copied during the installation
`process.
`
`40
`
`files the procedure is repeated, once [or each executable file,
`and any shared libraries are added to the list (block 430).
`
`45
`
`50
`
`55
`
`60
`
`65
`
`The list of shared library dependencies is compared with
`those libraries already present in preexisting software instal-
`lation packages (block 440). Alist of any needed preexisting
`software installation packages results from this comparison
`(block 450) and is used in generating the new software
`installation package.
`
`In one embodiment the new software installation package
`also includes a cross-reference to any shared libraries which
`are needed by the new package but which have not been
`found in any preexisting software installation packages
`(block 460).
`
`The step of automatically generating filesets and subprod-
`ucts (block 500) preferably includes the substeps of auto-
`matically comparing each file against a set of fileset rules,
`determining which filesets need to be generated, generating
`the needed filesets, comparing each fileset
`to a set of
`subproduct rules, determining which subproducts need to be
`generated, and generating the necessary subproducts.
`
`One possible set of fileset rules includes the following
`individual rules:
`
`10
`
`10
`
`

`

`6,117,187
`
`{{\.s1$} 3 {-SHLIBS}}
`{{/h'h[ /]*\_[0—9]$} 3 {—smms}}
`{{/include/} 5 {-INC}}
`{{/man/man} 5 {-MAN}}
`{{/man/fr,FR\.i5088591} 0 {-FRE-I-MAN}}
`{{/man/friFR\.roman} 0 {AFREARAMANH
`{{/man/friFR} 0 {-FRE-MAN}}
`{{/1nau/f1-,CA\.i5088591} 0 {-CFR-I-MAN}}
`{{/mau/fI,CA\.roman} 0 {-CFR—R-MAN}}
`{{/man/fr,CA} 0 {-CFR—MAN}}
`{{/help/deiDE\.iso} 0 {-GER-I-HELP}}
`{{/help/deiDE\.rohelp} D {-GER-R-HELP}}
`{{/he1p/de,L)E} 0 {-GER-HELP}}
`{{/msg/C}~ s {-MSG}}
`{{/msg/fi,FR\.isosss91} 0 {-FRE-I-MSG}}
`{{/msg/friFR\.roman} 0 {-FRE-R-MSG}}
`{{/msg/fi,FR} 0 {-FRE—MSG}}
`{{/msg/fr7CA\.is088591} 0 {-CFR—I—MSG}}
`
`{{/man/deiDE\.iso} 0 {-GER-I-MAN}}
`{{/man/de7DF.\.roman} 0 {-GFR-R-MAN}}
`{{/man/deiDE} 0 {-GER—MAN}}
`{{/he1p/C/} 5 {—HELP}}
`{{/help/friFRMisoSSSQl} 0 {-FRE-I—HELP}}
`{{/help/friFR\.rohelp} 0 {AFREARAHELPH
`{{/hc1p/fr,FR} 0 {-FRE-HELP}}
`{{/help/fr,CA\.i5088591} 0 {-CFR-I-HELP}}
`{{/help/friCA\.rohelp} 0 {-CFR-R—HELP}}
`{{/he1p/fr,CA} 0 {-CFR-HELP}}
`{{/msg/friCA\.roman} 0 {-CFR-R-MSG}}
`{{ansg/fLCA} 0 {-CFR-MSG}}
`{{lmsg/deiDELiso} 0 {-GER-I—MSG}}
`{{/msg/deiDE\.roman} 0 {-GER-R-MSG}}
`{{/msg/de,DE} 0 {-GER-MSG}}
`
`Each of these rules is composed of three fields, the regexp,
`threshold and the name of the rule. The regexp is a regular
`expression used to match against filenames. The threshold is
`a minimum number of files which need to match the pattern
`defined by the regexp before the fileset is created. The name
`field, defines a string that is appended to the product name
`to create the fileset name.
`It is understood that these rules serve only as an example
`of the set of fileset rules, and that numerous other forms of
`fileset rules may be substituted for the listed fileset rules.
`Alternatively, the set of fileset rules may include fileset rules
`in addition to the above-listed fileset rules, a subset of the
`above-listed fileset rules, or some combination thereof.
`Similarly, one possible set of subproduct rules includes
`the following individual rules:
`
`{{ [ -]*-MAN$} {Manuals}}
`{{-...-MAN$} {ManualsByLang}}
`{{1...A-.-MAN$} {ManualsByLang}}
`{{ I -]*-HELP$}{He1p}}
`{{-...-HELP$} {HelpByLang}}
`{{Z...h-.-HELP$} {HelpByLang}}
`{{ [ -]*-MSG$} {Messages}}
`{{-...-MSG$} {MessagesByLang}}
`{{-...-.-MSG$} {MessagesByLang}}
`
`{{-RUN$} {Runtime}}
`{{-MIN$} {Runtime}}
`{{-AUX$} {Runtime}}
`{{-SHLIBS$} {Runtime}}
`{{-KRN$} {Runtime}}
`{{-MIN$}
`{MmirnumRuntime}}
`{{-SHLIBS$}
`{MmirnumRuntimeH
`{{-KRN$}
`{MmirnumRuntime}}
`{{-NOTES$} {ReleaseNotes}}
`{{-DEMO$} {Demonstration}}
`{{-PRG$} {Development}}
`{{-INC$} {Development}}
`
`The subproduct rules are composed of two fields, a regexp
`and a subproduct name. In this case the regexp is used to
`match against fileset names. As with the fileset rules, these
`subproduct rules serve as an example of possible subproduct
`rules and numerous other subproduct rules may be substi-
`tuted for these subproduct rules. Alternatively, the set of
`subproduct rules may include subproduct rules in addition to
`the above-listed subproduct rules, a subset of the above-
`listed subproduct rules, or some combination thereof.
`An example of how these steps preferably are carried out
`is given in FIG. 4. First, a file is selected from the manifest
`(block 505). The fileset rules for the file are then scanned for
`a first match (block 510). If a first match does exists (block
`515) and thc filcsct defined by the first match does not
`already exist (block 520) then the fileset defined by the first
`match is generated (block 525). Otherwise, the step of fileset
`generation (block 525) is bypassed. The next step is then to
`
`check if the manifest contains files which have not yet been
`checked (block 530). If it does, then the steps above (blocks
`505 to 530) are repeated until the entire manifest has been
`checked.
`In a similar fashion, a fileset is selected (block 535) from
`a list of all the filesets which were generated (block 525).
`The subproduct rules for the fileset are then scanned for a
`first match (block 540). If a first match exists (block 545)
`and the subproduct defined by the first match does not
`already exist (block 550) then the subproduct defined by the
`first match is generated (block 555). Otherwise, the step of
`subproduct generation (block 555) is bypassed. The next
`step is then to check for other filesets that have not yet been
`checked (block 560). If there are more filesets, then the steps
`above (blocks 535 to 560) are repeated until all the filesets
`have been checked. Once this has been completed, fileset
`and subproduct generation is complete (block 565).
`Once the filesets and subproducts are generated, the next
`step is automatically assigning files to filesets and filesets to
`subproducts (block 600). An example of how this step is
`preferably accomplished is depicted in FIG. 5. First, a file
`from the manifest is selected (block

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket