US20020095671A1 - System and method for repairing a damaged application program - Google Patents
System and method for repairing a damaged application program Download PDFInfo
- Publication number
- US20020095671A1 US20020095671A1 US10/075,871 US7587102A US2002095671A1 US 20020095671 A1 US20020095671 A1 US 20020095671A1 US 7587102 A US7587102 A US 7587102A US 2002095671 A1 US2002095671 A1 US 2002095671A1
- Authority
- US
- United States
- Prior art keywords
- resource
- executable code
- program
- installer
- expected location
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99953—Recoverability
Definitions
- the present invention generally relates to computer software application programs for providing to other installed application programs the ability to repair missing program files. More particularly, the present invention relates to an application program or software module for verifying the existence of a program file at an expected location, and for installing the program file to that expected location if the program file is missing.
- an application program Before use, an application program must typically be installed to a computer system.
- the installation procedure generally involves copying executable and data files (the “program files”) related to the application program from a source location to an installed location on the computer system.
- the source location is an installation disk or location on a network drive accessible by the computer system.
- the program files are stored in a compressed format to conserve storage space.
- an application program uses a variety of installation technologies to copy the program files from the source location to the computer system.
- an application program will include a special application program (the “set-up program”) for administering and performing the installation procedure.
- the set-up program is unique to the application program and is customized to install the program files from the source location to pre-configured locations on the computer system.
- the user is provided the option of redirecting the installation of the program files to other locations on the computer system.
- the typical set-up program not only installs the program files to the computer system, but also creates entries in a central registration database, such as a system registration database (the “system registry”), which identify the locations of the program files on the computer system. The location may be identified by a “path” to a particular directory or folder of the computer system in which reside the program files.
- the entries in the system registry are typically maintained by the application program itself. While executing, the application program generally queries the system registry for the path to an installed program file, and then accesses the installed program file at the path identified in the system registry. Any changes to the entries in the system registry are governed by the application program.
- the application program is typically unable to continue functioning properly -and may generate an error prompting the user to execute the set-up program again to repair the missing program file.
- the user is forced to terminate the current process and handle the error before continuing.
- the normal operation of the application program is interrupted, and the user may be greatly inconvenienced until the dilemma of the missing program file is resolved.
- the present invention meets the above-described needs by providing the ability to identify a missing program file necessary to an application program, and to install the missing program file without interrupting the operation of the application program.
- the present invention achieves that result by receiving an indication that a resource, such as a program file or registry key, is needed by the application program.
- the indication may take the form of a request for the location of the needed resource.
- the present invention may maintain a listing of the locations of the resources needed by the application.
- the present invention verifies the existence of the needed resource prior to the application attempting to execute the resource. The verification may be achieved by querying for the existence of the resource at the location maintained in the listing. If the resource does not exist, the present invention initiates the installation of the resource. The installation may occur in a background process without interrupting the application program, or by prompting the application program for instructions whether to install the missing resource.
- an installer application when an application program is installed, stores information in a registration database (the “installer registry”) related to the locations of the application program's resources, such as program files and registry keys.
- the installer registry may be a portion of the general system registry, or the installer registry may be a stand-alone registration database.
- a resource identifier may be assigned to each resource to uniquely identify that resource from other resources. Within the installer registry, the location of each resource may be associated with the resource identifier for that resource.
- the application program indicates to the installer application which feature to invoke by passing to the installer application a resource identifier for a resource needed by that feature.
- a “feature” is a granular piece of the product that a user may choose to install or execute.
- Features typically correspond roughly to the functional features of the program itself, such as a proofing tools feature or a word processing feature. Invoking the feature may constitute selecting an option from the menu, querying the installer application to identify which features of the application program are installed, or other methods for invoking the feature as will be understood by those skilled in the art.
- the resource identifier passed to the installer application may take the form of a “token,” which may include one or more of the following arguments: an identifier for the application program (the “Product Code”), an identifier for the invoked feature (the “feature identifier”), or an identifier for a “component” related to the resource needed by the feature (the “Component Code”).
- a “component” is a collection of resources,- such as files, shortcuts, or registry keys, that are all installed or un-installed as a unit. Components are the building blocks of the program that are not exposed to the user.
- the resource identifier may take the form of a “descriptor,” which may include similar information to the token, but formatted to be more easily interpreted by the installer application.
- passing the resource identifier may include issuing an application programming interface (“API”) call, with the resource identifier as a parameter, to the installer application in the form of a request for the location of the resource identified by the resource identifier.
- API application programming interface
- the installer application first accesses the installer registry and retrieves the location of the resource associated with the resource identifier. The installer application then verifies the existence of the resource at that location. If the resource exists at the location, the installer application returns the location to the application program. The application program then accesses the resource at the location. However, if the installer application fails to verify the existence of the resource at the location, the installer application initiates a repair procedure.
- the repair procedure may take two forms.
- a “brute force” repair procedure may be used, generally if the application program is an operating system function or service, such as a shortcut maintained by the operating system.
- the installer application may automatically execute an installation procedure to install the resource.
- Installing the resource may include prompting a user for a “source” which contains the program files for the application program, retrieving the program files from the source, and writing the program files and other resources to the appropriate location. Processing may then return to the application program by passing the location of the newly-installed resource to the application.
- Another repair procedure may also be invoked, generally for conventional application programs.
- the installer application may return a message to the application program that the resource does not exist at the expected location.
- the application program may then choose from several alternatives to handle the message. For instance, the application program may prompt the user to choose whether to install the missing resource, or the application program may be pre-configured to automatically execute the installation procedure for certain missing resources. If the choice is made to install the missing resource, the application program indicates that choice to the installer application.
- the installer application then executes the installation procedure, in the same fashion as that described above, and the missing resource is installed.
- FIG. 1 is a block diagram of a conventional personal computer that provides a portion of the operating environment for an exemplary embodiment of the present invention.
- FIG. 2 is a functional block diagram of the conventional personal computer of FIG. 1, including an installer application constructed in accordance with an exemplary embodiment of the present invention.
- FIG. 3 is a logical flow diagram depicting a process for verifying the existence of installed resources, and for installing any inadvertently missing resources in accordance with an exemplary embodiment of the present invention.
- FIG. 4 is a logical flow diagram depicting, in greater detail, a process for verifying the existence of installed resources, and for installing any inadvertently missing resources in accordance with an exemplary embodiment of the present invention.
- the present invention is directed to a system and method for providing the ability to repair an installed application program if a resource needed by the application program becomes inadvertently deleted or otherwise unavailable to the application program.
- the present invention makes possible a system for verifying the existence of a resource needed to support a feature of the application program.
- the system may respond to a request from the application program to make use of the resource by first verifying the existence of the resource at an expected location. If the resource does not exist at the expected location, rather than returning an error to the application program, the system initiates an installation procedure for restoring the missing resource without interrupting the normal operation of the application program.
- FIG. 1 and the following discussion are intended to provide a brief, general description of a suitable computing environment in which the invention may be implemented. While the invention will be described in the general context of an application program that runs on an operating system in conjunction with a personal computer, those skilled in the art will recognize that the invention also may be implemented in combination with other program modules. Generally, program modules include routines, programs, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Moreover, those skilled in the art will appreciate that the invention may be practiced with other computer system configurations, including hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like. The invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
- an exemplary system for implementing the invention includes a conventional personal computer 20 , including a processing unit 21 , a system memory 22 , and a system bus 23 that couples the system memory to the processing unit 21 .
- the system memory 22 includes read only memory (ROM) 24 and random access memory (RAM) 25 .
- ROM read only memory
- RAM random access memory
- the personal computer 20 further includes a hard disk drive 27 , a magnetic disk drive 28 , e.g., to read from or write to a removable disk 29 , and an optical disk drive 30 , e.g., for reading a CD-ROM disk 31 or to read from or write to other optical media.
- the hard disk drive 27 , magnetic disk drive 28 , and optical disk drive 30 are connected to the system bus 23 by a hard disk drive interface 32 , a magnetic disk drive interface 33 , and an optical drive interface 34 , respectively.
- the drives and their associated computer-readable media provide nonvolatile storage for the personal computer 20 .
- computer-readable media refers to a hard disk, a removable magnetic disk and a CD-ROM disk
- other types of media which are readable by a computer such as magnetic cassettes, flash memory cards, digital video disks, Bernoulli cartridges, and the like, may also be used in the exemplary operating environment.
- a number of program modules may be stored in the drives and RAM 25 , including an operating system 35 , one or more application programs 36 , other program modules, such as an installer application 201 in accordance with an exemplary embodiment of the present invention, and program data, such as an installer registry 202 associated with the installer application 201 .
- the operating system 35 may include a system registry 39 .
- the invention may reside within the installer application 201 and the installer registry 202 .
- a user may enter commands and information into the personal computer 20 through a keyboard 40 and pointing device, such as a mouse 42 .
- Other input devices may include a microphone, joystick, game pad, satellite dish, scanner, or the like.
- serial port interface 46 that is coupled to the system bus, but may be connected by other interfaces, such as a game port or a universal serial bus (USB).
- a monitor 47 or other type of display device is also connected to the system bus 23 via an interface, such as a video adapter 48 .
- personal computers typically include other peripheral output devices (not shown), such as speakers or printers.
- the personal computer 20 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 49 .
- the remote computer 49 may be a server, a router, a peer device or other common network node, and typically includes many or all of the elements described relative to the personal computer 20 , although only a memory storage device 50 has been illustrated in FIG. 1.
- the logical connections depicted in FIG. 1 include a local area network (LAN) 51 and a wide area network (WAN) 52 .
- LAN local area network
- WAN wide area network
- the personal computer 20 When used in a LAN networking environment, the personal computer 20 is connected to the LAN 51 through a network interface 53 .
- the personal computer 20 When used in a WAN networking environment, the personal computer 20 typically includes a modem 54 or other means for establishing communications over the WAN 52 , such as the Internet.
- the modem 54 which may be internal or external, is connected to the system bus 23 via the serial port interface 46 .
- program modules depicted relative to the personal computer 20 may be stored in the remote memory storage device 50 . It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used.
- the installer application 201 recognizes three principal elements: products, features, and components.
- the installer application 201 is also described in co-pending application Ser. No.______, entitled “Use of Relational Databases for Software Installation” which was filed on the same day and assigned to the same assignee as the present application and is incorporated herein be reference.
- a “product” represents a single, entire application program, such as the Microsoft Office application program marketed by Microsoft Corporation of Redmond, Wash. Each product has a globally unique identifier (“GUID”) known as a Product Code which allows products to be distinguished. Each product is made up of one or more features.
- GUID globally unique identifier
- a “feature” is a granular piece of the product that a user may choose to install or execute.
- Features typically correspond roughly to the functional features of the product itself, such as a “Proofing Tools” feature or a “Word” feature.
- Each feature is essentially a grouping of components and may also include other features.
- Features need not be globally unique, and therefore may be identified by any appropriate means, such as with a textual feature identifier.
- a “component” is a collection of resources, such as program files or registry keys, that are all installed or uninstalled as a unit. Components are the building blocks of the product that are not exposed to the user.
- a resource such as a program file or a registry key, may be part of only one component. Two components may not share the same resource whether they are part of the same product or parts of different products. Each component has a GUID known as a Component Code.
- One resource within the component is designated as a “key file.”
- the key file may be any resource, such as a program file or registry key, within the component.
- FIG. 2 is a functional block diagram of a computer environment making use of an installer application 201 constructed in accordance with an exemplary embodiment of the present invention.
- a computer is illustrated, such as conventional personal computer 20 , including the installer application 201 , an installer registry 202 , an operating system 35 , a hard-disk drive 205 , a “shortcut” 207 , and an executing application 208 . Each of those items is described and discussed in greater detail below.
- a package file 213 and a source 215 may reside on a CD-ROM disk 31 accessible to the computer 20 via an optical disk drive 30 and over transmission path 221 .
- the package file 213 and the source 215 may also exist in any other location accessible by the computer 20 .
- the package file 213 and the source 215 are discussed in further detail below.
- the functionality and construction of the installer application 201 is best described by example, through the installation and execution of a product.
- a user initiates the installation of the product, such as the Microsoft Office application program. Initiating the installation may constitute the act of inserting CD-ROM disk 31 in optical disk drive 30 , or the act of executing a remote startup script over a network connection, or any other means of initiating the installation.
- the installer application 201 assumes control of processing.
- the installer application 201 begins the installation by reading the package file 213 into memory, such as RAM 25 .
- the package file 213 is unique to the product and is essentially a database which describes, among other things, the relationships between the features, components, and resources of the product.
- the package file 213 may include the unique identifiers assigned to each of the features and components of the product.
- the installer application 201 reads the package file 213 and uses the information stored within to determine the installation operations that must be performed for the product. For instance, the installer application 201 may display a dialog box which presents the user with the option of selecting which features of the product to install. The user may be presented with the option of selecting a “Word” feature, an “Excel” feature, and a “Proofing Tools” feature. The user may then select which features to install to the computer 20 . As discussed above, a feature is a grouping of components, and the components identify the actual resources to be installed to the computer 20 . Accordingly, once the user has selected the desired features of the product, the installer application 201 resolves those features into a listing of components to be installed.
- the source 215 contains the actual resources associated with the components.
- the source 215 may also include a reference table to identify the associations between the resources and the components. Those components making up the selected features are copied from the source 215 to an appropriate location on the computer 20 , such as to the hard-disk drive 205 or to a system registry 39 maintained by the operating system 35 .
- a component is a collection of resources, such as program files, shortcuts, or registry keys.
- the phrase “reading the component” may actually refer to reading the resources associated with the component.
- the phrase “writing the component” may refer to writing the resources associated with the component.
- this discussion may use the terms reading, writing, or copying components interchangeably with performing those actions on the underlying resources.
- the appropriate location for a component on the computer 20 may depend upon the type of resources associated with the component. For instance, if the component includes program files, the component may be stored in the file system of the hard-disk drive 205 . However, if the component includes registry keys, the component may be stored in the system registry 39 . In addition, a component may include both program files and registry keys, in which case program files are stored in the file system of the hard-disk drive 205 , and the registry keys are stored in the system registry 39 .
- the installer application 201 will write the program files of components associated with that feature to that particular location.
- the installer application 201 creates an entry in the installer registry 202 corresponding to the component.
- the entry includes a “keypath” for the component, and an identifier for the component, termed a “token.”
- the token includes the following arguments: the Product Code of the product installing the component, the feature identifier of the feature containing the component, and the Component Code of the component.
- tokens include more or fewer arguments.
- token refers to any identifier capable of uniquely distinguishing one component from other components, or one feature from other features.
- the keypath may be a path in the file system where the component is actually stored. More precisely, the keypath to a component may be the path to the component's key file.
- the product installed may include a “Word Feature” having a “Word Executable Component.”
- the Word Executable Component may have the key file “word.exe” 230 .
- the Word Feature may also include a “Proofing Tools Feature,” which is actually a sub-feature. As mentioned above, a feature may include subfeatures.
- the Proofing Tools Feature may include a “Spelling Component.”
- the Spelling Component may have the key file “speller.exe” 233 .
- the Word Executable Component may be installed to the location on the hard-disk drive 205 identified by the path “C: ⁇ Programs ⁇ Office ⁇ Word ⁇ .” Accordingly, the word.exe 230 key file is written to that location, and an entry in the installer registry 202 includes a token 212 identifying the Word Executable Component and the keypath 214 to the word.exe 230 key file.
- the Spelling Component may be written to the path “C: ⁇ Programs ⁇ Office ⁇ Word ⁇ Proofing Tools ⁇ ,” and an entry in the installer registry 202 may be created with a token 216 identifying the Spelling Component, and a keypath 218 to the speller.exe 233 key file. It should be noted that the keypath 218 actually identifies the location of the speller.exe 233 key file, which corresponds to the location of the Spelling Component.
- the entry in the installer registry 202 may also include a usage counter (not shown) to identify the number of products requiring a component. In that case, if more than one product requiring a component is installed, the usage counter may prevent the component from being deleted if only one such product is uninstalled.
- the installer application 201 continues with the installation process until all of the components making up the selected features are written to the appropriate locations on the computer 20 .
- installation is complete and the installer registry 202 is populated with an entry for each installed component.
- Each entry includes an identifier for the component (the token) and a keypath identifying the location at which the component is stored.
- the installer application 201 installed the features of the product selected by the user at installation.
- the components making up those selected features were written to appropriate locations on the computer 20 .
- a Word Executable Component and a Speller Component were written to the file system of the hard-disk drive 205 .
- installing those components may include writing the key files of those components to a keypath location in the file system of the hard-disk drive 205 .
- the shortcut 207 is an operating system 35 service which allows indirect access to a resource stored on the hard-disk drive 205 .
- a shortcut is sometimes referred to as an “alias.”
- the shortcut 207 is generally presented to the user as an icon or file which, when activated, launches an executable file associated with the shortcut 207 .
- the shortcut 207 is associated with the Word Executable Component such that activating the shortcut 207 causes the operating system 35 to launch the key file associated with the Word Executable Component, in this case the word.exe 230 executable file.
- the operating system 35 When the user activates the shortcut 207 , the operating system 35 first creates a shell or process within which the executable file will execute. In accordance with the disclosed embodiment, activating the shortcut 207 causes the operating system 35 to query the installer application 201 for the keypath to the executable file associated with the shortcut 207 , in this case the keypath 214 to the word.exe 230 executable file. The operating system 35 may query for the keypath 214 by calling the installer application's 201 “Provide Component” call with a parameter identifying the Word Executable Component. In the disclosed embodiment, the parameter may be a token which includes a Component Code to uniquely identify the Word Executable Component.
- the Component Code is a GUID to distinguish the Word Executable Component from other components, such as the Spelling Component.
- the token may also include a Product Code to uniquely identify the product as the Microsoft Office application program.
- the Product Code may likewise be a GUID to distinguish the Microsoft Office product from other products.
- the token may include a feature identifier to identify the Word Feature.
- the feature identifier may be a GUID or it may be a textual identifier associated with the feature.
- One example of such a token may take the following form:
- the installer application 201 queries the installer registry 202 for the keypath 214 associated with the token 212 .
- the installer application 201 verifies that the keypath 214 exists in its specified location, and if so, returns the keypath 214 to the shortcut 207 , which in turn prompts the operating system 35 to execute the word.exe 230 key file at the location identified by the keypath 214 .
- the word.exe 230 key file is stored on the hard-disk drive 205 under the folder “C: ⁇ Programs ⁇ Office ⁇ Word ⁇ .”
- the operating system 35 executes the word.exe 230 key file from the location identified by the keypath 214 .
- the word.exe 230 key file then assumes control of the shell created by the operating system 35 .
- the word.exe 230 key file is executing, it is referred to as the “Word application” 208 .
- the Word application 208 may then perform a startup procedure and continue loading. For instance, the Word application 208 may issue an “Enum Features” call to the installer application which returns all of the available features at once. Alternatively, the Word application 208 may issue a series of “Query Feature State” calls to the installer application 201 to individually identify which features of the Word application 208 are installed.
- the installer application 201 may query the installer registry 202 to identify whether a particular feature of the Word application 208 is installed, and return that information to the word application 208 .
- the Word application 208 may perform such calls in order to populate a menu bar or toolbar of the Word application 208 . Once the startup procedure is complete, the Word application 208 is available for use by the user.
- the user may select a particular feature of the Word application 208 for activation. For instance, the user may select a “spell check” option from the menu bar or toolbar of the Word application 208 .
- the Word application 208 may query the installer application 201 for the keypath to the component or components necessary to support the feature. For instance, in the disclosed example, a Spelling Component may be necessary to support the feature associated with the “spell check” option of the Word application 208 . In that case, when the user selects “spell check,” the Word application may pass a “Provide Component” call to the installer application 201 along with a token 216 identifying the Spelling Component.
- the installer application 201 may verify the installed state of the calling feature identified in the token, and provide the keypath to the component identified in the token.
- the key file of the Spelling Component is the speller.exe 233 key file. Consequently, when the installer application 201 receives from the Word application 208 a Provide Component call with a token identifying the Spelling Component, the installer application 201 queries the installer registry 202 for the keypath associated with that token. The installer application 201 then returns the keypath to the Word application 208 , which then instructs the operating system 35 to execute the speller.exe 233 key file at the location identified by the keypath.
- the Speller Component is available to the Word application 208 .
- the word application 208 may query the installer application 201 each time the user attempts to activate another feature, and the installer application 201 returns the keypath for the appropriate component.
- FIG. 3 is a flow chart which, taken in conjunction with FIG. 2, illustrates, in general, a process performed by the installer application 201 of the disclosed embodiment to verify the existence of the installed resources of an application program such, as the Word application 208 , and to install any inadvertently missing resources.
- the process starts at beginning step 300 where the Word application 208 is installed to the computer 20 .
- the features and components of the Word application 208 are installed to appropriate locations on the computer 20 .
- the word.exe 230 key file of the Word Executable Component is installed at the location identified by the keypath “C: ⁇ Programs ⁇ Office ⁇ Word ⁇ .” That keypath 214 is written to an entry in the installer registry 202 and associated with the token 212 corresponding to the Word Executable Component.
- the speller.exe 233 key file of the Spelling Component is installed at the location identified by the keypath “C: ⁇ Programs ⁇ Office ⁇ Word ⁇ Proofing Tools ⁇ .” That keypath 218 is written to an entry in the installer registry 202 and associated with the token 216 corresponding to the Spelling Component. Processing continues at step 301 , where the Word application 208 is executing in the RAM 25 of the computer 20 .
- the Word application 208 is executing in memory.
- features may provide functionality to the Word application 208 .
- One such feature may be the Proofing Tools Feature. Included in that feature is the Spelling Component, which provides the user with the ability to check the spelling of words in a document.
- the Word application 208 may attempt to launch the Spelling Component to service the user's selection. If so, then processing continues to step 303 .
- the Word application 208 begins to launch the Spelling Component by querying the installer application 201 for the keypath 218 to the Spelling Component.
- the query may take the form of an API call to the installer application 201 , as discussed in greater detail below with respect to FIG. 4.
- the Word application 208 includes, as a parameter of the call, the token 216 identifying the Spelling Component. Processing then continues at step 305 .
- the installer application 201 accesses the installer registry 202 to retrieve the keypath 218 associated with the token 216 identifying the Spelling Component.
- the installer application 201 has retrieved the keypath 218 to the Spelling Component, processing continues at decision block 307 .
- the installer application 201 verifies the existence of the Spelling Component at the location defined by the keypath 218 .
- Verifying the existence of the Spelling Component may include querying the operating system 35 for the existence of the speller.exe 233 key file at the location identified by the keypath 218 . Verifying the existence of the speller.exe 233 key file prior to returning the keypath 218 to the Word application 208 helps to ensure that the Word application 208 will not receive an error when attempting to launch the Spelling Component. If the speller.exe 233 key file is not missing, processing continues at step 311 . If the speller.exe 233 key file is missing or otherwise unavailable, processing continues at step 309 .
- the installer application 201 initiates the installation of the Spelling Component.
- installing the Spelling Component may include re-installing the entire feature in which the Spelling Component is contained.
- the installation of the Spelling Component may be performed automatically, without user intervention or knowledge.
- the query sent to the installer application at step 303 may include a parameter indicating that the installer application 201 should not automatically install any missing components, but rather suspend processing and allow the Word application 208 to prompt the user for instructions.
- processing continues at step 311 .
- step 311 the missing Spelling Component has been installed and its existence verified, and the installer application 201 returns the keypath 218 to the Word application 208 .
- the Word application may then proceed to launch the Spelling Component in the ordinary manner, such as by prompting the operating system 35 to execute the speller.exe 233 key file at the location identified by the keypath 218 .
- FIG. 4 is a flow chart which, taken in conjunction with FIG. 2, illustrates, in more detail, a process performed by the installer application 201 of the disclosed embodiment to verify the existence of the installed resources of an application program, such as the Word application 208 , and to install any inadvertently missing resources.
- the process starts at beginning step 400 where the Word application 208 is installed substantially as described above with respect to FIG. 3. Processing begins at step 401 .
- step 401 the Word application 208 is executing in memory and the user selects a “spell check” option from the menu, causing the Word application 208 to attempt to launch the Spelling Component. Once the user selection is performed, processing continues at step 403 .
- the Word application 208 attempts to launch the Spelling Component by issuing a call to the installer application 201 to return the keypath 218 to the speller.exe 233 key file associated with the Spelling Component.
- the call may take the form of a “Provide Component” call issued to the installer application 201 and having the token 216 as a parameter.
- the token 216 may include the Product Code, the feature identifier, and the Component Code for the Spelling Component in a format which may be interpreted by the installer application 201 .
- the Provide Component call may be interpreted by the installer application 201 as three separate calls.
- the installer application 201 may respond to the Provide Component call as if a “Use Feature” call, a “Configure Feature” call, and a “Get Component Path” call had been issued.
- Each of those calls is briefly described below, and the following discussion will assume that each of the three separate calls had been issued when in fact only the Provide Component call was issued.
- a single API call may be interpreted as multiple calls, and the installer application 201 may respond as if each of the multiple calls had been issued independently. Processing continues at step 405 .
- the installer application 201 receives the Provide Component call from the Word application 208 and executes the first portion, the Use Feature call.
- the installer application 201 responds to the Use Feature call by verifying the installed state of the Spelling Component identified by the token 216 .
- the installer application 201 may verify the installed state of each component of the feature identified by the token 216 .
- the installer application 201 may attempt to retrieve the keypath 218 associated with the token 216 from the installer registry 202 . If the keypath 218 exists in the installer registry 202 , then the Spelling Component has been installed, and processing proceeds to decision block 412 .
- the installer application 201 continues to operate on the Provide Component call by responding to the second portion, the Configure Feature call.
- the installer application 201 may force the installed state of the Spelling Component.
- the installer application 201 initiates the installation of the Spelling Component.
- the installation of the Spelling Component may be automatically performed by the installer application 201 in a background process while the Word application 208 waits.
- the installer application 201 may conduct negotiations with the Word application 208 to determine whether to automatically install the missing component, or to prompt the user for additional input, or some other method of handling the error.
- the installer application 201 may be unable to install a single component, in which case the installer application 201 may initiate the installation of a feature containing the Spelling Component.
- processing proceeds to decision block 412 .
- the installer application 201 continues processing the Configure Feature call by verifying the existence of the speller.exe 233 key file associated with the Spelling Component.
- the installer application 201 may query the operating system 35 to verify that the speller.exe 233 key file exists at the location identified by the keypath 218 .
- the installer application 201 may perform conventional operating system 35 queries to verify the existence of the speller.exe 233 key file at the keypath 218 location. If the speller.exe 233 key file does not exist at the location identified by the keypath 218 , processing returns to step 410 where the installer application 201 initiates the installation of the Spelling Component. If at step 412 the existence of the speller.exe 233 key file is verified, processing continues at step 414 .
- the installer application 201 may perform a simple look-up in the installer registry 202 for the keypath 218 associated with the token 216 .
- the installer application 201 may merely look up, in the installer registry 202 , the token 216 associated with the speller.exe 233 key file and retrieve the keypath 218 associated with that token 216 .
- processing continues at step 416 .
- the installer application 201 returns the keypath 218 to the calling application.
- the calling application is the Word application 208 , which then instructs the operating system to launch the speller.exe 233 key file at the location identified by the keypath 218 .
- the application program is able to continue, following a repair pursuant to the present invention, as though the repair had not been needed. Accordingly, the knowledge required of the user concerning how to run set-up programs or the like to fix the broken feature is greatly reduced.
- the Word application 208 passes the token 216 identifying the Spelling Component to the installer application 201 .
- a “descriptor” may be passed to the installer application 201 rather than a token. This may occur, for instance, when the shortcut 207 is utilized. Because the shortcut 207 serves only the single purpose of launching its associated executable file, the shortcut 207 may include a descriptor to identify the component rather than the token 212 . The descriptor may contain the same information as the token 212 , except that the descriptor is formatted so that the installer application 201 need not parse the individual identifiers contained within the token 212 . Accordingly, the descriptor allows the installer application 201 to more easily locate the keypath 214 associated with the token 212 within the installer registry 202 .
- the shortcut 207 may issue a Provide Component From Descriptor call to the installer application 201 including the descriptor as a parameter.
- the Provide Component From Descriptor call of this embodiment differs from the Provide Component call only in that a descriptor is passed rather than a token.
- the installer application 201 will function as described above, except that the descriptor takes the place of the separate tokens supplied to Provide Component.
Abstract
A system and method for providing the ability to repair an installed application program if a resource needed by the application program becomes inadvertently deleted or otherwise unavailable to the application program. Briefly described, the present invention makes possible a system for verifying the existence of a resource needed to support a feature of the application program. The system may respond to a request from the application program to make use of the resource by first verifying the existence of the resource at an expected location. If the resource does not exist at the expected location, rather than returning an error to the application program, the system initiates an installation procedure for restoring the missing resource without interrupting the normal operation of the application program.
Description
- CROSS-REFERENCE TO OTHER APPLICATIONS
- This application is related to the following applications, all of which are filed on the same day and assigned to the same assignee as the present application: “Use of Relational Databases for Software Installation”—Ser. No.______; “Method and System for Restoring a Computer to its Original State After an Unsuccessful Installation Attempt”—Ser. No.______; “A Method for Categorizing and Installing Selected Software Components”—Ser. No.______; “System and Method for Managing Locations of Software Components Via a Source List”—Ser. No.______; “Method for Optimizing the Installation of a Software product onto a Target Computer System”—Ser. No.______; “Software Installation and Validation Using Custom Actions”—Ser. No.______; “Internal Database Validation”—Ser. No.______; “Management of Non-persistent Data in a Persistent Database”—Ser. No.______; “Method and System for Advertising Applications”—Ser. No.______; “Software Implementation Installer Mechanism”—Ser. No.______;
- The present invention generally relates to computer software application programs for providing to other installed application programs the ability to repair missing program files. More particularly, the present invention relates to an application program or software module for verifying the existence of a program file at an expected location, and for installing the program file to that expected location if the program file is missing.
- Before use, an application program must typically be installed to a computer system. The installation procedure generally involves copying executable and data files (the “program files”) related to the application program from a source location to an installed location on the computer system. Typically, the source location is an installation disk or location on a network drive accessible by the computer system. Often the program files are stored in a compressed format to conserve storage space.
- Today, application programs use a variety of installation technologies to copy the program files from the source location to the computer system. Most often, an application program will include a special application program (the “set-up program”) for administering and performing the installation procedure. Generally, the set-up program is unique to the application program and is customized to install the program files from the source location to pre-configured locations on the computer system. Often the user is provided the option of redirecting the installation of the program files to other locations on the computer system.
- The typical set-up program not only installs the program files to the computer system, but also creates entries in a central registration database, such as a system registration database (the “system registry”), which identify the locations of the program files on the computer system. The location may be identified by a “path” to a particular directory or folder of the computer system in which reside the program files. The entries in the system registry are typically maintained by the application program itself. While executing, the application program generally queries the system registry for the path to an installed program file, and then accesses the installed program file at the path identified in the system registry. Any changes to the entries in the system registry are governed by the application program.
- Current installation technologies perform satisfactorily if the program files are never inadvertently deleted or moved from their installed locations. As mentioned, the start-up program creates the entries in the system registry which define the path to the installed program files. Installation technologies today do not include a mechanism for policing the installed state of the program files after installation. In addition, current installation technologies do not include the ability to verify the existence of a program file after it has been installed, for instance at run-time of the application program.
- One problem plaguing software developers is the over-zealous computer user. Often, the over-zealous user, in an attempt to minimize disk space usage on the computer system, may delete a program file with which the user is unfamiliar. Likewise, the over-zealous user may attempt to rearrange the file structure of the computer system by moving the program files after installation. Unfortunately, existing installation technologies do not include the ability to identify and repair the situation where a program file is expected to be at an installed location but is no longer at that location.
- Currently, when an application program queries the system registry for the path to a program file, the operating system performs a simple table look-up in the system registry and returns the path to the program file. However, no verification is performed to ensure that the program file still exists at the path originally written by the set-up program. The operating system acts as a simple database look-up engine. If a program file is inadvertently deleted, it will go undetected until needed. Consequently, the application program may attempt to launch or access the program file at the path and receives an error message indicating that the program file is unavailable.
- In such a situation, the application program is typically unable to continue functioning properly -and may generate an error prompting the user to execute the set-up program again to repair the missing program file. In that case, the user is forced to terminate the current process and handle the error before continuing. The normal operation of the application program is interrupted, and the user may be greatly inconvenienced until the dilemma of the missing program file is resolved.
- Thus, existing installation technologies fail to support the ability to repair an application program if a requested program file becomes deleted or otherwise unavailable at the program file's installed location. Accordingly, there is a need in the art for a system and method for installing an application program which provides the ability to efficiently resolve the situation where an installed program file becomes inadvertently unavailable to the application program. In addition, there is a need in the art for a system and method for verifying the existence of an installed program file upon an indication by the application program that the program file is needed. Moreover, there is a need in the art for a system and method for providing an application program with the ability to install a missing program file in a background process with does not terminate the application pro program's current process.
- The present invention meets the above-described needs by providing the ability to identify a missing program file necessary to an application program, and to install the missing program file without interrupting the operation of the application program. The present invention achieves that result by receiving an indication that a resource, such as a program file or registry key, is needed by the application program. The indication may take the form of a request for the location of the needed resource. The present invention may maintain a listing of the locations of the resources needed by the application. In response to the indication, the present invention verifies the existence of the needed resource prior to the application attempting to execute the resource. The verification may be achieved by querying for the existence of the resource at the location maintained in the listing. If the resource does not exist, the present invention initiates the installation of the resource. The installation may occur in a background process without interrupting the application program, or by prompting the application program for instructions whether to install the missing resource.
- In one embodiment, when an application program is installed, an installer application stores information in a registration database (the “installer registry”) related to the locations of the application program's resources, such as program files and registry keys. The installer registry may be a portion of the general system registry, or the installer registry may be a stand-alone registration database. A resource identifier may be assigned to each resource to uniquely identify that resource from other resources. Within the installer registry, the location of each resource may be associated with the resource identifier for that resource.
- To invoke a particular “feature,” the application program indicates to the installer application which feature to invoke by passing to the installer application a resource identifier for a resource needed by that feature. A “feature” is a granular piece of the product that a user may choose to install or execute. Features typically correspond roughly to the functional features of the program itself, such as a proofing tools feature or a word processing feature. Invoking the feature may constitute selecting an option from the menu, querying the installer application to identify which features of the application program are installed, or other methods for invoking the feature as will be understood by those skilled in the art.
- The resource identifier passed to the installer application may take the form of a “token,” which may include one or more of the following arguments: an identifier for the application program (the “Product Code”), an identifier for the invoked feature (the “feature identifier”), or an identifier for a “component” related to the resource needed by the feature (the “Component Code”). A “component” is a collection of resources,- such as files, shortcuts, or registry keys, that are all installed or un-installed as a unit. Components are the building blocks of the program that are not exposed to the user. Alternatively, the resource identifier may take the form of a “descriptor,” which may include similar information to the token, but formatted to be more easily interpreted by the installer application.
- Again in one embodiment, passing the resource identifier may include issuing an application programming interface (“API”) call, with the resource identifier as a parameter, to the installer application in the form of a request for the location of the resource identified by the resource identifier. In response to receiving the API call, the installer application first accesses the installer registry and retrieves the location of the resource associated with the resource identifier. The installer application then verifies the existence of the resource at that location. If the resource exists at the location, the installer application returns the location to the application program. The application program then accesses the resource at the location. However, if the installer application fails to verify the existence of the resource at the location, the installer application initiates a repair procedure.
- The repair procedure may take two forms. A “brute force” repair procedure may be used, generally if the application program is an operating system function or service, such as a shortcut maintained by the operating system. In that case, the installer application may automatically execute an installation procedure to install the resource. Installing the resource may include prompting a user for a “source” which contains the program files for the application program, retrieving the program files from the source, and writing the program files and other resources to the appropriate location. Processing may then return to the application program by passing the location of the newly-installed resource to the application.
- Another repair procedure may also be invoked, generally for conventional application programs. Rather than automatically executing the installation procedure, the installer application may return a message to the application program that the resource does not exist at the expected location. The application program may then choose from several alternatives to handle the message. For instance, the application program may prompt the user to choose whether to install the missing resource, or the application program may be pre-configured to automatically execute the installation procedure for certain missing resources. If the choice is made to install the missing resource, the application program indicates that choice to the installer application. The installer application then executes the installation procedure, in the same fashion as that described above, and the missing resource is installed.
- In that manner, if a resource becomes deleted or otherwise not available at an expected location, rather than the application program being forced to quit, or execute with unstable characteristics, the absence of the missing resource is detected, and it may be installed either automatically (without user or application program input) or only if desired.
- FIG. 1 is a block diagram of a conventional personal computer that provides a portion of the operating environment for an exemplary embodiment of the present invention.
- FIG. 2 is a functional block diagram of the conventional personal computer of FIG. 1, including an installer application constructed in accordance with an exemplary embodiment of the present invention.
- FIG. 3 is a logical flow diagram depicting a process for verifying the existence of installed resources, and for installing any inadvertently missing resources in accordance with an exemplary embodiment of the present invention.
- FIG. 4 is a logical flow diagram depicting, in greater detail, a process for verifying the existence of installed resources, and for installing any inadvertently missing resources in accordance with an exemplary embodiment of the present invention.
- The present invention is directed to a system and method for providing the ability to repair an installed application program if a resource needed by the application program becomes inadvertently deleted or otherwise unavailable to the application program. Briefly described, the present invention makes possible a system for verifying the existence of a resource needed to support a feature of the application program. The system may respond to a request from the application program to make use of the resource by first verifying the existence of the resource at an expected location. If the resource does not exist at the expected location, rather than returning an error to the application program, the system initiates an installation procedure for restoring the missing resource without interrupting the normal operation of the application program.
- FIG. 1 and the following discussion are intended to provide a brief, general description of a suitable computing environment in which the invention may be implemented. While the invention will be described in the general context of an application program that runs on an operating system in conjunction with a personal computer, those skilled in the art will recognize that the invention also may be implemented in combination with other program modules. Generally, program modules include routines, programs, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Moreover, those skilled in the art will appreciate that the invention may be practiced with other computer system configurations, including hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like. The invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
- With reference to FIG. 1, an exemplary system for implementing the invention includes a conventional
personal computer 20, including aprocessing unit 21, asystem memory 22, and asystem bus 23 that couples the system memory to theprocessing unit 21. Thesystem memory 22 includes read only memory (ROM) 24 and random access memory (RAM) 25. A basic input/output system 26 (BIOS), containing the basic routines that help to transfer information between elements within thepersonal computer 20, such as during start-up, is stored in ROM 24. Thepersonal computer 20 further includes ahard disk drive 27, amagnetic disk drive 28, e.g., to read from or write to aremovable disk 29, and anoptical disk drive 30, e.g., for reading a CD-ROM disk 31 or to read from or write to other optical media. Thehard disk drive 27,magnetic disk drive 28, andoptical disk drive 30 are connected to thesystem bus 23 by a harddisk drive interface 32, a magneticdisk drive interface 33, and anoptical drive interface 34, respectively. The drives and their associated computer-readable media provide nonvolatile storage for thepersonal computer 20. Although the description of computer-readable media above refers to a hard disk, a removable magnetic disk and a CD-ROM disk, it should be appreciated by those skilled in the art that other types of media which are readable by a computer, such as magnetic cassettes, flash memory cards, digital video disks, Bernoulli cartridges, and the like, may also be used in the exemplary operating environment. - A number of program modules may be stored in the drives and
RAM 25, including anoperating system 35, one ormore application programs 36, other program modules, such as aninstaller application 201 in accordance with an exemplary embodiment of the present invention, and program data, such as aninstaller registry 202 associated with theinstaller application 201. Theoperating system 35 may include asystem registry 39. In this embodiment, the invention may reside within theinstaller application 201 and theinstaller registry 202. A user may enter commands and information into thepersonal computer 20 through akeyboard 40 and pointing device, such as a mouse 42. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to theprocessing unit 21 through aserial port interface 46 that is coupled to the system bus, but may be connected by other interfaces, such as a game port or a universal serial bus (USB). Amonitor 47 or other type of display device is also connected to thesystem bus 23 via an interface, such as avideo adapter 48. In addition to the monitor, personal computers typically include other peripheral output devices (not shown), such as speakers or printers. - The
personal computer 20 may operate in a networked environment using logical connections to one or more remote computers, such as aremote computer 49. Theremote computer 49 may be a server, a router, a peer device or other common network node, and typically includes many or all of the elements described relative to thepersonal computer 20, although only amemory storage device 50 has been illustrated in FIG. 1. The logical connections depicted in FIG. 1 include a local area network (LAN) 51 and a wide area network (WAN) 52. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet. - When used in a LAN networking environment, the
personal computer 20 is connected to theLAN 51 through anetwork interface 53. When used in a WAN networking environment, thepersonal computer 20 typically includes amodem 54 or other means for establishing communications over theWAN 52, such as the Internet. Themodem 54, which may be internal or external, is connected to thesystem bus 23 via theserial port interface 46. In a networked environment, program modules depicted relative to thepersonal computer 20, or portions thereof, may be stored in the remotememory storage device 50. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used. - Before discussing the details of the
installer application 201, a brief discussion of terminology is needed. In accordance with an exemplary embodiment of the invention, theinstaller application 201 recognizes three principal elements: products, features, and components. Theinstaller application 201 is also described in co-pending application Ser. No.______, entitled “Use of Relational Databases for Software Installation” which was filed on the same day and assigned to the same assignee as the present application and is incorporated herein be reference. A “product” represents a single, entire application program, such as the Microsoft Office application program marketed by Microsoft Corporation of Redmond, Wash. Each product has a globally unique identifier (“GUID”) known as a Product Code which allows products to be distinguished. Each product is made up of one or more features. A “feature” is a granular piece of the product that a user may choose to install or execute. Features typically correspond roughly to the functional features of the product itself, such as a “Proofing Tools” feature or a “Word” feature. Each feature is essentially a grouping of components and may also include other features. Features need not be globally unique, and therefore may be identified by any appropriate means, such as with a textual feature identifier. - A “component” is a collection of resources, such as program files or registry keys, that are all installed or uninstalled as a unit. Components are the building blocks of the product that are not exposed to the user. A resource, such as a program file or a registry key, may be part of only one component. Two components may not share the same resource whether they are part of the same product or parts of different products. Each component has a GUID known as a Component Code. One resource within the component is designated as a “key file.” The key file may be any resource, such as a program file or registry key, within the component.
- FIG. 2 is a functional block diagram of a computer environment making use of an
installer application 201 constructed in accordance with an exemplary embodiment of the present invention. A computer is illustrated, such as conventionalpersonal computer 20, including theinstaller application 201, aninstaller registry 202, anoperating system 35, a hard-disk drive 205, a “shortcut” 207, and an executingapplication 208. Each of those items is described and discussed in greater detail below. - Also illustrated are a
package file 213 and asource 215. Thepackage file 213 and thesource 215 may reside on a CD-ROM disk 31 accessible to thecomputer 20 via anoptical disk drive 30 and overtransmission path 221. Thepackage file 213 and thesource 215 may also exist in any other location accessible by thecomputer 20. Thepackage file 213 and thesource 215 are discussed in further detail below. The functionality and construction of theinstaller application 201 is best described by example, through the installation and execution of a product. - To begin the example, a user initiates the installation of the product, such as the Microsoft Office application program. Initiating the installation may constitute the act of inserting CD-
ROM disk 31 inoptical disk drive 30, or the act of executing a remote startup script over a network connection, or any other means of initiating the installation. Once the installation is initiated, theinstaller application 201 assumes control of processing. - The
installer application 201 begins the installation by reading thepackage file 213 into memory, such asRAM 25. Thepackage file 213 is unique to the product and is essentially a database which describes, among other things, the relationships between the features, components, and resources of the product. Thepackage file 213 may include the unique identifiers assigned to each of the features and components of the product. - The
installer application 201 reads thepackage file 213 and uses the information stored within to determine the installation operations that must be performed for the product. For instance, theinstaller application 201 may display a dialog box which presents the user with the option of selecting which features of the product to install. The user may be presented with the option of selecting a “Word” feature, an “Excel” feature, and a “Proofing Tools” feature. The user may then select which features to install to thecomputer 20. As discussed above, a feature is a grouping of components, and the components identify the actual resources to be installed to thecomputer 20. Accordingly, once the user has selected the desired features of the product, theinstaller application 201 resolves those features into a listing of components to be installed. - The
source 215 contains the actual resources associated with the components. Thesource 215 may also include a reference table to identify the associations between the resources and the components. Those components making up the selected features are copied from thesource 215 to an appropriate location on thecomputer 20, such as to the hard-disk drive 205 or to asystem registry 39 maintained by theoperating system 35. As mentioned above, a component is a collection of resources, such as program files, shortcuts, or registry keys. Those skilled in the art will recognize that the phrase “reading the component” may actually refer to reading the resources associated with the component. Likewise, the phrase “writing the component” may refer to writing the resources associated with the component. However, for simplicity only, this discussion may use the terms reading, writing, or copying components interchangeably with performing those actions on the underlying resources. - The appropriate location for a component on the
computer 20 may depend upon the type of resources associated with the component. For instance, if the component includes program files, the component may be stored in the file system of the hard-disk drive 205. However, if the component includes registry keys, the component may be stored in thesystem registry 39. In addition, a component may include both program files and registry keys, in which case program files are stored in the file system of the hard-disk drive 205, and the registry keys are stored in thesystem registry 39. - If the user identifies a particular location within the file system of the hard-
disk drive 205 for a feature, then theinstaller application 201 will write the program files of components associated with that feature to that particular location. - When a component is written to the appropriate location, the
installer application 201 creates an entry in theinstaller registry 202 corresponding to the component. The entry includes a “keypath” for the component, and an identifier for the component, termed a “token.” In the disclosed embodiment, the token includes the following arguments: the Product Code of the product installing the component, the feature identifier of the feature containing the component, and the Component Code of the component. Those skilled in the art will appreciate that systems may be designed in which tokens include more or fewer arguments. The term “token” as used herein refers to any identifier capable of uniquely distinguishing one component from other components, or one feature from other features. - Also in the disclosed embodiment, the keypath may be a path in the file system where the component is actually stored. More precisely, the keypath to a component may be the path to the component's key file. For instance, in the disclosed example, the product installed may include a “Word Feature” having a “Word Executable Component.” The Word Executable Component may have the key file “word.exe”230. The Word Feature may also include a “Proofing Tools Feature,” which is actually a sub-feature. As mentioned above, a feature may include subfeatures. The Proofing Tools Feature may include a “Spelling Component.” The Spelling Component may have the key file “speller.exe” 233.
- Continuing with the example, the Word Executable Component may be installed to the location on the hard-
disk drive 205 identified by the path “C:\Programs\Office\Word\.” Accordingly, the word.exe 230 key file is written to that location, and an entry in theinstaller registry 202 includes a token 212 identifying the Word Executable Component and thekeypath 214 to the word.exe 230 key file. In a similar manner, the Spelling Component may be written to the path “C:\Programs\Office\Word\Proofing Tools\,” and an entry in theinstaller registry 202 may be created with a token 216 identifying the Spelling Component, and akeypath 218 to the speller.exe 233 key file. It should be noted that thekeypath 218 actually identifies the location of the speller.exe 233 key file, which corresponds to the location of the Spelling Component. - The entry in the
installer registry 202 may also include a usage counter (not shown) to identify the number of products requiring a component. In that case, if more than one product requiring a component is installed, the usage counter may prevent the component from being deleted if only one such product is uninstalled. - The
installer application 201 continues with the installation process until all of the components making up the selected features are written to the appropriate locations on thecomputer 20. When all of the components are written, installation is complete and theinstaller registry 202 is populated with an entry for each installed component. Each entry includes an identifier for the component (the token) and a keypath identifying the location at which the component is stored. - The following discussion gives an overview of the functionality of the
installer application 201 once the product is installed. To review, theinstaller application 201 installed the features of the product selected by the user at installation. The components making up those selected features were written to appropriate locations on thecomputer 20. For instance, a Word Executable Component and a Speller Component were written to the file system of the hard-disk drive 205. As discussed above, installing those components may include writing the key files of those components to a keypath location in the file system of the hard-disk drive 205. - Also during installation, a
shortcut 207 to the Word Executable Component was created. Theshortcut 207 is anoperating system 35 service which allows indirect access to a resource stored on the hard-disk drive 205. A shortcut is sometimes referred to as an “alias.” Theshortcut 207 is generally presented to the user as an icon or file which, when activated, launches an executable file associated with theshortcut 207. In the disclosed example, theshortcut 207 is associated with the Word Executable Component such that activating theshortcut 207 causes theoperating system 35 to launch the key file associated with the Word Executable Component, in this case the word.exe 230 executable file. - When the user activates the
shortcut 207, theoperating system 35 first creates a shell or process within which the executable file will execute. In accordance with the disclosed embodiment, activating theshortcut 207 causes theoperating system 35 to query theinstaller application 201 for the keypath to the executable file associated with theshortcut 207, in this case thekeypath 214 to the word.exe 230 executable file. The operating system 35may query for thekeypath 214 by calling the installer application's 201 “Provide Component” call with a parameter identifying the Word Executable Component. In the disclosed embodiment, the parameter may be a token which includes a Component Code to uniquely identify the Word Executable Component. The Component Code is a GUID to distinguish the Word Executable Component from other components, such as the Spelling Component. The token may also include a Product Code to uniquely identify the product as the Microsoft Office application program. The Product Code may likewise be a GUID to distinguish the Microsoft Office product from other products. In addition, the token may include a feature identifier to identify the Word Feature. The feature identifier may be a GUID or it may be a textual identifier associated with the feature. One example of such a token may take the following form: - where the phrase “{FC5A4660-479C-11d1-883B-0080C7A271D8}” is the Product Code for the Microsoft Office product, the phrase “Microsoft Word” is the feature identifier for the Word Feature, and the phrase “{DT3E1967-517K-33d1-294G-0060C3A747G4}” is the Component Code for the Word Executable Component.
- In response to the Provide Component call, the
installer application 201 queries theinstaller registry 202 for thekeypath 214 associated with the token 212. Theinstaller application 201 then verifies that thekeypath 214 exists in its specified location, and if so, returns thekeypath 214 to theshortcut 207, which in turn prompts theoperating system 35 to execute the word.exe 230 key file at the location identified by thekeypath 214. As discussed above, the word.exe 230 key file is stored on the hard-disk drive 205 under the folder “C:\Programs\Office\Word\.” - The
operating system 35 executes the word.exe 230 key file from the location identified by thekeypath 214. The word.exe 230 key file then assumes control of the shell created by theoperating system 35. While the word.exe 230 key file is executing, it is referred to as the “Word application” 208. TheWord application 208 may then perform a startup procedure and continue loading. For instance, theWord application 208 may issue an “Enum Features” call to the installer application which returns all of the available features at once. Alternatively, theWord application 208 may issue a series of “Query Feature State” calls to theinstaller application 201 to individually identify which features of theWord application 208 are installed. In response to either call, theinstaller application 201 may query theinstaller registry 202 to identify whether a particular feature of theWord application 208 is installed, and return that information to theword application 208. TheWord application 208 may perform such calls in order to populate a menu bar or toolbar of theWord application 208. Once the startup procedure is complete, theWord application 208 is available for use by the user. - During operation, the user may select a particular feature of the
Word application 208 for activation. For instance, the user may select a “spell check” option from the menu bar or toolbar of theWord application 208. In response to such a selection, theWord application 208 may query theinstaller application 201 for the keypath to the component or components necessary to support the feature. For instance, in the disclosed example, a Spelling Component may be necessary to support the feature associated with the “spell check” option of theWord application 208. In that case, when the user selects “spell check,” the Word application may pass a “Provide Component” call to theinstaller application 201 along with a token 216 identifying the Spelling Component. - In response to the Provide Component call, the
installer application 201 may verify the installed state of the calling feature identified in the token, and provide the keypath to the component identified in the token. In this example, the key file of the Spelling Component is the speller.exe 233 key file. Consequently, when theinstaller application 201 receives from the Word application 208 a Provide Component call with a token identifying the Spelling Component, theinstaller application 201 queries theinstaller registry 202 for the keypath associated with that token. Theinstaller application 201 then returns the keypath to theWord application 208, which then instructs theoperating system 35 to execute the speller.exe 233 key file at the location identified by the keypath. Once theoperating system 35 has launched the speller.exe 233 key file, the Speller Component is available to theWord application 208. In this manner, theword application 208 may query theinstaller application 201 each time the user attempts to activate another feature, and theinstaller application 201 returns the keypath for the appropriate component. - The foregoing has been a general overview of the functionality of an
installer application 201 which may benefit from an exemplary embodiment of the present invention. The discussion will now explain in greater detail the inventive aspect of repairing an application program if a key file is inadvertently deleted or otherwise becomes unavailable to the application program at the keypath location. - FIG. 3 is a flow chart which, taken in conjunction with FIG. 2, illustrates, in general, a process performed by the
installer application 201 of the disclosed embodiment to verify the existence of the installed resources of an application program such, as theWord application 208, and to install any inadvertently missing resources. The process starts at beginningstep 300 where theWord application 208 is installed to thecomputer 20. As discussed above, during the installation process, the features and components of theWord application 208 are installed to appropriate locations on thecomputer 20. For example, the word.exe 230 key file of the Word Executable Component is installed at the location identified by the keypath “C:\Programs\Office\Word\.” Thatkeypath 214 is written to an entry in theinstaller registry 202 and associated with the token 212 corresponding to the Word Executable Component. - In addition, the speller.exe233 key file of the Spelling Component is installed at the location identified by the keypath “C:\Programs\Office\Word\Proofing Tools\.” That
keypath 218 is written to an entry in theinstaller registry 202 and associated with the token 216 corresponding to the Spelling Component. Processing continues atstep 301, where theWord application 208 is executing in theRAM 25 of thecomputer 20. - At
step 301, theWord application 208 is executing in memory. As discussed above, features may provide functionality to theWord application 208. One such feature may be the Proofing Tools Feature. Included in that feature is the Spelling Component, which provides the user with the ability to check the spelling of words in a document. In response to the user selecting a “spell check” option from the menu, theWord application 208 may attempt to launch the Spelling Component to service the user's selection. If so, then processing continues to step 303. - At
step 303, theWord application 208 begins to launch the Spelling Component by querying theinstaller application 201 for thekeypath 218 to the Spelling Component. The query may take the form of an API call to theinstaller application 201, as discussed in greater detail below with respect to FIG. 4. TheWord application 208 includes, as a parameter of the call, the token 216 identifying the Spelling Component. Processing then continues atstep 305. - At
step 305, in response to the query from theWord application 208, theinstaller application 201 accesses theinstaller registry 202 to retrieve thekeypath 218 associated with the token 216 identifying the Spelling Component. When theinstaller application 201 has retrieved thekeypath 218 to the Spelling Component, processing continues atdecision block 307. - At
decision block 307, theinstaller application 201 verifies the existence of the Spelling Component at the location defined by thekeypath 218. Verifying the existence of the Spelling Component may include querying theoperating system 35 for the existence of the speller.exe 233 key file at the location identified by thekeypath 218. Verifying the existence of the speller.exe 233 key file prior to returning thekeypath 218 to theWord application 208 helps to ensure that theWord application 208 will not receive an error when attempting to launch the Spelling Component. If the speller.exe 233 key file is not missing, processing continues atstep 311. If the speller.exe 233 key file is missing or otherwise unavailable, processing continues atstep 309. - At
step 309, theinstaller application 201 initiates the installation of the Spelling Component. In the disclosed embodiment, installing the Spelling Component may include re-installing the entire feature in which the Spelling Component is contained. The installation of the Spelling Component may be performed automatically, without user intervention or knowledge. Alternatively, the query sent to the installer application atstep 303 may include a parameter indicating that theinstaller application 201 should not automatically install any missing components, but rather suspend processing and allow theWord application 208 to prompt the user for instructions. When the missing Spelling Component has been installed, processing continues atstep 311. - At
step 311, the missing Spelling Component has been installed and its existence verified, and theinstaller application 201 returns thekeypath 218 to theWord application 208. The Word application may then proceed to launch the Spelling Component in the ordinary manner, such as by prompting theoperating system 35 to execute the speller.exe 233 key file at the location identified by thekeypath 218. - FIG. 4 is a flow chart which, taken in conjunction with FIG. 2, illustrates, in more detail, a process performed by the
installer application 201 of the disclosed embodiment to verify the existence of the installed resources of an application program, such as theWord application 208, and to install any inadvertently missing resources. The process starts at beginningstep 400 where theWord application 208 is installed substantially as described above with respect to FIG. 3. Processing begins atstep 401. - At
step 401, theWord application 208 is executing in memory and the user selects a “spell check” option from the menu, causing theWord application 208 to attempt to launch the Spelling Component. Once the user selection is performed, processing continues atstep 403. - At
step 403, theWord application 208 attempts to launch the Spelling Component by issuing a call to theinstaller application 201 to return thekeypath 218 to the speller.exe 233 key file associated with the Spelling Component. The call may take the form of a “Provide Component” call issued to theinstaller application 201 and having the token 216 as a parameter. As discussed above, the token 216 may include the Product Code, the feature identifier, and the Component Code for the Spelling Component in a format which may be interpreted by theinstaller application 201. - In accordance with the disclosed embodiment, the Provide Component call may be interpreted by the
installer application 201 as three separate calls. Theinstaller application 201 may respond to the Provide Component call as if a “Use Feature” call, a “Configure Feature” call, and a “Get Component Path” call had been issued. Each of those calls is briefly described below, and the following discussion will assume that each of the three separate calls had been issued when in fact only the Provide Component call was issued. Those skilled in the art will appreciate that a single API call may be interpreted as multiple calls, and theinstaller application 201 may respond as if each of the multiple calls had been issued independently. Processing continues atstep 405. - At
step 405, theinstaller application 201 receives the Provide Component call from theWord application 208 and executes the first portion, the Use Feature call. Theinstaller application 201 responds to the Use Feature call by verifying the installed state of the Spelling Component identified by thetoken 216. In addition, because components may not function properly individually, theinstaller application 201 may verify the installed state of each component of the feature identified by thetoken 216. In response to the call, theinstaller application 201 may attempt to retrieve thekeypath 218 associated with the token 216 from theinstaller registry 202. If thekeypath 218 exists in theinstaller registry 202, then the Spelling Component has been installed, and processing proceeds todecision block 412. It is important to note that although the Spelling Component has been installed, it is possible that a portion of the Spelling Component, such as the speller.exe 233 key file, has been inadvertently deleted, as previously discussed. If thekeypath 218 does not exist in theinstaller registry 202, then the Spelling Component has not been installed, and processing continues to step 410. - At
step 410, theinstaller application 201 continues to operate on the Provide Component call by responding to the second portion, the Configure Feature call. In response to the Configure Feature call, theinstaller application 201 may force the installed state of the Spelling Component. In other words, theinstaller application 201 initiates the installation of the Spelling Component. The installation of the Spelling Component may be automatically performed by theinstaller application 201 in a background process while theWord application 208 waits. Alternatively, theinstaller application 201 may conduct negotiations with theWord application 208 to determine whether to automatically install the missing component, or to prompt the user for additional input, or some other method of handling the error. In the disclosed embodiment, theinstaller application 201 may be unable to install a single component, in which case theinstaller application 201 may initiate the installation of a feature containing the Spelling Component. When the installation of the Spelling Component is complete, processing proceeds todecision block 412. - At
decision block 412, theinstaller application 201 continues processing the Configure Feature call by verifying the existence of the speller.exe 233 key file associated with the Spelling Component. Theinstaller application 201 may query theoperating system 35 to verify that the speller.exe 233 key file exists at the location identified by thekeypath 218. Those skilled in the art will appreciate that theinstaller application 201 may performconventional operating system 35 queries to verify the existence of the speller.exe 233 key file at the keypath 218 location. If the speller.exe 233 key file does not exist at the location identified by thekeypath 218, processing returns to step 410 where theinstaller application 201 initiates the installation of the Spelling Component. If atstep 412 the existence of the speller.exe 233 key file is verified, processing continues atstep 414. - At
step 414, the existence of the speller.exe 233 key file has been verified and theinstaller application 201 continues to operate on the Provide Component call by responding to the third portion, the Get Component Path call. In response to the Get Component Path call, theinstaller application 201 may perform a simple look-up in theinstaller registry 202 for thekeypath 218 associated with the token 216. By performing the previously-discussed steps, the installation and the existence of the speller.exe 233 key file have been verified. Accordingly, theinstaller application 201 may merely look up, in theinstaller registry 202, the token 216 associated with the speller.exe 233 key file and retrieve thekeypath 218 associated with that token 216. When thekeypath 218 is retrieved, processing continues atstep 416. - At
step 416, theinstaller application 201 returns thekeypath 218 to the calling application. In this instance, the calling application is theWord application 208, which then instructs the operating system to launch the speller.exe 233 key file at the location identified by thekeypath 218. Thus, the application program is able to continue, following a repair pursuant to the present invention, as though the repair had not been needed. Accordingly, the knowledge required of the user concerning how to run set-up programs or the like to fix the broken feature is greatly reduced. - From the above description, alternative embodiments will be apparent to those skilled in the art. For instance, in the example discussed concerning FIG. 4, the
Word application 208 passes the token 216 identifying the Spelling Component to theinstaller application 201. Alternatively, a “descriptor” may be passed to theinstaller application 201 rather than a token. This may occur, for instance, when theshortcut 207 is utilized. Because theshortcut 207 serves only the single purpose of launching its associated executable file, theshortcut 207 may include a descriptor to identify the component rather than the token 212. The descriptor may contain the same information as the token 212, except that the descriptor is formatted so that theinstaller application 201 need not parse the individual identifiers contained within thetoken 212. Accordingly, the descriptor allows theinstaller application 201 to more easily locate thekeypath 214 associated with the token 212 within theinstaller registry 202. - In this example, the
shortcut 207 may issue a Provide Component From Descriptor call to theinstaller application 201 including the descriptor as a parameter. The Provide Component From Descriptor call of this embodiment differs from the Provide Component call only in that a descriptor is passed rather than a token. In that case, theinstaller application 201 will function as described above, except that the descriptor takes the place of the separate tokens supplied to Provide Component. - From a reading of the above description pertaining to the disclosed embodiments of the present invention, other modifications and variations thereto may become apparent to those skilled in the art. Therefore, the scope of the present invention is to be limited only by the following claims.
Claims (35)
1. A computer-implemented method, comprising:
receiving a request to verify that a needed resource is available to an executable software program, the needed resource comprising at least one resource needed by the program;
determining whether the needed resource is available to the program, and if the needed resource is not available to the program, automatically initiating an installation procedure without manual termination of the program to make the needed resource available to the program.
2. The method of claim 1 wherein the resource comprises a registry key, and wherein determining whether the needed resource is available further comprises, querying a registry.
3. The method of claim 1 wherein the resource comprises a file, and wherein automatically initiating an installation procedure further comprises, installing the file at a storage location accessible to the executable software program.
4. The method of claim 1 wherein if the needed resource is available to the executable software program, returning existence verification data to the executable software program.
5. The method of claim 4 wherein returning existence verification data comprises, returning a location of the resource to the executable software program.
6. The method of claim 4 wherein returning existence verification data comprises, returning a resource path.
7. The method of claim 1 , wherein receiving a request to verify that a needed resource is available to an executable software program includes receiving a parameter identifying the resource.
8. The method of claim 7 , wherein determining whether the needed resource is available comprises, accessing a database based on the parameter identifying the resource to determine an expected location of the needed resource.
9. The method of claim 8 wherein determining whether the needed resource is available to the executable software program further comprises, attempting to access the resource at the expected location.
10. The method of claim 1 wherein automatically initiating an installation procedure comprises, prompting the user to provide a source of the needed resource.
11. A computer-readable medium having computer-executable instructions for performing the method of claim 1 .
12. In a computing environment, a system comprising:
an executable software program including a first set of executable code and a second set of executable code, the second set of executable code comprising at least one resource that is needed to provide functionality to the first set of executable code; and
an installer program connected for communication with the first executable software program to receive a request for installation information of the second set of executable code, the installer program configured to determine the installation information, and when the installation information indicates that the set of executable code is not installed, the installer program further configured to automatically install the second set of executable code to make the second set of executable code available to the first set of executable code.
13. The system of claim 12 wherein the first set of executable code comprises a product, and wherein the second set of executable code corresponds to a feature of that product.
14. The system of claim 13 wherein the product includes a package file that describes at least one relationship between the feature and the at least one resource.
15. The system of claim 12 wherein the first set of executable code comprises an application program, and wherein the second set of executable code comprises a component including a collection of resources for that application program.
16. The system of claim 12 wherein the first set of executable code provides a token that includes data identifying the second set of executable code in the request for information received by the installer program.
17. The system of claim 12 wherein the token corresponds to a keypath, and wherein the installer program determines the installation information by checking for the existence of a file at a location based on the keypath.
18. The system of claim 12 wherein the second set of executable code comprises a component comprising a collection of resources, one of the resources comprises a key file, and wherein the first set of executable code provides data identifying the key file in the request for information received by the installer program.
19. The system of claim 18 wherein the key file comprises a file system file, and wherein the installer program determines the installation information of the second set of executable code by looking for the existence of the key file at a storage location.
20. The system of claim 18 wherein the key file comprises registry data, and wherein the installer program determines the installation information based on the registry data.
21. A computer-readable medium having computer-executable instructions, comprising:
receiving a resource identifier comprising at least one argument from a first set of executable code, the resource identifier being associated with a second set of executable code including at least one resource that provides functionality to the first set of executable code;
accessing a database based on the resource identifier to retrieve an expected location of at least part of the second set of executable code; and
verifying the existence of the at least part of the second set of executable code at the expected location, and if verification is positive, passing the expected location to the first set of executable code.
22. The computer-readable medium of claim 21 , further comprising, verifying the existence of the at least part of the second set of executable code at the expected location, and if verification is negative, installing the second set of executable code at the expected location.
23. The computer-readable medium of claim 21 , wherein the resource identifier comprises a component code which corresponding to at least one resource of the second set of executable code needed by the first set of executable code.
24. The computer-readable medium of claim 21 , wherein the resource identifier comprises a feature identifier which identifies at least one portion of the first set of executable code.
25. The computer-readable medium of claim 21 , wherein accessing the database to identify the expected location of the resource includes querying the database based on data in the resource identifier.
26. In a computing environment, a system comprising,
executable code having a feature, the feature comprising a component including a key file which supports the feature; and
an installer for repairing the executable code if the key file becomes unavailable to the executable code, the installer:
(a) receiving from the executable code a request for a path to the key file;
(b) identifying an expected location for the key file in the computing environment;
(c) attempting to verify the existence of the key file at the expected location in the computing environment; and
(d) in response to a failure to verify the existence of the key file at the expected location, automatically initiating an installation of the key file to the expected location without manual termination of the executable code.
27. The system of claim 26 , wherein in response to successfully verifying the existence of the key file at the expected location, the installer provides data that identifies the expected location to the executable code.
28. The system of claim 26 , wherein the key file corresponds to a resource of a component.
29. The system of claim 28 , wherein the component corresponds to a feature.
30. In a computer system, a method comprising,
receiving a call, the call including a resource identifier; and
in response to receiving the call:
1) determining if a resource corresponding to the resource identifier exists at an expected location, and if the resource does not exist at the expected location, automatically initiating an installation of the resource to the expected location; and
2) returning information corresponding to the existence of the resource at the expected location.
31. The method of claim 30 wherein returning information corresponding to the existence of the resource at the expected location comprises returning a path to the expected location.
32. The method of claim 30 wherein determining if the resource corresponding to the resource identifier exists includes querying a database to obtain the expected location of the key file.
33. The method of claim 32 , wherein if the expected location cannot be found by querying the database, automatically initiating an installation of the resource to a location and adding that location to the database as the expected location.
34. The method of claim 30 wherein the resource identifier corresponds to a key file, and wherein determining if a resource corresponding to the resource identifier exists at an expected location comprises obtaining a path to that key file.
35. A computer-readable medium having computer-executable instructions for performing the method of claim 30.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/075,871 US20020095671A1 (en) | 1998-09-21 | 2002-02-13 | System and method for repairing a damaged application program |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/158,126 US6397381B1 (en) | 1998-09-21 | 1998-09-21 | System and method for repairing a damaged application program |
US10/075,871 US20020095671A1 (en) | 1998-09-21 | 2002-02-13 | System and method for repairing a damaged application program |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/158,126 Continuation US6397381B1 (en) | 1998-09-21 | 1998-09-21 | System and method for repairing a damaged application program |
Publications (1)
Publication Number | Publication Date |
---|---|
US20020095671A1 true US20020095671A1 (en) | 2002-07-18 |
Family
ID=22566786
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/158,126 Expired - Lifetime US6397381B1 (en) | 1998-09-21 | 1998-09-21 | System and method for repairing a damaged application program |
US10/075,871 Abandoned US20020095671A1 (en) | 1998-09-21 | 2002-02-13 | System and method for repairing a damaged application program |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/158,126 Expired - Lifetime US6397381B1 (en) | 1998-09-21 | 1998-09-21 | System and method for repairing a damaged application program |
Country Status (1)
Country | Link |
---|---|
US (2) | US6397381B1 (en) |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050172283A1 (en) * | 1998-09-21 | 2005-08-04 | Microsoft Corporation | Software installation and validation using custom actions |
US20070043943A1 (en) * | 2005-08-18 | 2007-02-22 | Marco Peretti | Methods and systems for network-based management of application security |
US20070094657A1 (en) * | 2005-10-25 | 2007-04-26 | Cyberonics, Inc. | Method and apparatus for installing an application into a device |
US20070256072A1 (en) * | 2006-05-01 | 2007-11-01 | Microsoft Corporation | Multi-installer product deployment |
US20070256068A1 (en) * | 2006-05-01 | 2007-11-01 | Microsoft Corporation | Product updating with custom actions |
US20070266160A1 (en) * | 2006-05-09 | 2007-11-15 | Johnson Chris D | Automatic Application Server Fail Fast and Recover on Resource Error |
US20080130666A1 (en) * | 2000-03-02 | 2008-06-05 | Sony Corporation | Communication network system, gateway, data communication method and program providing medium |
US20080172736A1 (en) * | 2007-01-15 | 2008-07-17 | Microsoft Corporation | Multi-Installer Product Advertising |
US20080172664A1 (en) * | 2007-01-15 | 2008-07-17 | Microsoft Corporation | Facilitating Multi-Installer Product Installations |
US20100125556A1 (en) * | 2008-11-14 | 2010-05-20 | Elizabeth Bauer | Restoring application upgrades using an application restore point |
US20100125841A1 (en) * | 2008-11-14 | 2010-05-20 | Elizabeth Bauer | Application restore points |
US20110030045A1 (en) * | 2009-05-01 | 2011-02-03 | Peter David Beauregard | Methods and Systems for Controlling Access to Resources and Privileges Per Process |
US7895651B2 (en) | 2005-07-29 | 2011-02-22 | Bit 9, Inc. | Content tracking in a network security system |
US8272058B2 (en) | 2005-07-29 | 2012-09-18 | Bit 9, Inc. | Centralized timed analysis in a network security system |
US20130086552A1 (en) * | 2011-09-30 | 2013-04-04 | Bmc Software, Inc. | Systems and methods for applying dynamic relational typing to a strongly-typed object-oriented api |
US20140372998A1 (en) * | 2013-06-14 | 2014-12-18 | Microsoft Corporation | App package deployment |
US8984636B2 (en) | 2005-07-29 | 2015-03-17 | Bit9, Inc. | Content extractor and analysis system |
US9852138B2 (en) | 2014-06-30 | 2017-12-26 | EMC IP Holding Company LLC | Content fabric for a distributed file system |
US20190073204A1 (en) * | 2017-09-06 | 2019-03-07 | Canon Kabushiki Kaisha | Storage medium, information processing apparatus, and control method |
US10382279B2 (en) | 2014-06-30 | 2019-08-13 | Emc Corporation | Dynamically composed compute nodes comprising disaggregated components |
US10977361B2 (en) | 2017-05-16 | 2021-04-13 | Beyondtrust Software, Inc. | Systems and methods for controlling privileged operations |
US11528149B2 (en) | 2019-04-26 | 2022-12-13 | Beyondtrust Software, Inc. | Root-level application selective configuration |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6735767B1 (en) * | 1998-04-10 | 2004-05-11 | International Business Machines Corporation | Installation planning window |
US6397381B1 (en) * | 1998-09-21 | 2002-05-28 | Microsoft Corporation | System and method for repairing a damaged application program |
WO2000070465A1 (en) * | 1999-05-14 | 2000-11-23 | Fujitsu Limited | Distributed computer system and method of application of maintenance data |
US6574663B1 (en) * | 1999-08-31 | 2003-06-03 | Intel Corporation | Active topology discovery in active networks |
US8271336B2 (en) | 1999-11-22 | 2012-09-18 | Accenture Global Services Gmbh | Increased visibility during order management in a network-based supply chain environment |
US7130807B1 (en) * | 1999-11-22 | 2006-10-31 | Accenture Llp | Technology sharing during demand and supply planning in a network-based supply chain environment |
US7124101B1 (en) | 1999-11-22 | 2006-10-17 | Accenture Llp | Asset tracking in a network-based supply chain environment |
US7716077B1 (en) | 1999-11-22 | 2010-05-11 | Accenture Global Services Gmbh | Scheduling and planning maintenance and service in a network-based supply chain environment |
US8032409B1 (en) | 1999-11-22 | 2011-10-04 | Accenture Global Services Limited | Enhanced visibility during installation management in a network-based supply chain environment |
US6560719B1 (en) * | 2000-05-17 | 2003-05-06 | Unisys Corporation | Method for recovery of original registry key file data |
US7695363B2 (en) | 2000-06-23 | 2010-04-13 | Igt | Gaming device having multiple display interfaces |
US7699699B2 (en) | 2000-06-23 | 2010-04-20 | Igt | Gaming device having multiple selectable display interfaces based on player's wagers |
US6941353B1 (en) * | 2000-06-29 | 2005-09-06 | Auran Holdings Pty Ltd | E-commerce system and method relating to program objects |
US7620731B1 (en) * | 2001-02-21 | 2009-11-17 | Microsoft Corporation | Isolated persistent storage |
US7032124B2 (en) * | 2001-03-09 | 2006-04-18 | Greenbaum David M | Method of automatically correcting broken links to files stored on a computer |
BR0215761A (en) * | 2002-06-18 | 2006-11-28 | Computer Ass Think Inc | methods and systems for managing enterprise resources |
KR100472459B1 (en) * | 2002-07-03 | 2005-03-10 | 삼성전자주식회사 | Method and apparatus for installing driver for a function |
US8126999B2 (en) | 2004-02-06 | 2012-02-28 | Microsoft Corporation | Network DNA |
US8251791B2 (en) | 2004-08-19 | 2012-08-28 | Igt | Gaming system having multiple gaming machines which provide bonus awards |
US8021230B2 (en) | 2004-08-19 | 2011-09-20 | Igt | Gaming system having multiple gaming machines which provide bonus awards |
US7963847B2 (en) | 2004-08-19 | 2011-06-21 | Igt | Gaming system having multiple gaming machines which provide bonus awards |
US9009079B2 (en) * | 2005-07-01 | 2015-04-14 | International Business Machines Corporation | Planning assignment of software licenses |
FI20055429L (en) * | 2005-08-08 | 2007-02-09 | Rainer Wehkamp | Mastery of a grid computing network |
US7841939B2 (en) | 2005-09-09 | 2010-11-30 | Igt | Server based gaming system having multiple progressive awards |
US8128491B2 (en) | 2005-09-09 | 2012-03-06 | Igt | Server based gaming system having multiple progressive awards |
US8137188B2 (en) | 2005-09-09 | 2012-03-20 | Igt | Server based gaming system having multiple progressive awards |
US8171482B1 (en) * | 2006-05-09 | 2012-05-01 | Vmware, Inc. | Application environment specifications for provisioning application specific runtime environments using subsets of resources required for execution |
US9104574B2 (en) * | 2006-06-05 | 2015-08-11 | Reimage Limited | System and method for software application remediation |
US8512130B2 (en) | 2006-07-27 | 2013-08-20 | Igt | Gaming system with linked gaming machines that are configurable to have a same probability of winning a designated award |
US7862430B2 (en) | 2006-09-27 | 2011-01-04 | Igt | Server based gaming system having system triggered loyalty award sequences |
US7674180B2 (en) | 2006-09-27 | 2010-03-09 | Igt | Server based gaming system having system triggered loyalty award sequences |
US8616959B2 (en) | 2006-09-27 | 2013-12-31 | Igt | Server based gaming system having system triggered loyalty award sequences |
US8577937B1 (en) | 2007-05-09 | 2013-11-05 | Vmware, Inc. | Repository including exclusion list |
US8219987B1 (en) | 2007-08-24 | 2012-07-10 | Vmware, Inc. | Optimized virtual machine specification for provisioning application specific runtime environment |
US8347263B1 (en) | 2007-05-09 | 2013-01-01 | Vmware, Inc. | Repository including installation metadata for executable applications |
US9015180B1 (en) | 2007-05-09 | 2015-04-21 | Vmware, Inc. | Repository including file identification |
US11262996B2 (en) | 2007-05-09 | 2022-03-01 | Vmware, Inc. | Repository including exclusion list |
US7985133B2 (en) | 2007-07-30 | 2011-07-26 | Igt | Gaming system and method for providing an additional gaming currency |
US8900053B2 (en) | 2007-08-10 | 2014-12-02 | Igt | Gaming system and method for providing different bonus awards based on different types of triggered events |
US9142097B2 (en) | 2007-10-26 | 2015-09-22 | Igt | Gaming system and method for providing play of local first game and remote second game |
US20090276856A1 (en) * | 2007-11-26 | 2009-11-05 | International Business Machines Corporation | License management facility |
US9039516B2 (en) | 2009-07-30 | 2015-05-26 | Igt | Concurrent play on multiple gaming machines |
US9182976B2 (en) * | 2012-11-15 | 2015-11-10 | Location Labs, Inc. | System and method for managing client application enablement |
CN104040496B (en) * | 2012-12-10 | 2017-06-23 | 东莞宇龙通信科技有限公司 | Terminal and application recovery method |
US9323514B2 (en) | 2013-05-30 | 2016-04-26 | Microsoft Technology Licensing, Llc | Resource package indexing |
US20140359605A1 (en) * | 2013-05-30 | 2014-12-04 | Microsoft Corporation | Bundle package signing |
US9766870B2 (en) | 2013-05-30 | 2017-09-19 | Microsoft Technology Licensing, Llc | Bundle package generation |
US20140357357A1 (en) | 2013-05-30 | 2014-12-04 | Microsoft Corporation | Game bundle package |
US9875618B2 (en) | 2014-07-24 | 2018-01-23 | Igt | Gaming system and method employing multi-directional interaction between multiple concurrently played games |
US9972171B2 (en) | 2015-09-24 | 2018-05-15 | Igt | Gaming system and method for providing a triggering event based on a collection of units from different games |
JP6855348B2 (en) * | 2017-07-31 | 2021-04-07 | 株式会社ソニー・インタラクティブエンタテインメント | Information processing device and download processing method |
JP2019040400A (en) * | 2017-08-25 | 2019-03-14 | 富士通株式会社 | Installation control program, installation control method, and information processing device |
Citations (66)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4498145A (en) * | 1982-06-30 | 1985-02-05 | International Business Machines Corporation | Method for assuring atomicity of multi-row update operations in a database system |
US5421009A (en) * | 1993-12-22 | 1995-05-30 | Hewlett-Packard Company | Method of remotely installing software directly from a central computer |
US5473772A (en) * | 1991-04-02 | 1995-12-05 | International Business Machines Corporation | Automatic update of static and dynamic files at a remote network node in response to calls issued by or for application programs |
US5535326A (en) * | 1992-07-31 | 1996-07-09 | International Business Machines Corporation | System and method for logical console verification and feedback |
US5555416A (en) * | 1992-09-20 | 1996-09-10 | Sun Microsystems, Inc. | Automated software installation and operating environment configuration for a computer system based on classification rules |
US5560076A (en) * | 1994-11-14 | 1996-10-01 | Hoovine Industrial Limited | Combined vacuum cleaner and torch |
US5586304A (en) * | 1994-09-08 | 1996-12-17 | Compaq Computer Corporation | Automatic computer upgrading |
US5625823A (en) * | 1994-07-22 | 1997-04-29 | Debenedictis; Erik P. | Method and apparatus for controlling connected computers without programming |
US5644766A (en) * | 1994-03-22 | 1997-07-01 | International Business Machines Corporation | System and method for managing a hierarchical storage system through improved data migration |
US5655081A (en) * | 1995-03-08 | 1997-08-05 | Bmc Software, Inc. | System for monitoring and managing computer resources and applications across a distributed computing environment using an intelligent autonomous agent architecture |
US5659547A (en) * | 1992-08-31 | 1997-08-19 | The Dow Chemical Company | Script-based system for testing a multi-user computer system |
US5692129A (en) * | 1995-07-07 | 1997-11-25 | Novell, Inc. | Managing application programs in a computer network by using a database of application objects |
US5732275A (en) * | 1996-01-11 | 1998-03-24 | Apple Computer, Inc. | Method and apparatus for managing and automatically updating software programs |
US5732266A (en) * | 1994-09-02 | 1998-03-24 | Compaq Computer Corporation | Storage medium storing application programs and application initialization files and automatic launching of computer applications stored on the storage medium |
US5742829A (en) * | 1995-03-10 | 1998-04-21 | Microsoft Corporation | Automatic software installation on heterogeneous networked client computer systems |
US5752042A (en) * | 1996-06-07 | 1998-05-12 | International Business Machines Corporation | Server computer for selecting program updates for a client computer based on results of recognizer program(s) furnished to the client computer |
US5764992A (en) * | 1995-06-06 | 1998-06-09 | Apple Computer, Inc. | Method and apparatus for automatic software replacement |
US5768566A (en) * | 1996-03-01 | 1998-06-16 | Microsoft Corporation | Method and facility for uninstalling a computer program package |
US5778234A (en) * | 1992-05-08 | 1998-07-07 | Paradyne Corporation | Method for downloading programs |
US5784612A (en) * | 1995-05-03 | 1998-07-21 | International Business Machines Corporation | Configuration and unconfiguration of distributed computing environment components |
US5790856A (en) * | 1995-05-08 | 1998-08-04 | Apple Computer, Inc. | Methods, apparatus, and data structures for data driven computer patches and static analysis of same |
US5790664A (en) * | 1996-02-26 | 1998-08-04 | Network Engineering Software, Inc. | Automated system for management of licensed software |
US5796967A (en) * | 1988-07-15 | 1998-08-18 | International Business Machines Corporation | Method for presenting applications in an interactive service |
US5805857A (en) * | 1994-04-07 | 1998-09-08 | International Business Machines Corporation | DASD capacity in excess of 528 megabytes apparatus and method for personal computers |
US5835911A (en) * | 1994-02-08 | 1998-11-10 | Fujitsu Limited | Software distribution and maintenance system and method |
US5859969A (en) * | 1995-01-10 | 1999-01-12 | Fujitsu Limited | Remote installation system and method |
US5867714A (en) * | 1996-10-31 | 1999-02-02 | Ncr Corporation | System and method for distributing configuration-dependent software revisions to a computer system |
US5867713A (en) * | 1995-04-05 | 1999-02-02 | International Business Machines Corporation | Committing an install plan object for the network installation of application programs |
US5870726A (en) * | 1994-05-25 | 1999-02-09 | Lorphelin; Vincent | Protected software rental using smart cards |
US5897640A (en) * | 1994-08-08 | 1999-04-27 | Microsoft Corporation | Method and system of associating, synchronizing and reconciling computer files in an operating system |
US5925127A (en) * | 1997-04-09 | 1999-07-20 | Microsoft Corporation | Method and system for monitoring the use of rented software |
US5930514A (en) * | 1994-08-01 | 1999-07-27 | International Business Machines Corporation | Self-deletion facility for application programs |
US5930513A (en) * | 1996-06-06 | 1999-07-27 | Sun Microsystems, Inc. | Reference based software installation |
US5933647A (en) * | 1997-01-24 | 1999-08-03 | Cognet Corporation | System and method for software distribution and desktop management in a computer network environment |
US5954827A (en) * | 1996-12-23 | 1999-09-21 | Micron Electronics, Inc. | Method and system for indicating computer status |
US5960204A (en) * | 1996-10-28 | 1999-09-28 | J.D. Edwards World Source Company | System and method for installing applications on a computer on an as needed basis |
US5964885A (en) * | 1997-07-14 | 1999-10-12 | Microsoft Corporation | Method and system for recovering text from a damaged electronic file |
US5966540A (en) * | 1997-02-06 | 1999-10-12 | International Business Machines Corp. | Hosted machine code installation |
US5978590A (en) * | 1994-09-19 | 1999-11-02 | Epson Kowa Corporation | Installation system |
US5987504A (en) * | 1996-12-31 | 1999-11-16 | Intel Corporation | Method and apparatus for delivering data |
US5995756A (en) * | 1997-02-14 | 1999-11-30 | Inprise Corporation | System for internet-based delivery of computer applications |
US5999740A (en) * | 1996-11-08 | 1999-12-07 | International Computers Limited | Updating mechanism for software |
US6006034A (en) * | 1996-09-05 | 1999-12-21 | Open Software Associates, Ltd. | Systems and methods for automatic application version upgrading and maintenance |
US6006035A (en) * | 1997-12-31 | 1999-12-21 | Network Associates | Method and system for custom computer software installation |
US6009401A (en) * | 1998-04-06 | 1999-12-28 | Preview Systems, Inc. | Relicensing of electronically purchased software |
US6009274A (en) * | 1996-12-13 | 1999-12-28 | 3Com Corporation | Method and apparatus for automatically updating software components on end systems over a network |
US6021438A (en) * | 1997-06-18 | 2000-02-01 | Wyatt River Software, Inc. | License management system using daemons and aliasing |
US6023586A (en) * | 1998-02-10 | 2000-02-08 | Novell, Inc. | Integrity verifying and correcting software |
US6029147A (en) * | 1996-03-15 | 2000-02-22 | Microsoft Corporation | Method and system for providing an interface for supporting multiple formats for on-line banking services |
US6041333A (en) * | 1997-11-14 | 2000-03-21 | Microsoft Corporation | Method and apparatus for automatically updating a data file from a network |
US6067582A (en) * | 1996-08-13 | 2000-05-23 | Angel Secure Networks, Inc. | System for installing information related to a software application to a remote computer over a network |
US6073128A (en) * | 1997-10-31 | 2000-06-06 | Oracle Corporation | Method and apparatus for identifying files used to restore a file |
US6131192A (en) * | 1998-06-18 | 2000-10-10 | Microsoft Corporation | Software installation |
US6148412A (en) * | 1996-05-23 | 2000-11-14 | International Business Machines Corporation | Availability and recovery of files using copy storage pools |
US6151643A (en) * | 1996-06-07 | 2000-11-21 | Networks Associates, Inc. | Automatic updating of diverse software products on multiple client computer systems by downloading scanning application to client computer and generating software list on client computer |
US6151708A (en) * | 1997-12-19 | 2000-11-21 | Microsoft Corporation | Determining program update availability via set intersection over a sub-optical pathway |
US6161218A (en) * | 1996-01-16 | 2000-12-12 | Sun Microsystems Inc. | Software patch architecture |
US6192406B1 (en) * | 1997-06-13 | 2001-02-20 | At&T Corp. | Startup management system and method for networks |
US6199204B1 (en) * | 1998-01-28 | 2001-03-06 | International Business Machines Corporation | Distribution of software updates via a computer network |
US6202207B1 (en) * | 1998-01-28 | 2001-03-13 | International Business Machines Corporation | Method and a mechanism for synchronized updating of interoperating software |
US6205527B1 (en) * | 1998-02-24 | 2001-03-20 | Adaptec, Inc. | Intelligent backup and restoring system and method for implementing the same |
US6212536B1 (en) * | 1998-01-08 | 2001-04-03 | International Business Machines Corporation | Method for generating web browser sensitive pages |
US6219786B1 (en) * | 1998-09-09 | 2001-04-17 | Surfcontrol, Inc. | Method and system for monitoring and controlling network access |
US6314565B1 (en) * | 1997-05-19 | 2001-11-06 | Intervu, Inc. | System and method for automated identification, retrieval, and installation of multimedia software components |
US6397381B1 (en) * | 1998-09-21 | 2002-05-28 | Microsoft Corporation | System and method for repairing a damaged application program |
US6427227B1 (en) * | 1999-03-03 | 2002-07-30 | Microsoft Corporation | System, method, and computer-readable medium for repairing an application program that has been patched |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5805897A (en) | 1992-07-31 | 1998-09-08 | International Business Machines Corporation | System and method for remote software configuration and distribution |
US5630076A (en) | 1995-05-05 | 1997-05-13 | Apple Computer, Inc. | Dynamic device matching using driver candidate lists |
US5870762A (en) * | 1996-09-26 | 1999-02-09 | Lee; Paul | Error detection and recovery of database files |
-
1998
- 1998-09-21 US US09/158,126 patent/US6397381B1/en not_active Expired - Lifetime
-
2002
- 2002-02-13 US US10/075,871 patent/US20020095671A1/en not_active Abandoned
Patent Citations (68)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4498145A (en) * | 1982-06-30 | 1985-02-05 | International Business Machines Corporation | Method for assuring atomicity of multi-row update operations in a database system |
US5796967A (en) * | 1988-07-15 | 1998-08-18 | International Business Machines Corporation | Method for presenting applications in an interactive service |
US5473772A (en) * | 1991-04-02 | 1995-12-05 | International Business Machines Corporation | Automatic update of static and dynamic files at a remote network node in response to calls issued by or for application programs |
US5778234A (en) * | 1992-05-08 | 1998-07-07 | Paradyne Corporation | Method for downloading programs |
US5535326A (en) * | 1992-07-31 | 1996-07-09 | International Business Machines Corporation | System and method for logical console verification and feedback |
US5659547A (en) * | 1992-08-31 | 1997-08-19 | The Dow Chemical Company | Script-based system for testing a multi-user computer system |
US5555416A (en) * | 1992-09-20 | 1996-09-10 | Sun Microsystems, Inc. | Automated software installation and operating environment configuration for a computer system based on classification rules |
US5421009A (en) * | 1993-12-22 | 1995-05-30 | Hewlett-Packard Company | Method of remotely installing software directly from a central computer |
US5835911A (en) * | 1994-02-08 | 1998-11-10 | Fujitsu Limited | Software distribution and maintenance system and method |
US5644766A (en) * | 1994-03-22 | 1997-07-01 | International Business Machines Corporation | System and method for managing a hierarchical storage system through improved data migration |
US5805857A (en) * | 1994-04-07 | 1998-09-08 | International Business Machines Corporation | DASD capacity in excess of 528 megabytes apparatus and method for personal computers |
US5870726A (en) * | 1994-05-25 | 1999-02-09 | Lorphelin; Vincent | Protected software rental using smart cards |
US5625823A (en) * | 1994-07-22 | 1997-04-29 | Debenedictis; Erik P. | Method and apparatus for controlling connected computers without programming |
US5930514A (en) * | 1994-08-01 | 1999-07-27 | International Business Machines Corporation | Self-deletion facility for application programs |
US5897640A (en) * | 1994-08-08 | 1999-04-27 | Microsoft Corporation | Method and system of associating, synchronizing and reconciling computer files in an operating system |
US5732266A (en) * | 1994-09-02 | 1998-03-24 | Compaq Computer Corporation | Storage medium storing application programs and application initialization files and automatic launching of computer applications stored on the storage medium |
US5586304A (en) * | 1994-09-08 | 1996-12-17 | Compaq Computer Corporation | Automatic computer upgrading |
US5978590A (en) * | 1994-09-19 | 1999-11-02 | Epson Kowa Corporation | Installation system |
US5560076A (en) * | 1994-11-14 | 1996-10-01 | Hoovine Industrial Limited | Combined vacuum cleaner and torch |
US5859969A (en) * | 1995-01-10 | 1999-01-12 | Fujitsu Limited | Remote installation system and method |
US5655081A (en) * | 1995-03-08 | 1997-08-05 | Bmc Software, Inc. | System for monitoring and managing computer resources and applications across a distributed computing environment using an intelligent autonomous agent architecture |
US5742829A (en) * | 1995-03-10 | 1998-04-21 | Microsoft Corporation | Automatic software installation on heterogeneous networked client computer systems |
US5867713A (en) * | 1995-04-05 | 1999-02-02 | International Business Machines Corporation | Committing an install plan object for the network installation of application programs |
US5784612A (en) * | 1995-05-03 | 1998-07-21 | International Business Machines Corporation | Configuration and unconfiguration of distributed computing environment components |
US5790856A (en) * | 1995-05-08 | 1998-08-04 | Apple Computer, Inc. | Methods, apparatus, and data structures for data driven computer patches and static analysis of same |
US5764992A (en) * | 1995-06-06 | 1998-06-09 | Apple Computer, Inc. | Method and apparatus for automatic software replacement |
US5859978A (en) * | 1995-07-07 | 1999-01-12 | Novell, Inc. | Managing application programs in a computer network by using a database of application objects |
US5692129B1 (en) * | 1995-07-07 | 1999-08-17 | Novell Inc | Managing application programs in a computer network by using a database of application objects |
US5692129A (en) * | 1995-07-07 | 1997-11-25 | Novell, Inc. | Managing application programs in a computer network by using a database of application objects |
US5732275A (en) * | 1996-01-11 | 1998-03-24 | Apple Computer, Inc. | Method and apparatus for managing and automatically updating software programs |
US6161218A (en) * | 1996-01-16 | 2000-12-12 | Sun Microsystems Inc. | Software patch architecture |
US5790664A (en) * | 1996-02-26 | 1998-08-04 | Network Engineering Software, Inc. | Automated system for management of licensed software |
US5768566A (en) * | 1996-03-01 | 1998-06-16 | Microsoft Corporation | Method and facility for uninstalling a computer program package |
US6029147A (en) * | 1996-03-15 | 2000-02-22 | Microsoft Corporation | Method and system for providing an interface for supporting multiple formats for on-line banking services |
US6148412A (en) * | 1996-05-23 | 2000-11-14 | International Business Machines Corporation | Availability and recovery of files using copy storage pools |
US5930513A (en) * | 1996-06-06 | 1999-07-27 | Sun Microsystems, Inc. | Reference based software installation |
US5752042A (en) * | 1996-06-07 | 1998-05-12 | International Business Machines Corporation | Server computer for selecting program updates for a client computer based on results of recognizer program(s) furnished to the client computer |
US6151643A (en) * | 1996-06-07 | 2000-11-21 | Networks Associates, Inc. | Automatic updating of diverse software products on multiple client computer systems by downloading scanning application to client computer and generating software list on client computer |
US6067582A (en) * | 1996-08-13 | 2000-05-23 | Angel Secure Networks, Inc. | System for installing information related to a software application to a remote computer over a network |
US6006034A (en) * | 1996-09-05 | 1999-12-21 | Open Software Associates, Ltd. | Systems and methods for automatic application version upgrading and maintenance |
US5960204A (en) * | 1996-10-28 | 1999-09-28 | J.D. Edwards World Source Company | System and method for installing applications on a computer on an as needed basis |
US5867714A (en) * | 1996-10-31 | 1999-02-02 | Ncr Corporation | System and method for distributing configuration-dependent software revisions to a computer system |
US5999740A (en) * | 1996-11-08 | 1999-12-07 | International Computers Limited | Updating mechanism for software |
US6009274A (en) * | 1996-12-13 | 1999-12-28 | 3Com Corporation | Method and apparatus for automatically updating software components on end systems over a network |
US5954827A (en) * | 1996-12-23 | 1999-09-21 | Micron Electronics, Inc. | Method and system for indicating computer status |
US5987504A (en) * | 1996-12-31 | 1999-11-16 | Intel Corporation | Method and apparatus for delivering data |
US5933647A (en) * | 1997-01-24 | 1999-08-03 | Cognet Corporation | System and method for software distribution and desktop management in a computer network environment |
US5966540A (en) * | 1997-02-06 | 1999-10-12 | International Business Machines Corp. | Hosted machine code installation |
US5995756A (en) * | 1997-02-14 | 1999-11-30 | Inprise Corporation | System for internet-based delivery of computer applications |
US5925127A (en) * | 1997-04-09 | 1999-07-20 | Microsoft Corporation | Method and system for monitoring the use of rented software |
US6314565B1 (en) * | 1997-05-19 | 2001-11-06 | Intervu, Inc. | System and method for automated identification, retrieval, and installation of multimedia software components |
US6192406B1 (en) * | 1997-06-13 | 2001-02-20 | At&T Corp. | Startup management system and method for networks |
US6021438A (en) * | 1997-06-18 | 2000-02-01 | Wyatt River Software, Inc. | License management system using daemons and aliasing |
US5964885A (en) * | 1997-07-14 | 1999-10-12 | Microsoft Corporation | Method and system for recovering text from a damaged electronic file |
US6073128A (en) * | 1997-10-31 | 2000-06-06 | Oracle Corporation | Method and apparatus for identifying files used to restore a file |
US6041333A (en) * | 1997-11-14 | 2000-03-21 | Microsoft Corporation | Method and apparatus for automatically updating a data file from a network |
US6151708A (en) * | 1997-12-19 | 2000-11-21 | Microsoft Corporation | Determining program update availability via set intersection over a sub-optical pathway |
US6006035A (en) * | 1997-12-31 | 1999-12-21 | Network Associates | Method and system for custom computer software installation |
US6212536B1 (en) * | 1998-01-08 | 2001-04-03 | International Business Machines Corporation | Method for generating web browser sensitive pages |
US6199204B1 (en) * | 1998-01-28 | 2001-03-06 | International Business Machines Corporation | Distribution of software updates via a computer network |
US6202207B1 (en) * | 1998-01-28 | 2001-03-13 | International Business Machines Corporation | Method and a mechanism for synchronized updating of interoperating software |
US6023586A (en) * | 1998-02-10 | 2000-02-08 | Novell, Inc. | Integrity verifying and correcting software |
US6205527B1 (en) * | 1998-02-24 | 2001-03-20 | Adaptec, Inc. | Intelligent backup and restoring system and method for implementing the same |
US6009401A (en) * | 1998-04-06 | 1999-12-28 | Preview Systems, Inc. | Relicensing of electronically purchased software |
US6131192A (en) * | 1998-06-18 | 2000-10-10 | Microsoft Corporation | Software installation |
US6219786B1 (en) * | 1998-09-09 | 2001-04-17 | Surfcontrol, Inc. | Method and system for monitoring and controlling network access |
US6397381B1 (en) * | 1998-09-21 | 2002-05-28 | Microsoft Corporation | System and method for repairing a damaged application program |
US6427227B1 (en) * | 1999-03-03 | 2002-07-30 | Microsoft Corporation | System, method, and computer-readable medium for repairing an application program that has been patched |
Cited By (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050172283A1 (en) * | 1998-09-21 | 2005-08-04 | Microsoft Corporation | Software installation and validation using custom actions |
US7047529B2 (en) | 1998-09-21 | 2006-05-16 | Microsoft Corporation | Software installation and validation using custom actions |
US8255573B2 (en) * | 2000-03-02 | 2012-08-28 | Sony Corporation | Communication network system, gateway, data communication method and program providing medium |
US8612630B2 (en) | 2000-03-02 | 2013-12-17 | Sony Corporation | Communication network system, gateway, data communication method and program providing medium |
US9270661B2 (en) | 2000-03-02 | 2016-02-23 | Sony Corporation | Communication network system, gateway, data communication method and program providing medium |
US20080130666A1 (en) * | 2000-03-02 | 2008-06-05 | Sony Corporation | Communication network system, gateway, data communication method and program providing medium |
US7895651B2 (en) | 2005-07-29 | 2011-02-22 | Bit 9, Inc. | Content tracking in a network security system |
US8984636B2 (en) | 2005-07-29 | 2015-03-17 | Bit9, Inc. | Content extractor and analysis system |
US8272058B2 (en) | 2005-07-29 | 2012-09-18 | Bit 9, Inc. | Centralized timed analysis in a network security system |
US9654474B2 (en) | 2005-08-18 | 2017-05-16 | Beyondtrust Software, Inc. | Methods and systems for network-based management of application security |
US8006088B2 (en) | 2005-08-18 | 2011-08-23 | Beyondtrust Corporation | Methods and systems for network-based management of application security |
US8566586B2 (en) | 2005-08-18 | 2013-10-22 | Beyondtrust Corporation | Methods and systems for network-based management of application security |
US20070043943A1 (en) * | 2005-08-18 | 2007-02-22 | Marco Peretti | Methods and systems for network-based management of application security |
US20070094657A1 (en) * | 2005-10-25 | 2007-04-26 | Cyberonics, Inc. | Method and apparatus for installing an application into a device |
US20070256068A1 (en) * | 2006-05-01 | 2007-11-01 | Microsoft Corporation | Product updating with custom actions |
US20070256072A1 (en) * | 2006-05-01 | 2007-11-01 | Microsoft Corporation | Multi-installer product deployment |
US20070266160A1 (en) * | 2006-05-09 | 2007-11-15 | Johnson Chris D | Automatic Application Server Fail Fast and Recover on Resource Error |
US20080172664A1 (en) * | 2007-01-15 | 2008-07-17 | Microsoft Corporation | Facilitating Multi-Installer Product Installations |
US8640124B2 (en) | 2007-01-15 | 2014-01-28 | Microsoft Corporation | Multi-installer product advertising |
US20080172736A1 (en) * | 2007-01-15 | 2008-07-17 | Microsoft Corporation | Multi-Installer Product Advertising |
US8640121B2 (en) | 2007-01-15 | 2014-01-28 | Microsoft Corporation | Facilitating multi-installer product installations |
US20100125556A1 (en) * | 2008-11-14 | 2010-05-20 | Elizabeth Bauer | Restoring application upgrades using an application restore point |
US8132047B2 (en) * | 2008-11-14 | 2012-03-06 | International Business Machines Corporation | Restoring application upgrades using an application restore point |
US20100125841A1 (en) * | 2008-11-14 | 2010-05-20 | Elizabeth Bauer | Application restore points |
US8332842B2 (en) | 2008-11-14 | 2012-12-11 | International Business Machines Corporation | Application restore points |
US8850549B2 (en) | 2009-05-01 | 2014-09-30 | Beyondtrust Software, Inc. | Methods and systems for controlling access to resources and privileges per process |
US20110030045A1 (en) * | 2009-05-01 | 2011-02-03 | Peter David Beauregard | Methods and Systems for Controlling Access to Resources and Privileges Per Process |
US9558343B2 (en) | 2009-05-01 | 2017-01-31 | Beyondtrust Software, Inc. | Methods and systems for controlling access to resources and privileges per process |
US9594898B2 (en) | 2009-05-01 | 2017-03-14 | Beyondtrust Software, Inc. | Methods and systems for controlling access to resources and privileges per process |
US20130086552A1 (en) * | 2011-09-30 | 2013-04-04 | Bmc Software, Inc. | Systems and methods for applying dynamic relational typing to a strongly-typed object-oriented api |
US8782601B2 (en) * | 2011-09-30 | 2014-07-15 | Bmc Software, Inc. | Systems and methods for applying dynamic relational typing to a strongly-typed object-oriented API |
US20140372998A1 (en) * | 2013-06-14 | 2014-12-18 | Microsoft Corporation | App package deployment |
US9852138B2 (en) | 2014-06-30 | 2017-12-26 | EMC IP Holding Company LLC | Content fabric for a distributed file system |
US10382279B2 (en) | 2014-06-30 | 2019-08-13 | Emc Corporation | Dynamically composed compute nodes comprising disaggregated components |
US10977361B2 (en) | 2017-05-16 | 2021-04-13 | Beyondtrust Software, Inc. | Systems and methods for controlling privileged operations |
US20190073204A1 (en) * | 2017-09-06 | 2019-03-07 | Canon Kabushiki Kaisha | Storage medium, information processing apparatus, and control method |
US11023216B2 (en) * | 2017-09-06 | 2021-06-01 | Canon Kabushiki Kaisha | Storage medium, information processing apparatus, and control method |
US11528149B2 (en) | 2019-04-26 | 2022-12-13 | Beyondtrust Software, Inc. | Root-level application selective configuration |
Also Published As
Publication number | Publication date |
---|---|
US6397381B1 (en) | 2002-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6397381B1 (en) | System and method for repairing a damaged application program | |
US6427227B1 (en) | System, method, and computer-readable medium for repairing an application program that has been patched | |
US6370686B1 (en) | Method for categorizing and installing selected software components | |
US6353928B1 (en) | First run installer | |
US6317880B1 (en) | Patch source list management | |
US6363499B1 (en) | Method and system for restoring a computer to its original state after an unsuccessful installation attempt | |
US6618857B1 (en) | Method and system for installing software on a computer system | |
US6438749B1 (en) | Method and system for restoring a computer to its original state after an unsuccessful patch installation attempt | |
US6199204B1 (en) | Distribution of software updates via a computer network | |
US6418554B1 (en) | Software implementation installer mechanism | |
US6202207B1 (en) | Method and a mechanism for synchronized updating of interoperating software | |
US6237144B1 (en) | Use of relational databases for software installation | |
US6353926B1 (en) | Software update notification | |
EP1133738B1 (en) | Method and apparatus for new device driver installation by an operating system | |
US6718549B1 (en) | Methods for managing the distribution of client bits to client computers | |
US6920631B2 (en) | Software installation and validation using custom actions | |
CN1174307C (en) | Method, system and computer readable storage medium for automatic device driver | |
US8181166B2 (en) | System and method for determining when an EJB compiler needs to be executed | |
US20060271924A1 (en) | Method and apparatus for automating updates to dependencies | |
US20060020937A1 (en) | System and method for extraction and creation of application meta-information within a software application repository | |
US8132187B2 (en) | Driver installer usable in plural environments | |
US6269377B1 (en) | System and method for managing locations of software components via a source list | |
US6754722B2 (en) | System and method for installing device drivers in a computer system | |
US7873960B2 (en) | Generic packaging tool for packaging application and component therefor to be installed on computing device | |
US7146531B2 (en) | Repairing applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |
|
AS | Assignment |
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034766/0001 Effective date: 20141014 |