US20050027846A1 - Automated electronic software distribution and management method and system - Google Patents
Automated electronic software distribution and management method and system Download PDFInfo
- Publication number
- US20050027846A1 US20050027846A1 US10/831,323 US83132304A US2005027846A1 US 20050027846 A1 US20050027846 A1 US 20050027846A1 US 83132304 A US83132304 A US 83132304A US 2005027846 A1 US2005027846 A1 US 2005027846A1
- Authority
- US
- United States
- Prior art keywords
- managed client
- instructions
- program
- agent
- managed
- 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
- G06F8/64—Retargetable
-
- 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
Definitions
- the present invention relates to computer systems.
- embodiments of the present invention provide an automated electronic software distribution and/or management system.
- ESD Electronic Software Distribution
- ISVs Independent Software Vendors
- OEMs Original Equipment Manufacturers
- ISVs utilize ESD systems to facilitate the distribution of updates, “hot patches” and “bug fixes.” These systems provide for greater customer support and service to the ISV's end users. Additionally, OEMs whose equipment contains software can better manage and monitor their equipment, as well as provide better service and support to their customers through ESD systems.
- ESD systems are capable of distributing software from a remote system and may include the ability to concurrently distribute identical software to groups of computers based on existing attributes of those systems, or a pre-defined mapping.
- Other systems include some degree of asset discovery, which is the act of collecting and storing data on the existing software and hardware assets present on a given computer.
- asset discovery is usually accomplished through the use of a separate, dedicated system.
- an administrator creates a “job” by specifying what software package they want to distribute, which targets are to be run, and when the job is to run. The job is executed on the specified targets at the specified time, after which the job is removed from the system.
- This type of system is highly “action” oriented, that is, the administrator decides what action to take, and instructs the system to initiate that action. Once the action is complete, the system returns to an idle state, and does not initiate any more activity until specifically told to do so by an administrator.
- ESD Evolved Secure Sockets Layer
- certain targets such as network user objects, computers or other device containing embedded software
- the system keeps track of whether the package has been applied to a given system, and installs the package if it is needed. This type of system may not take action immediately or any automated actions whatsoever. If the entitlement is made to a user, for example, the system may not take any action until that user logs on to a system. After the user has logged on, the system may deploy the entitled package.
- the conventional job-based ESD system is limited since it has no way of reacting to the current state of a machine.
- the administrator To accomplish state management, the administrator must know what the state of the managed computers is ahead of time, either by maintaining a strict, detailed and cumbersome history of the computers, or by monitoring the data returned by an asset discovery system.
- Embodiments of the present invention provide a method and system for electronic software distribution and management.
- a request for instructions may be received from a managed client machine.
- the request for instructions may be analyzed. and may include asset inventory data.
- One or more instructions may be generated based on the request for instructions and the asset inventory data.
- the one or more instructions may include an instruction to install an application on the managed client machine.
- An acknowledgment may be received from the managed client machine if the instruction has been processed.
- FIG. 1 is a system diagram in accordance with an embodiment of the present invention
- FIG. 2 illustrates a block diagram of an agent in accordance with an embodiment of the present invention
- FIG. 3 is a block diagram of a server in accordance with an embodiment of the present invention.
- FIG. 4 is flowchart illustrating a method in accordance with an embodiment of the present invention.
- FIG. 5 is flowchart illustrating a method in accordance with an embodiment of the present invention.
- Embodiments of the present invention provide an automated electronic software distribution and/or management ESDM system and method that provides, for example, effective state management across a disparate environment.
- Embodiments of the present invention may provide an ESDM that may use asset discovery data to execute software delivery, installation, removal and/or management.
- the automated ESDM system may explicitly query the managed device(s) prior to installation and/or removal of software.
- Embodiments of the present invention may provide scripts that may be run on one or more devices. The scripts when processed, by a managed client may download, remove and/or otherwise process software programs, for example.
- Embodiments of the present invention may provide a platform including integrated asset discovery (inventory, discovery, tracking and reporting), software distribution (application deployment, license management, self healing, disaster recovery), software migration (OS migration, validation, data back up), detailed real time analytical reporting and/or optimized ESDM planning and scheduling.
- Embodiments of the present invention may provide a license distribution and/or management system.
- Embodiments of the present invention may provide a web-based tool that may allow, for example, management of software updates for managed computers.
- embodiments of the present invention may permit control of how and/or when the updates to managed computers are installed. Additional features that may be provided include but are not limited to repair and/or removal of software as well as hardware devices, deployment of mandatory updates, and/or provisioning of scripts on remote devices.
- a script may be macro or batch file including a list of commands and/or instructions that may be executed on a managed client without user interaction, for example. The script may be written in any suitable language.
- FIG. 1 is an automated ESDM system 10 in accordance with an embodiment of the present invention.
- ESDM system 10 may include one or more enterprise systems (ES) 14 that may be coupled to one or more master servers (MS) 12 via a transit network 16 .
- the MS 12 may include and/or may be coupled to a database (DB) 18 .
- the ES 14 may include one or more on-site servers (OSS) 24 coupled to one or more databases (DB) 28 .
- the OSS 24 may be coupled to one or more remote site servers (RSS) 22 .
- the RSS 22 may be coupled to one or more managed clients 20 .
- the clients 20 may be one or managed computers, servers, communications devices (e.g., routers, switches, etc.), consumer appliances, vehicles, and/or any other device or item.
- the transit network 16 may be a communications network that may include, for example, a public switched telephone network (PSTN), an Integrated Services Digital Network (ISDN), a cellular network, a digital mobile network, a Personal Communication Systems (PCS) network, an Internet, an intranet, a signaling system 7 (SS 7 ) network, a local area network (LAN), a satellite network, an advance intelligent network (AIN), any suitable digital or analog network, a broadband network such as a cable network, any other public and/or private network, any other suitable national and/or international communications network or any combination thereof.
- PSTN public switched telephone network
- ISDN Integrated Services Digital Network
- PCS Personal Communication Systems
- Internet an intranet
- SS 7 signaling system 7
- LAN local area network
- AIN advance intelligent network
- any suitable digital or analog network such as a cable network
- any other public and/or private network any other suitable national and/or international communications network or any combination thereof.
- the various components shown in ESDM system 10 may be coupled by wired (e.g., optical, electrical, etc.) and/or wireless means.
- the MS 12 may be coupled to the transit network 16 by a optical and/or a wireless connection.
- the managed clients 20 may be coupled to the RSS 22 and/or the OSS 24 by wired and/or wireless means.
- the managed clients 20 are shown coupled to the RSS 22 , it is understood that the managed clients 20 may be coupled directly to the OSS 24 and/or to the master server 12 . Therefore, the RSS 22 and/or the OSS 24 may be bypassed.
- the functionality of any component in ESDM 10 may be provided in any other component.
- each ES 14 may be a separate campus within a larger organization, such as a geographically diverse corporation or government entity.
- the automated ESDM 10 including the transit network 16 , MS 12 , DB 18 and/or ES 14 may include one or more switches, communication interfaces, and/or other components that are not shown for convenience. It is recognized that the various types of communications that may be provided in these systems may include hard-line, wireless, RF, optical, and/or any other type of communications or any combination thereof.
- the various devices, systems, networks, etc. may be appropriately configured or equipped with hardware and/or software to operate in such environments.
- the ESDM 10 architecture may include multiple levels including the MS 12 , the OSS 24 , the RSS 22 , and managed clients 20 . However, it is recognized that the ESDM 10 architecture may be provided by fewer levels by combining the features of one or more levels, for example. By the same token, the ESDM 10 architecture may include more levels by distributing the features throughout additional components and/or devices.
- the MS 12 , OSS 24 and/or RSS 22 may provide a centralized location where software updates, scripts or the like may be available.
- Software updates and instructions on how to distribute the updates may be published to the MS 12 .
- the updates, instructions, scripts, etc. may be passed to one or OSSs 24 for distribution, for example.
- the remote MS 12 may act as a redundant backup system to the OSS 24 located within the ES 14 .
- Connected to the maser server 12 is a database 18 for storing information and data files relevant to the process of preserving data stored on managed computers within ES 14 .
- the updates, scripts, programs, etc. may be stored in a central repository such as DB 18 and/or DB 28 .
- the DB 28 coupled to OSS 24 may additionally contain information about individual managed client 20 such as their disk size, memory, last user, IP address, and the like.
- the DB 28 may contain “entitlements” which are associations between clients 20 and application software that is permitted to be loaded on the clients 20 .
- the entitlements may be represented as database records that associate application software program(s) with the computers 20 based on a device identifier and a user login identifier. The entitlements for a particular managed device may be set by a user via the console 30 .
- the agent 32 may poll one or more of the other components (e.g., RSS 22 , OSS 24 , MS 12 and/or DB 28 , in FIG. 1 ), and may retrieve its entitlement.
- the software package indicated by the entitlement which may stored on the RSS 22 , for example, may be downloaded directly from the RSS 22 to the client 20 .
- one or more of the servers may provide remote access (e.g., web access) where users can log-in to check on installation status, program status, health and/or other information related to clients 32 .
- the MS 12 may receive replication information from the OSS 24 and/or RSS 22 for reporting purposes, for example.
- the OSS 24 may resides at an operational center and/or may be the repository for all customer activity.
- the OSS 24 may communicate all activity with each RSS 22 which may be located at customer sites, for example.
- the OSS may also provide reporting services as well as replicating all its information to for example, the MS 12 .
- Embodiments of the present invention may include an alternate OSS 24 that may serve as a backup and/or alternative monitoring and/or access point. In some cases, some information from an alternate OSS 24 may be restricted to certain functions or information. For example, the alternate OSS 24 may be restricted only to entitlement information or the like.
- the OSS 24 may include a management console 30 .
- the console 30 may provide an ESDM administrator with the ability to view and/or manipulate data in an ESDM hierarchical directory.
- the directory may provide the listing of all customers and/or clients assigned to the OSS 24 .
- Customer and/or clients may include other on-site servers, remote site servers and/or clients.
- Customers and/or clients may be organized in cluster or other arrangement.
- a cluster may be a grouping of servers, computers or other devices with an order defined in the cluster. It is recognized that the servers, computers, etc. can be dynamically grouped into the proper cluster container, for example.
- the console 30 may permit administrators to, for example, control, monitor and preserve inventory, and/or schedule, audit or deploy the managed computer systems and software operations.
- the RSS 22 may exist as a stand alone computer and/or may co-exist with another server on the same physical computer, for example.
- the RSS 22 may be coupled to and/or may serve a network or the like that may include one or more clients 20 .
- the RSS 22 may replicate with its associate OSS 24 over, for example, the Internet via HTTPS or other protocol.
- RSS 22 may be a client that hosts an agent (to be described below in more detail) that points to itself for entitlement and monitoring purposes. It is recognized that multiple servers 22 may be connected to a single OSS 24 .
- the clients 20 may be one or managed computers, servers, communications devices (e.g., routers, switches, etc.), consumer appliances, vehicles, and/or any other device or item.
- the clients 20 may be coupled to the RSS 22 , OSS 24 and/or MS 12 by any type of wired and/or wireless connection.
- One or more of the clients 20 may include a managed agent 32 .
- the agent 32 may be a hardware and/or software component that may periodically contact the RSS 22 , for example, for a request for an instruction. Once the instruction is received, the agent 32 may process the instruction in accordance with embodiments of the present invention.
- the server may provide a polling interval for the agent to poll the RSS 22 , OSS 24 and/or MS 12 .
- the polling interval may be a pre-determined periodic interval.
- agent 20 may be incorporated into an RSS 22 , MS 12 and/or OSS 24 . If the agent 20 runs on one or more of these servers, the agent 32 may be used to update deployment system software on these servers, for example.
- Clients 20 may include various types of computers, such as conventional desktop personal computers (PCs), portable computers (notebooks, laptops), workstations, computer network servers or any other device that has embedded software and is capable of networked communication.
- Each device 20 may include conventional computer components, such as a processor, random access memory (RAM), one or more local hard drives, OS software, application software, data files, network interface hardware and software, and the like.
- one or more clients 20 may runs a Windows® OS available from Microsoft® Corporation of Redmond, Wash.
- the managed client 20 may be an incorporated into an computer, automobile, consumer appliance, cell phone or other type of communication device (pager, satellite phone, etc.), personal digital assistant (PDS), and/or any other device that processes a software program, application and/or data.
- PDS personal digital assistant
- the clients 20 may be organized into groups, with each group being networked to a corresponding RSS 22 , for example.
- the RSS 22 and its corresponding clients 20 may be connected together by a conventional local area network (LAN), such as Ethernet or a wide area network (WAN), to permit communication and transfer of data files.
- LAN local area network
- WAN wide area network
- the grouping of the clients 20 and hierarchical structure of the ES 14 may permit parallel execution of the migration process or software deployment among the computers.
- the server(s) may manage and/or distribute licenses to one or more clients 20 that may be part of a group such as a LAN, WAN or the like.
- the RSS's 22 may be networked to an OSS 24 using a commercially-available LAN or WAN.
- the OSS 24 may be a centralized server that is configured to initiate and control program deployment to the managed clients 20 across the ES 14 .
- the OSS 24 may include, among other things, a browser console 30 and is connected to an onsite DB 28 .
- the browser console 30 may be a web browser application that permits a user to enter commands that control the data preservation and/or application deployment process.
- the console 30 may also provide processing status and reports to the user, and permits the user to set entitlements, foe example.
- the agent 32 may include a system management program written in, for example, C++ and/or may run as a Windows® system service.
- the agent 32 may poll the RSS 22 , OSS 24 and/or MS 12 (e.g., via HTTPS or other protocol) for any requests or instructions, for example.
- the server(s) may provide entitlement programs, scripts, install and/or un-install instructions, and or other operations, for example, to be processed by the managed client 20 .
- these operations may include, for example, the installation, removal and/or repair of software, installation, removal or repair of scripts and/or the installation, repair and/or removal of hardware.
- the agent 32 may accept Microsoft® Installer packages, for example, as content from the RSS 22 .
- the RSS 22 which the agent 32 is to poll may be predetermined during agent installation and/or may be dynamically determined by the agent 32 and/or by the RSS 22 , OSS 24 and/or MS 12 , for example.
- This setting may be stored in a registry located in the agent 32 or in an external registry, for example.
- the agent 32 may receive instructions from OSS 24 and/or MS 12 as well as RSS 22 .
- the RSS 22 , OSS 24 and/or MS 12 may contact the agent 32 and request information and/or may instruct the agent to perform one or more operation or task.
- the agent 32 including the system management program may collect hardware and/or software information from the client 20 system that it is installed on.
- the agent 32 may collect system, status, and/or health information from the hard drive, the random access memory (RAM), the processing unit such as the CPU, the basic input-output system (BIOS), etc. This information may be part of the asset inventory of the system.
- the agent 32 may use any type of interface or tool such as the Windows WMI and/or Win32 APIs or the like to get the desired information.
- the agent 32 may use the Microsoft Windows® Installer database APIs (contained and populated on Windows 2000 systems by MSI based content) along with the uninstall key of the Windows® registry.
- the information collected by the agent 32 may be formatted in, for example, extensible markup language (XML) and may be posted to the RSS 22 and/or the OSS 24 .
- XML extensible markup language
- the ESDM system may only permit a pre-determined number of clients to be monitored by the RSS 22 , for example.
- the RSS 22 may maintain count of the number of licensed systems for any given customer that are being monitored by the RSS 22 . If the number of licensed connections is exceeded, the RSS 22 may not allow additional connections and an error will be logged.
- the RSS 22 depending on configuration, may seek permission to allow additional connections and may report the additional connections to the OSS 24 and/or MS 12 , for billing purposes or the like.
- the agent 32 and/or the RSS 22 may monitor the number of, for example, licensed program applications that are present on one or more managed clients, and/or one or more networks.
- the RSS 22 may receive license keys or other licensing related information related to the program applications from clients 20 .
- the RSS 22 may validate the information to determine if, for example, the provided keys are authentic. Once the information is validated, the RSS 22 may determine if, for example, the client has an authorized version of the program. If the client is determined to have an unauthorized version of a program, the RSS 22 may warn the user and/or may offer to provide and/or purchase the client 20 with an authorized version of the application program.
- a install script may be sent to the manages client by the server.
- the client may arrange to make payments for the purchased program by appropriate means (credit card, debit card, check, etc.).
- the purchased program may be downloaded and/or installed in the managed client.
- an remove script may be sent to the managed client from the server. The remove script may be processed by the agent to un-install and/or delete the unauthorized version of the program.
- a trial version of the program may be provided by the server or an offer interface to retrieve a valid version of the program, as described herein, may be provided to the managed client.
- the fingerprint for the X.509 certificate, for example, of the RSS 22 to which the agent is to communicate with may be imported and/or declared valid.
- the agent 32 may utilize the Microsoft Windows 2000 WinINet APIs (a standard Win32 Library) for HTTPS and SSL V3 communications, for example, for communications.
- the agent 32 may communicate with its designated RSS 22 over the suitable port such as HTTPS port 8443 and 443 . It is recognized that the ports 8443 and 443 are given by example only and that the server can be configured to communicate over any port.
- an agent 32 may, for example, contact the OSS 24 and/or RSS 22 at regular intervals and may request instructions from the OSS 24 and/or RSS 22 . Once the instructions are received, the agent 32 may process the received instructions. For example, these instructions may direct the agent 32 to gather and return asset inventory data, and/or may direct the agent 32 to install or remove a software package from client 20 .
- a task processor may receive requests from agents 32 , and based on the request may compare the current state of the managed client 20 (based on the data returned from asset discovery) against the entitlements stored in an directory. If there is a discrepancy between what is entitled and what is currently installed in the managed client 20 , the task processor may automatically generate the instructions to either add and/or remove programs necessary to bring the system to the desired state.
- the task processor of the OSS 24 or RSS 22 may also send instructions at regular intervals to cause the agent to resend its asset inventory data.
- the servers may use a hierarchical directory that may provide the listing and/or access to, for example, all customers and/or clients assigned to the respective server.
- the directory usually referred to as a serviceability directory, may be based on based on, for example, the IEEE X.500 standard. See, International Organization for Standardization/International Electrotechnical Commission 9594-1 (1993).
- X.500 based directory this system may have three types of container objects. The highest level container type is referred to as the “country”.
- the organizational unit can contain both leaf objects and other organizational units.
- Leaf objects include “system” objects, such as Networks and Servers, “targets”, such as Users, Computers, Groups and Containers, and “products”. It is recognized that the directory standard is given by way of example only and that any type of directory format may be employed in embodiments of the present invention.
- the directory When used in a multi-server environment, the directory may be stored in a decentralized structure. All servers 22 and/or 25 may have a full copy of the portion of the directory that they need. Servers that share parts of the directory may keep the data consistent across servers by using a replication process.
- an entitlement involves the interaction of three objects, a target, a product and an entitlement.
- Targets may be objects in the directory, and include users, computers, devices, applications, groups and/or containers. The relationship between these objects can be explained in that targets are entitled to products.
- entitlement objects represent a many-to-many relationship between targets and products. While an entitlement may be made to a single target, it may ultimately be applied to many computers if it is made to a group or container.
- the following process when a computer is being analyzed for new tasks, the following process, for example, may be used to find entitlements. All entitlements made directly to the computer target may be considered. Entitlements made to the computer's parent container are considered, followed by its grandparent and so on to the root. Entitlements made to any groups that the computer belongs to are considered. The groups may be processed in alphabetical order, and each group's containers may also be considered. Next, entitlements made to the primary user target for the computer are considered and again, containers are also processed. Finally, groups that the user is a member of may be considered. This process may provide provides the system administrator with more flexibility in delivering, managing, monitoring, migrating, and/or inventorying software.
- a server such as RSS 22 may be designated as a “local server” for one or more clients 20 .
- An installation may also have other server objects that represent peer installations.
- the other servers can be used to send polling agents to other installations that may be physically closer, or otherwise more appropriate for a particular client 20 .
- a network object may represent an IP subnet, or other range of IP addresses.
- the network may be used in a multi-server installation to approximate a physical location for a given agent or client. For example, when an agent 32 polls a server 22 , the server 22 may first attempts to match the requesting IP address to a network object that it has in its directory. If a network is found, the server list that may be mapped to the network is examined. If the current server 22 is in the list, then the poll is passed on to the task processor of server 22 , for example. If the current server 22 is not in the list, the list may be sent to the agent 32 , along with a command to reset, so that the agent can redirect itself to another more appropriate server. The agent may examine the received list, identify an appropriate server from the list and may poll that server for a request for instructions.
- the agent 32 may include a system management program that is run on the managed client 20 .
- the program may be designed to be run continuously, as long as the system is on or the program may only operate for certain periods of time. For example, on Windows® NT based systems (e.g. Windows® NT, 2000 and XP), this means that the agent 32 may normally run as a system service.
- the agent 32 may be executed at system startup, and allowed to run continuously as a daemon until system shutdown.
- FIG. 2 is a diagrammatic representation of an agent 32 , in accordance with an embodiment of the present invention.
- agent 32 may be a software program, a hardware device and/or any combination thereof.
- the agent 32 may be part of the hardware and/or software that exists in the managed client 20 or may be a separate unit and/or may be a combination thereof.
- the agent 32 may be modular, and may include, for example, a polling module 27 , an inventory module 29 , and/or a one or more instruction handlers 25 .
- the polling module 27 may be responsible for making, for example, an HTTP call to the server 22 on a regular interval, downloading an instruction from the server 22 , using the appropriate instruction handler 25 to process the instruction, and/or for sending the results back to the server 22 .
- the instruction handler 25 may process the one or more instructions received by the polling module 27 .
- the instruction handler 25 may work query the inventory module 29 for the status of existing software and/or hardware to fulfill the received instructions.
- the inventory module 29 may include inventory data is broken up into groupings called “catalogs.” Each catalog may include a collection of related data, for example, a list of installed peripheral component interconnect (PCI) devices, for example.
- PCI peripheral component interconnect
- the data for the catalog may be collected by the agent 32 in XML format. However, it is recognized that the data may be collected in any other format.
- the catalogs may be serialized using standard Java® serialization mechanisms, for example.
- the catalogs may be stored on the servers file system as individual binary files or may be stored in a database, for example. Catalogs may also be converted to and from XML using “Castor” technology, for example. Because a catalog may be represented as XML, other views can be generated using extensible style language (XSL) transforms, including hyper text markup language (HTML) and structured query language (SQL), for example.
- XSL extensible style language
- HTML hyper text markup language
- SQL structured query language
- FIG. 3 is a diagrammatic representation of a server 50 , in accordance with an embodiment of the present invention.
- Server 50 may be any of the servers (or part of any of the servers) of the ESDM system 10 .
- server 50 may be part of MS 12 , OSS 24 and/or RSS 22 .
- server 50 may be represented as a software program, a hardware device and/or any combination thereof.
- the server 50 may include a task processor 51 , task queue 53 and/or a license manager 59 , for example.
- Server 50 may include other components that are omitted for simplicity.
- the server 50 pay process the polling requests, for example, received from agent 32 .
- the server 50 may set up a number of initialization tasks to execute in a task queue 53 for that agent.
- the server 50 may return one or more instructions for each task to the agent for it to process. As the agent 32 executes those instructions and returns the results, the tasks are removed from the task queue 53 .
- the task processor 51 may process the installation of a software package and/or executing an inventory package.
- the task processor 51 may generate a list of software that is either directly (e.g., made to the computer itself) or indirectly (e.g., made to containers, groups or users) made to the computer.
- the software on the list may be sorted by product version so that later versions are processed first.
- the task processor 51 may examine each version of the software on the list and may compare the expected action with the current state of the managed client 20 based on its agent 32 . For example, if the current state of the managed client 20 is compatible with (or the same as) the corresponding software on the list being examined, then the software is ignored and there is no updated needed.
- the process to install product X, version Y may be ignored. If however, product X, version Y is not currently installed, then the process to install the product may be used to create one or more tasks that may be added to the task queue 53 for processing.
- the server 50 may discontinue further installations associated with that agent and/or client until the current installation is complete. This action may be take to maintain compatibility. However, it is recognized that the server 50 may continue to process other installations even if a current installation is pending.
- the server may use parallel processing techniques, for example, to process additional instructions and/or processes.
- the server 50 may use, for example, a compatibility criteria to determine if a particular software product should be installed and/or removed, for example. For example, a software product is compatible and no further installation associated with that product may occur if, for example, the product is installed or if any later version of the product is installed. If, for example, a lower version of the software product is installed, an updated version of the program may be installed or scheduled to be installed. But, if the latest version of the program or a higher version of the program is installed, then the program may not need to be updated. It is recognized that even if an updated or later version is installed, the same program may be re-installed in the managed client. Moreover, even if the entire program is not installed, additional setting, upgrades, fonts, or other data may be installed.
- the server 50 may forward a un-installation instruction or un-installation entitlement associated with a software product. If for example, it is determined that a software or program needs to be partially or completely un-installed and/or deleted from the managed client, the server may send an un-installation and/or delete instruction (and/or script) to the managed client to un-install and/or delete the program. If a program tom be deleted and/or un-installed exists in the managed client with the same or lesser version, then the proper instruction and/or script may be sent to the managed client for processing. The managed client may receive the instruction and/or script and process the instruction and/or script to un-install and/or delete the program.
- This process can be done at any time and indicated by the server or as determined by the managed client, administrator, and/or user. It is recognized that preconditions may be set before a program can be un-installed and/or deleted from the machine. If, for example, a proper license exists for an upgraded program, the old program may not me un-installed and/or deleted until the upgrade is scheduled and/or completed. Of course, other checks may also be made before programs are removed. For example, data associated with the program to be un-installed and/or removed may be backed up by the client and/or server so that the data is not lost and can be available at a later time.
- Embodiments of the present invention may provide a license authorization script or instruction that provides an offer interface (e.g., an offer icon) on, for example, a managed client's computer.
- the offer interface may provide a program offer to install a valid program in the managed client, for example. If the offer icon is selected and/or a valid license is authorized to the managed client, a program associated with the offer icon and/or license may be downloaded by the managed client.
- the program may be automatically deleted and/or un-installed, and the program license may be available to others if requested via offer interface located on other machines. Accordingly, an authorized license can be validly used by several users under the terms of the license.
- the offer interface may be compatible if the same software of any version is not yet installed, or if the same software with any version is already installed.
- An offer interface associated with any program may be installed on a client's machine. This could be a new program or a program that is already installed. In the latter case, an administrator or user may want to change status of the program from actually having a copy of the program loaded on the machine at all times to having “access” to the program when needed and allowing others to used the program when not needed or when “use limits” are passed, for example.
- “use limits” may, for example, indicate a predetermined number of uses for the program, a predetermined time the program may be used and/or any combination thereof. Once the use limit has been reached, the program may be un-installed and/or may be deleted. It is recognized that use limits can be set for programs downloaded via the offer interface as well as other programs, as described herein.
- an install entitlement for an offer interface may be designed to be compatible twice, with different behaviors. For example, first, an offer interface installation with use limits may follow the same compatibility rules as a normal install entitlement. In other words, an offer interface may be installed for any existing or new programs. Then, when the product catalog indicates that the time since the software has been used on the client machine has surpassed the use limit specified in the entitlement, the entitlement becomes compatible again, this time to change the installation to an offer interface state. In other words, when the offer limit has been passed, the associated program may be un-installed and/or deleted. However, the offer interface may remain or may be re-installed on the client's machine for future selection. If the use limit is never reached, then the second behavior may never be realized by the system and the installed product remains installed.
- installation, removal, and/or the offer interface may be provided by scripts or other instructions that may be sent from the server to one or more managed clients.
- the scripts may be processed by the managed client to complete the operation.
- the instruction is an instruction to install an updated program
- the managed client may process such script to download the program at any time. In some cases the download may be immediate and/or in other cases the download may be delayed. This concept may be applied when programs are un-installed, removed and/or when offer interfaces are processed, for example.
- FIG. 4 is a flowchart illustrating a method 400 in accordance with embodiments of the present invention.
- an agent may poll one or more servers in the ESDM system, as shown in box 410 .
- the poll may include identification data associated with the agent. In other cases, the poll may also include a request for instructions.
- the server may verify whether the agent is part of a system that the server is responsible for, as shown in box 415 . If the agent is part of the system, then the server may process the agent. If however, the agent is not part of a system the server is responsible, the server and/or a master server may identify and forward the agent to the correct server.
- the server may transmit an asset inventory instruction including a request for the agent to collect and return inventory asset data to the server.
- the inventory asset data may include information related to hardware, software, licensing, etc. installed in the managed client associated with the agent. It is recognized that the agent may be associated with more than one managed client.
- the server may provide a polling interval to the agent. The polling interval may provide, for example, an indication when the subsequent polls to the server should occur.
- the server may receive the asset inventory data from the agent, as shown in box 420 .
- the server may process the asset inventory data received from the agent, as shown in box 430 .
- the server may determine if an program is to be installed on the managed client, un-installed and/or deleted from the managed client, and/or if an offer interface is to be provided to the managed client.
- the server may provide license management services for one or more agents as described herein.
- the server may place one of more instructions to be sent to the agent in a queue. As subsequent polls are received, one or more instructions may be sent to the agent for processing.
- the asset inventory data may be used by the server to established a base-line for the one or more managed clients associated with the agent.
- the asset inventory data and/or other information may be stored in a database for future use.
- the server may provide the default tasks to those managed clients that have designated hardware and/or software configurations.
- the default tasks may provide all the managed clients with compatible hardware and/or software. For example, the default tasks may request removal of certain programs while the installation of other programs, for example.
- the asset inventory data may be processed by the server to determine which programs the managed client is entitled to. If it is determined that a managed client is entitled to a program, the server may transmit an installation script to be sent to the agent so that the entitled program can be downloaded by the agent, as shown in boxes 440 and 443 .
- the installation script may be placed in a queue to be sent to the agent and/or may be sent directly to the agent. Once the agent receives, for example, the installation script, the agent may process the installation script to down load the program, as shown in box 445 .
- the asset inventory data may be processed by the server to determine if a program(s) should be removed (e.g., un-installed and/or deleted) from the managed client, as shown in box 450 . If it is determined that a program is to be removed from a managed client, the server may transmit a remove script to be sent to the agent so that the identified program can be un-installed and/or removed from the managed client, as shown in box 453 . The remove script may be placed in a queue to be sent to the agent and/or may be sent directly to the agent. Once the agent receives, for example, the remove script, the agent may process the remove script to un-install and/or delete the identified program(s) from the managed client(s), as shown in box 455 .
- a program(s) e.g., un-installed and/or deleted
- the asset inventory data including, for example, licensing data associated with one or more managed clients may be processed by the server to determine if an offer icon may be removed from or installed in a managed client, as shown in box 460 .
- the server may perform license management functions to manage program licenses associated with the one or more managed clients.
- the server may provide offer icons to the agent so that programs can be installed and/or removed so that valid and licensed programs are available. If it is determined that an offer icon should be installed or removed from the managed client, the server may transmit a offer script to be sent to the agent so that the identified program can be installed or removed from the managed client, as shown in box 463 .
- the offer script may be placed in a queue to be sent to the agent and/or may be sent directly to the agent. Once the agent receives, for example, the offer script, the agent may process the offer script to install or remove an offer icon from the managed client(s), as shown in box 465 .
- the agent may send an acknowledgement to the server when one or more scripts are processed.
- the acknowledgment may indicate the status of the agent and/or managed client.
- the agent may forward updated asset inventory data to the server.
- the server may update its stored asset inventory data, as shown in box 470 .
- the server may transmit a poll interval to the agent, as shown in box 480 .
- the poll interval may indicate when the server may need additional information from the agent, for example. It is recognized that the agent may poll the server as needed, for example, if there is a status change, other event, or the like, for example.
- the server may provide a script, file name and/or product code associated the install, remove and/or offer icon data, for example, to the agent.
- Embodiments of the present invention may provide a license management system, as part of the ESDM system, which may permit a client such as an independent software vendor (ISV) and/or an Original Equipment Manufacturer (OEM) to maintain an inventory of and/or maximize the efficient use of their software licenses.
- This license management system may incorporate and/or provide embodiments of the “offer interface” feature described above.
- the license manager 59 ( FIG. 3 ) may provide a license management service that may for example, detect and/or remove unused or unapproved software from managed systems.
- the license manager may permit a user to mange and/or update licenses automatically.
- the license manager may provide a “use limit” value associated with one or more programs, for example, installed on client machines.
- the “use limit” may indicate when the manager 59 , for example, may remove a particular software from the managed client 20 if the inventory indicates, for example, that it has not been used in a specified number of days or if the existing number of copies has exceeded an authorized number of copies.
- the task processor may schedule a removal task (e.g., remove script) in task queue 53 , for example.
- the server 50 may send the agent 32 an uninstall script for the software product.
- the software instruction may be followed by, for example, an offer interface to permit the user to re-install and/or re-activate the software product.
- the offer interface may provide a offer icon that may allow a program to appear to be installed on a client machine without actually having the binaries in place to run the software. When the user wishes to use the software (indicated by double clicking the offer icon), it is automatically installed.
- the offer interface may provide one or more programs that do not require a user license until the program is actually installed.
- any type of technique may be utilized, for example, to inventory the installed software at and/or collect data from the managed client 20 .
- Such techniques may be platform dependant. For example, if the managed client is running the Microsoft Windows® operating system, it may be possible to quickly query the system for a list of installed software using the “Add/Remove Programs” function from the control panel and the contents of the Windows registry.
- the Microsoft Windows Installer program may be used to obtain a list of installed programs and/or other data associated with the managed client 20 . It is recognized that if a different operating system (OS) is used, appropriate interfaces may be available to retrieve the desired information.
- OS operating system
- a signature is a collection of attributes of a system that indicate with a high probability that a particular software product is installed. Signatures are usually based on the existence of at least one specific program file, but may also be based on directories, registry entries and/or values from configuration files.
- FIG. 5 is a flowchart illustrating a method 500 in accordance with embodiments of the present invention.
- Agent 32 may be downloaded to the managed client 20 from a networked server in response to a network login script executed by each computer.
- the login script may include a path designating the location of the agent software to be downloaded.
- an e-mail attachment or URL link, remote scripting, or other ESD system may be used to distribute the agent 32 .
- An indication may be provided when the agent 32 has been successfully installed.
- additional information may further be provided if the agent 32 is idle, is performing a task and/or has failed to complete a task.
- the agent 32 may commence an asset discovery and/or inventory process to collect asset information for each client 20 . This information may be reported to the RSS 22 , OSS 24 , MS 12 and/or database 28 . The agent 32 may conduct the asset inventory process on its own or based on an instruction received from RSS 22 , OSS 24 , or the like.
- an agent may generate and transmit a request for instructions to a server, as shown in box 530 .
- the server may generate one or more instructions to the agent, as shown in box 540 .
- the asset data may include end-user computer hardware and software characteristics, such as memory size, processor type and speed, resident software, software versions, and the like.
- the instructions that are received from the server may include instructions to, for example, install software, remove software, repair software, and/or any combination thereof. The instructions may be based on, for example, the asset data collected.
- the agent may process the appropriate instruction(s) from the server and/or may transmit an acknowledgement to indicate that the instruction was processed to the server, for example.
- agent 32 may conduct a polling routine in which the agent 32 may periodically poll the OSS 24 via an RSS 22 to check, for example, for programs or its entitlement.
- the polling may be accomplished using, for example, a hypertext transfer protocol (HTTP) GET command sent to the OSS 24 via the RSS 22 from the client 20 .
- HTTP hypertext transfer protocol
- the command may provide provides a device identifier and/or a user login identifier to the OSS 24 .
- the polling period may be parameterized and can be set by a user at the console 30 . The period may be set to poll every few minutes, hours, days, etc.
- the agent 32 may begin a polling routine based on a predetermined event such as of a user manually installs a program and/or the managed client 20 is otherwise modified, for example.
- a validation routine may run by the OSS 24 .
- This routine may compare the list of supported hardware and minimum computer requirements to the individual asset inventory information gathered by the agents 32 about the clients 20 . As a result of this comparison, the agent 32 may identify software and/or hardware that maybe needed. In the case of software, the software may be downloaded as described herein. If hardware is missing, the RSS 22 and/or OSS 24 may determine whether the hardware exists and if it does, may attempt to run the appropriate utility to install the hardware in client 20 . If the hardware does not exist, a notice such as via e-mail may be sent to an administrator and/or user to indicate that such hardware is needed. As new hardware and/or software is installed, the DB 28 and/or 18 may be updated.
- the agent 32 may receive a response indicating, for example, a location of its entitlement.
- the response may include a Java® wrapper having a script that gives a path as to where, for example, a Microsoft Windows® Installer (MSI) file may reside on the RSS 22 .
- the Java® wrapper may be in XML and may contain JavaScript.
- the client 20 may then download the MSI from the RSS 22 , and may begin down loading the entitlement.
- Embodiments of the present invention may provide for a method, system and apparatus that may repair an existing application on the client 20 through a process known as self-healing whereby the application repairs its own defects, it may install entitled applications and/or scripts, it may uninstall applications and/or it may provide an offer icon.
- Embodiments of the present invention describe an ESD system which may provide “state management” or software operations management.
- the invention provides for management of software products that are installed on a system or device, and the versions of those software products, conform to “approved” and optimal operating parameters.
- State management is desirable for a number of reasons, including but not limited to, system stability, standardization, accurate reporting, data and asset management, efficient software distribution and migration, information technology, project scheduling and license management.
- the support staff can more easily test the common scenarios, proactively prevent user problems and react more effectively and efficiently to user dilemmas.
- the occurrence of software conflicts may be significantly reduced, and thereby the number of unique configurations that have to be supported may also be reduced.
- this leads to better monitoring, tracking, support and/or service to end users.
- embodiments of the present invention may also provide monitoring of the number of versions of a given software product for license optimization and/or management. If a corporation has a software with “bulk” or “site-wide” licenses which may cover only one version of the software, it is desirable to track software so that only the licensed versions are installed in their environment for license compliance reasons. It may also be desirable for both the manufacturer and purchaser to track that they have too many or too few of any type of software license. Embodiments of the present invention provide many of the various features as described herein.
- embodiments of the invention may include, for example, components such as processors, computer readable memories, data ports or other interfaces, network ports or other interfaces, data buses and/or other hardware and/or software components (all not shown).
- the data ports or other interfaces may permit the various devices to communicate with other devices and/or with the transit network and/or information info-structure.
- the data buses may connect the processor, the computer readable memory, the data port or other interface and/or the network port or other interface and may permit communications between the various components in embodiments of the invention.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Information Transfer Between Computers (AREA)
Abstract
Embodiments of the present invention provide a method and system for electronic software distribution and management. A request for instructions may be received from a managed client machine. The request for instructions may be analyzed. and may include asset inventory data. One or more instructions may be generated based on the request for instructions and the asset inventory data. The one or more instructions may include an instruction to install an application on the managed client machine. An acknowledgment may be received from the managed client machine if the instruction has been processed.
Description
- The present application incorporates by reference and claims the priority of U.S. Provisional Application No. 60/465,118, entitled “Automated Electronic Software Distribution Method,” U.S. Provisional Application No. 60/465,122, entitled “Software Distribution Management System,” and U.S. Provisional Application No. 60/465,121, entitled “Method, System and Article of Manufacture for Data Preservation and Automated Electronic Software Distribution Across an Enterprise System,” all filed Apr. 24, 2003. The present application also incorporates by reference co-pending U.S. application Ser. No. ______, entitled “Method, System and Article of Manufacture for Data Preservation and Automated Electronic Software Distribution Across an Enterprise System,” and filed herewith.
- The present invention relates to computer systems. In particular, embodiments of the present invention provide an automated electronic software distribution and/or management system.
- Electronic Software Distribution (ESD) is the automated delivery of software to remote computer systems. This can be accomplished without human administration and/or intervention. ESD systems are important components of information technology environments, such as a corporate networks, that have a large number of computer systems and devices. These computers and/or networks are usually managed, supported and maintained by a small staff, and in environments where the administrating personnel may be physically distant or isolated from the systems they are responsible for managing.
- Further, ESD systems are also important to Independent Software Vendors (ISVs) and Original Equipment Manufacturers (OEMs). ISVs utilize ESD systems to facilitate the distribution of updates, “hot patches” and “bug fixes.” These systems provide for greater customer support and service to the ISV's end users. Additionally, OEMs whose equipment contains software can better manage and monitor their equipment, as well as provide better service and support to their customers through ESD systems.
- Conventional ESD systems are capable of distributing software from a remote system and may include the ability to concurrently distribute identical software to groups of computers based on existing attributes of those systems, or a pre-defined mapping. Other systems include some degree of asset discovery, which is the act of collecting and storing data on the existing software and hardware assets present on a given computer. However, asset discovery is usually accomplished through the use of a separate, dedicated system.
- Using one type of ESD system, an administrator creates a “job” by specifying what software package they want to distribute, which targets are to be run, and when the job is to run. The job is executed on the specified targets at the specified time, after which the job is removed from the system. This type of system is highly “action” oriented, that is, the administrator decides what action to take, and instructs the system to initiate that action. Once the action is complete, the system returns to an idle state, and does not initiate any more activity until specifically told to do so by an administrator.
- With another type of ESD system, certain targets, such as network user objects, computers or other device containing embedded software, are “entitled” (referred to herein as an entitlement) to have a certain package. The system keeps track of whether the package has been applied to a given system, and installs the package if it is needed. This type of system may not take action immediately or any automated actions whatsoever. If the entitlement is made to a user, for example, the system may not take any action until that user logs on to a system. After the user has logged on, the system may deploy the entitled package.
- The conventional job-based ESD system is limited since it has no way of reacting to the current state of a machine. To accomplish state management, the administrator must know what the state of the managed computers is ahead of time, either by maintaining a strict, detailed and cumbersome history of the computers, or by monitoring the data returned by an asset discovery system.
- Conventional ESD systems are unable to effectively determine if the software that is associated with the package is actually installed or not. For example, the existing entitlement-based systems only track whether their proprietary package was applied to the system or not. As these packages are typically used to wrap the install programs from the software vendor, if the software is removed later, either by the user or by another package, the system will not know to reapply it. Similarly, if the software already existed on the system, either because it was installed before the ESD system was in place, or because it was part of the initial image of the computer, these ESD systems would not be able to recognize that the software was already in place and would attempt to re-install it.
- Additionally, conventional ESD systems do not offer the flexibility and/or the features as described below in accordance with embodiments of the present invention.
- Embodiments of the present invention provide a method and system for electronic software distribution and management. A request for instructions may be received from a managed client machine. The request for instructions may be analyzed. and may include asset inventory data. One or more instructions may be generated based on the request for instructions and the asset inventory data. The one or more instructions may include an instruction to install an application on the managed client machine. An acknowledgment may be received from the managed client machine if the instruction has been processed.
- Embodiments of the present invention are illustrated by way of example, and not limitation, in the accompanying figures in which like references denote similar elements, and in which:
-
FIG. 1 is a system diagram in accordance with an embodiment of the present invention; -
FIG. 2 illustrates a block diagram of an agent in accordance with an embodiment of the present invention; -
FIG. 3 is a block diagram of a server in accordance with an embodiment of the present invention; -
FIG. 4 is flowchart illustrating a method in accordance with an embodiment of the present invention; and -
FIG. 5 is flowchart illustrating a method in accordance with an embodiment of the present invention. - Embodiments of the present invention provide an automated electronic software distribution and/or management ESDM system and method that provides, for example, effective state management across a disparate environment. Embodiments of the present invention may provide an ESDM that may use asset discovery data to execute software delivery, installation, removal and/or management. In one embodiment of the present invention, the automated ESDM system may explicitly query the managed device(s) prior to installation and/or removal of software. Embodiments of the present invention may provide scripts that may be run on one or more devices. The scripts when processed, by a managed client may download, remove and/or otherwise process software programs, for example.
- Embodiments of the present invention, may provide a platform including integrated asset discovery (inventory, discovery, tracking and reporting), software distribution (application deployment, license management, self healing, disaster recovery), software migration (OS migration, validation, data back up), detailed real time analytical reporting and/or optimized ESDM planning and scheduling. Embodiments of the present invention may provide a license distribution and/or management system.
- Embodiments of the present invention may provide a web-based tool that may allow, for example, management of software updates for managed computers. For example, embodiments of the present invention may permit control of how and/or when the updates to managed computers are installed. Additional features that may be provided include but are not limited to repair and/or removal of software as well as hardware devices, deployment of mandatory updates, and/or provisioning of scripts on remote devices. A script may be macro or batch file including a list of commands and/or instructions that may be executed on a managed client without user interaction, for example. The script may be written in any suitable language.
-
FIG. 1 is anautomated ESDM system 10 in accordance with an embodiment of the present invention. As shown inFIG. 1 ,ESDM system 10 may include one or more enterprise systems (ES) 14 that may be coupled to one or more master servers (MS) 12 via a transit network 16. TheMS 12 may include and/or may be coupled to a database (DB) 18. TheES 14 may include one or more on-site servers (OSS) 24 coupled to one or more databases (DB) 28. TheOSS 24 may be coupled to one or more remote site servers (RSS) 22. In embodiments of the present invention, theRSS 22 may be coupled to one or more managedclients 20. Theclients 20 may be one or managed computers, servers, communications devices (e.g., routers, switches, etc.), consumer appliances, vehicles, and/or any other device or item. - In an embodiment of the present invention, the transit network 16 may be a communications network that may include, for example, a public switched telephone network (PSTN), an Integrated Services Digital Network (ISDN), a cellular network, a digital mobile network, a Personal Communication Systems (PCS) network, an Internet, an intranet, a signaling system 7 (SS7) network, a local area network (LAN), a satellite network, an advance intelligent network (AIN), any suitable digital or analog network, a broadband network such as a cable network, any other public and/or private network, any other suitable national and/or international communications network or any combination thereof.
- In embodiments of the present invention, the various components shown in
ESDM system 10 may be coupled by wired (e.g., optical, electrical, etc.) and/or wireless means. For example, theMS 12 may be coupled to the transit network 16 by a optical and/or a wireless connection. The managedclients 20 may be coupled to theRSS 22 and/or theOSS 24 by wired and/or wireless means. Although, the managedclients 20 are shown coupled to theRSS 22, it is understood that the managedclients 20 may be coupled directly to theOSS 24 and/or to themaster server 12. Therefore, theRSS 22 and/or theOSS 24 may be bypassed. In addition, the functionality of any component inESDM 10 may be provided in any other component. It is further recognized that theOSS 24,RSS 22 and/or theMS 12 may be provided in a single device. Although not shown, theMS 12 can be connected to more than oneES 14. In such a configuration, eachES 14 may be a separate campus within a larger organization, such as a geographically diverse corporation or government entity. - In embodiments of the present invention, the
automated ESDM 10 including the transit network 16,MS 12,DB 18 and/orES 14 may include one or more switches, communication interfaces, and/or other components that are not shown for convenience. It is recognized that the various types of communications that may be provided in these systems may include hard-line, wireless, RF, optical, and/or any other type of communications or any combination thereof. The various devices, systems, networks, etc. may be appropriately configured or equipped with hardware and/or software to operate in such environments. - In embodiments of the present invention, the
ESDM 10 architecture may include multiple levels including theMS 12, theOSS 24, theRSS 22, and managedclients 20. However, it is recognized that theESDM 10 architecture may be provided by fewer levels by combining the features of one or more levels, for example. By the same token, theESDM 10 architecture may include more levels by distributing the features throughout additional components and/or devices. - In embodiments of the present invention, the
MS 12,OSS 24 and/orRSS 22 may provide a centralized location where software updates, scripts or the like may be available. Software updates and instructions on how to distribute the updates may be published to theMS 12. The updates, instructions, scripts, etc. may be passed to one orOSSs 24 for distribution, for example. Theremote MS 12 may act as a redundant backup system to theOSS 24 located within theES 14. Connected to themaser server 12 is adatabase 18 for storing information and data files relevant to the process of preserving data stored on managed computers withinES 14. The updates, scripts, programs, etc. may be stored in a central repository such asDB 18 and/orDB 28. - The
DB 28 coupled toOSS 24 may additionally contain information about individual managedclient 20 such as their disk size, memory, last user, IP address, and the like. In addition, theDB 28 may contain “entitlements” which are associations betweenclients 20 and application software that is permitted to be loaded on theclients 20. The entitlements may be represented as database records that associate application software program(s) with thecomputers 20 based on a device identifier and a user login identifier. The entitlements for a particular managed device may be set by a user via theconsole 30. If aclient 20 is entitled to a software product, as indicated by theOSS 24, for example, theagent 32 may poll one or more of the other components (e.g.,RSS 22,OSS 24,MS 12 and/orDB 28, inFIG. 1 ), and may retrieve its entitlement. The software package indicated by the entitlement, which may stored on theRSS 22, for example, may be downloaded directly from theRSS 22 to theclient 20. - In embodiments of the present invention, one or more of the servers (e.g.,
MS 12,OSS 24, and/or RSS 22) may provide remote access (e.g., web access) where users can log-in to check on installation status, program status, health and/or other information related toclients 32. In one embodiment of the present invention, theMS 12 may receive replication information from theOSS 24 and/orRSS 22 for reporting purposes, for example. - In embodiments of the present invention, the
OSS 24 may resides at an operational center and/or may be the repository for all customer activity. TheOSS 24 may communicate all activity with eachRSS 22 which may be located at customer sites, for example. The OSS may also provide reporting services as well as replicating all its information to for example, theMS 12. Embodiments of the present invention may include analternate OSS 24 that may serve as a backup and/or alternative monitoring and/or access point. In some cases, some information from analternate OSS 24 may be restricted to certain functions or information. For example, thealternate OSS 24 may be restricted only to entitlement information or the like. - In an embodiment of the invention, the
OSS 24 may include amanagement console 30. Theconsole 30 may provide an ESDM administrator with the ability to view and/or manipulate data in an ESDM hierarchical directory. The directory may provide the listing of all customers and/or clients assigned to theOSS 24. Customer and/or clients may include other on-site servers, remote site servers and/or clients. Customers and/or clients may be organized in cluster or other arrangement. A cluster may be a grouping of servers, computers or other devices with an order defined in the cluster. It is recognized that the servers, computers, etc. can be dynamically grouped into the proper cluster container, for example. Theconsole 30 may permit administrators to, for example, control, monitor and preserve inventory, and/or schedule, audit or deploy the managed computer systems and software operations. - In embodiments of the present invention, the
RSS 22, like theOSS 24, theRSS 22 may exist as a stand alone computer and/or may co-exist with another server on the same physical computer, for example. TheRSS 22 may be coupled to and/or may serve a network or the like that may include one ormore clients 20. Optionally or additionally, theRSS 22 may replicate with itsassociate OSS 24 over, for example, the Internet via HTTPS or other protocol. In some cases,RSS 22 may be a client that hosts an agent (to be described below in more detail) that points to itself for entitlement and monitoring purposes. It is recognized thatmultiple servers 22 may be connected to asingle OSS 24. - As indicated above, the
clients 20 may be one or managed computers, servers, communications devices (e.g., routers, switches, etc.), consumer appliances, vehicles, and/or any other device or item. Theclients 20 may be coupled to theRSS 22,OSS 24 and/orMS 12 by any type of wired and/or wireless connection. One or more of theclients 20 may include a managedagent 32. Theagent 32 may be a hardware and/or software component that may periodically contact theRSS 22, for example, for a request for an instruction. Once the instruction is received, theagent 32 may process the instruction in accordance with embodiments of the present invention. The server may provide a polling interval for the agent to poll theRSS 22,OSS 24 and/orMS 12. Optionally and/or additionally, the polling interval may be a pre-determined periodic interval. In embodiments of the present invention,agent 20 may be incorporated into anRSS 22,MS 12 and/orOSS 24. If theagent 20 runs on one or more of these servers, theagent 32 may be used to update deployment system software on these servers, for example. -
Clients 20 may include various types of computers, such as conventional desktop personal computers (PCs), portable computers (notebooks, laptops), workstations, computer network servers or any other device that has embedded software and is capable of networked communication. Eachdevice 20 may include conventional computer components, such as a processor, random access memory (RAM), one or more local hard drives, OS software, application software, data files, network interface hardware and software, and the like. In an embodiment of the invention, one ormore clients 20 may runs a Windows® OS available from Microsoft® Corporation of Redmond, Wash. - In embodiments of the present invention, the managed
client 20 may be an incorporated into an computer, automobile, consumer appliance, cell phone or other type of communication device (pager, satellite phone, etc.), personal digital assistant (PDS), and/or any other device that processes a software program, application and/or data. - In an embodiment of the present invention, the
clients 20 may be organized into groups, with each group being networked to acorresponding RSS 22, for example. TheRSS 22 and its correspondingclients 20 may be connected together by a conventional local area network (LAN), such as Ethernet or a wide area network (WAN), to permit communication and transfer of data files. The grouping of theclients 20 and hierarchical structure of theES 14 may permit parallel execution of the migration process or software deployment among the computers. If theRSS 22,OSS 24 and/orMS 12 provide a license distribution and/or management system, the server(s) may manage and/or distribute licenses to one ormore clients 20 that may be part of a group such as a LAN, WAN or the like. - In embodiments of the present invention, the RSS's 22 may be networked to an
OSS 24 using a commercially-available LAN or WAN. TheOSS 24 may be a centralized server that is configured to initiate and control program deployment to the managedclients 20 across theES 14. To accomplish this, theOSS 24 may include, among other things, abrowser console 30 and is connected to anonsite DB 28. - The
browser console 30 may be a web browser application that permits a user to enter commands that control the data preservation and/or application deployment process. Theconsole 30 may also provide processing status and reports to the user, and permits the user to set entitlements, foe example. - In an embodiment of the present invention, the
agent 32 may include a system management program written in, for example, C++ and/or may run as a Windows® system service. Theagent 32 may poll theRSS 22,OSS 24 and/or MS 12 (e.g., via HTTPS or other protocol) for any requests or instructions, for example. In response, the server(s) may provide entitlement programs, scripts, install and/or un-install instructions, and or other operations, for example, to be processed by the managedclient 20. Moreover, these operations may include, for example, the installation, removal and/or repair of software, installation, removal or repair of scripts and/or the installation, repair and/or removal of hardware. Theagent 32 may accept Microsoft® Installer packages, for example, as content from theRSS 22. TheRSS 22 which theagent 32 is to poll may be predetermined during agent installation and/or may be dynamically determined by theagent 32 and/or by theRSS 22,OSS 24 and/orMS 12, for example. This setting may be stored in a registry located in theagent 32 or in an external registry, for example. - In embodiments of the present invention, it is recognized, that the
agent 32 may receive instructions fromOSS 24 and/orMS 12 as well asRSS 22. Moreover, in embodiments of the present invention, theRSS 22,OSS 24 and/orMS 12 may contact theagent 32 and request information and/or may instruct the agent to perform one or more operation or task. - In embodiments of the present invention, the
agent 32 including the system management program may collect hardware and/or software information from theclient 20 system that it is installed on. For example, theagent 32 may collect system, status, and/or health information from the hard drive, the random access memory (RAM), the processing unit such as the CPU, the basic input-output system (BIOS), etc. This information may be part of the asset inventory of the system. Theagent 32 may use any type of interface or tool such as the Windows WMI and/or Win32 APIs or the like to get the desired information. For example. to collect software information, theagent 32 may use the Microsoft Windows® Installer database APIs (contained and populated on Windows 2000 systems by MSI based content) along with the uninstall key of the Windows® registry. The information collected by theagent 32 may be formatted in, for example, extensible markup language (XML) and may be posted to theRSS 22 and/or theOSS 24. - In one embodiment of the present invention, the ESDM system may only permit a pre-determined number of clients to be monitored by the
RSS 22, for example. Thus, theRSS 22 may maintain count of the number of licensed systems for any given customer that are being monitored by theRSS 22. If the number of licensed connections is exceeded, theRSS 22 may not allow additional connections and an error will be logged. TheRSS 22, depending on configuration, may seek permission to allow additional connections and may report the additional connections to theOSS 24 and/orMS 12, for billing purposes or the like. - In embodiments of the present invention, the
agent 32 and/or theRSS 22, for example, may monitor the number of, for example, licensed program applications that are present on one or more managed clients, and/or one or more networks. For example, theRSS 22 may receive license keys or other licensing related information related to the program applications fromclients 20. TheRSS 22 may validate the information to determine if, for example, the provided keys are authentic. Once the information is validated, theRSS 22 may determine if, for example, the client has an authorized version of the program. If the client is determined to have an unauthorized version of a program, theRSS 22 may warn the user and/or may offer to provide and/or purchase theclient 20 with an authorized version of the application program. If the client agrees to purchase a valid version of the program, a install script may be sent to the manages client by the server. The client may arrange to make payments for the purchased program by appropriate means (credit card, debit card, check, etc.). On the install script is processed by the managed client, the purchased program may be downloaded and/or installed in the managed client. If however, the client does not wish to purchase the program, an remove script may be sent to the managed client from the server. The remove script may be processed by the agent to un-install and/or delete the unauthorized version of the program. In embodiments of the present invention, if an unauthorized version of the program is present on the managed client, a trial version of the program may be provided by the server or an offer interface to retrieve a valid version of the program, as described herein, may be provided to the managed client. - In embodiments of the present invention, when the
agent 32 is installed, the fingerprint for the X.509 certificate, for example, of theRSS 22 to which the agent is to communicate with may be imported and/or declared valid. Theagent 32 may utilize the Microsoft Windows 2000 WinINet APIs (a standard Win32 Library) for HTTPS and SSL V3 communications, for example, for communications. Theagent 32 may communicate with its designatedRSS 22 over the suitable port such asHTTPS port 8443 and 443. It is recognized that theports 8443 and 443 are given by example only and that the server can be configured to communicate over any port. - In an embodiment of the present invention, an
agent 32 may, for example, contact theOSS 24 and/orRSS 22 at regular intervals and may request instructions from theOSS 24 and/orRSS 22. Once the instructions are received, theagent 32 may process the received instructions. For example, these instructions may direct theagent 32 to gather and return asset inventory data, and/or may direct theagent 32 to install or remove a software package fromclient 20. - In embodiments of the present invention, inside the
OSS 24 and/orRSS 24, a task processor may receive requests fromagents 32, and based on the request may compare the current state of the managed client 20 (based on the data returned from asset discovery) against the entitlements stored in an directory. If there is a discrepancy between what is entitled and what is currently installed in the managedclient 20, the task processor may automatically generate the instructions to either add and/or remove programs necessary to bring the system to the desired state. Optionally or additionally, the task processor of theOSS 24 orRSS 22 may also send instructions at regular intervals to cause the agent to resend its asset inventory data. - In one embodiment of the invention, the servers (e.g.,
MS 12,OSS 24 and/or RSS 22) may use a hierarchical directory that may provide the listing and/or access to, for example, all customers and/or clients assigned to the respective server. The directory, usually referred to as a serviceability directory, may be based on based on, for example, the IEEE X.500 standard. See, International Organization for Standardization/International Electrotechnical Commission 9594-1 (1993). As an X.500 based directory, this system may have three types of container objects. The highest level container type is referred to as the “country”. Underneath the country, it is possible to have zero or more “organization” containers, and under the organization, it is possible to have zero or more “organizational unit” containers. The organizational unit can contain both leaf objects and other organizational units. Leaf objects include “system” objects, such as Networks and Servers, “targets”, such as Users, Computers, Groups and Containers, and “products”. It is recognized that the directory standard is given by way of example only and that any type of directory format may be employed in embodiments of the present invention. - When used in a multi-server environment, the directory may be stored in a decentralized structure. All
servers 22 and/or 25 may have a full copy of the portion of the directory that they need. Servers that share parts of the directory may keep the data consistent across servers by using a replication process. - In embodiments of the present invention, the concept of an entitlement involves the interaction of three objects, a target, a product and an entitlement. Targets may be objects in the directory, and include users, computers, devices, applications, groups and/or containers. The relationship between these objects can be explained in that targets are entitled to products. In other words, entitlement objects represent a many-to-many relationship between targets and products. While an entitlement may be made to a single target, it may ultimately be applied to many computers if it is made to a group or container.
- In embodiments of the present invention, when a computer is being analyzed for new tasks, the following process, for example, may used to find entitlements. All entitlements made directly to the computer target may be considered. Entitlements made to the computer's parent container are considered, followed by its grandparent and so on to the root. Entitlements made to any groups that the computer belongs to are considered. The groups may be processed in alphabetical order, and each group's containers may also be considered. Next, entitlements made to the primary user target for the computer are considered and again, containers are also processed. Finally, groups that the user is a member of may be considered. This process may provide provides the system administrator with more flexibility in delivering, managing, monitoring, migrating, and/or inventorying software.
- In embodiments of the present invention, a server such as
RSS 22 may be designated as a “local server” for one ormore clients 20. An installation may also have other server objects that represent peer installations. The other servers can be used to send polling agents to other installations that may be physically closer, or otherwise more appropriate for aparticular client 20. - A network object may represent an IP subnet, or other range of IP addresses. The network may be used in a multi-server installation to approximate a physical location for a given agent or client. For example, when an
agent 32 polls aserver 22, theserver 22 may first attempts to match the requesting IP address to a network object that it has in its directory. If a network is found, the server list that may be mapped to the network is examined. If thecurrent server 22 is in the list, then the poll is passed on to the task processor ofserver 22, for example. If thecurrent server 22 is not in the list, the list may be sent to theagent 32, along with a command to reset, so that the agent can redirect itself to another more appropriate server. The agent may examine the received list, identify an appropriate server from the list and may poll that server for a request for instructions. - In embodiments of the present invention, the
agent 32 may include a system management program that is run on the managedclient 20. The program may be designed to be run continuously, as long as the system is on or the program may only operate for certain periods of time. For example, on Windows® NT based systems (e.g. Windows® NT, 2000 and XP), this means that theagent 32 may normally run as a system service. On other platforms, for example, theagent 32 may be executed at system startup, and allowed to run continuously as a daemon until system shutdown. -
FIG. 2 is a diagrammatic representation of anagent 32, in accordance with an embodiment of the present invention. It is recognized thatagent 32 may be a software program, a hardware device and/or any combination thereof. Theagent 32 may be part of the hardware and/or software that exists in the managedclient 20 or may be a separate unit and/or may be a combination thereof. In embodiments of the present invention, theagent 32 may be modular, and may include, for example, apolling module 27, aninventory module 29, and/or a one ormore instruction handlers 25. It is recognized that the agent may include other components which have been omitted from this description for simplicity. Thepolling module 27 may be responsible for making, for example, an HTTP call to theserver 22 on a regular interval, downloading an instruction from theserver 22, using theappropriate instruction handler 25 to process the instruction, and/or for sending the results back to theserver 22. - In embodiments of the present invention, the
instruction handler 25 may process the one or more instructions received by thepolling module 27. Theinstruction handler 25 may work query theinventory module 29 for the status of existing software and/or hardware to fulfill the received instructions. In one example, theinventory module 29 may include inventory data is broken up into groupings called “catalogs.” Each catalog may include a collection of related data, for example, a list of installed peripheral component interconnect (PCI) devices, for example. In one case, the data for the catalog may be collected by theagent 32 in XML format. However, it is recognized that the data may be collected in any other format. The catalogs may be serialized using standard Java® serialization mechanisms, for example. The catalogs may be stored on the servers file system as individual binary files or may be stored in a database, for example. Catalogs may also be converted to and from XML using “Castor” technology, for example. Because a catalog may be represented as XML, other views can be generated using extensible style language (XSL) transforms, including hyper text markup language (HTML) and structured query language (SQL), for example. -
FIG. 3 is a diagrammatic representation of aserver 50, in accordance with an embodiment of the present invention.Server 50 may be any of the servers (or part of any of the servers) of theESDM system 10. For example,server 50 may be part ofMS 12,OSS 24 and/orRSS 22. It is recognized thatserver 50 may be represented as a software program, a hardware device and/or any combination thereof. Theserver 50 may include atask processor 51,task queue 53 and/or alicense manager 59, for example.Server 50 may include other components that are omitted for simplicity. - In embodiments of the present invention, the
server 50 pay process the polling requests, for example, received fromagent 32. For example, when anagent 32 polls aserver 50 for the first time, theserver 50 may set up a number of initialization tasks to execute in atask queue 53 for that agent. At each agent poll, theserver 50 may return one or more instructions for each task to the agent for it to process. As theagent 32 executes those instructions and returns the results, the tasks are removed from thetask queue 53. - In embodiments of the present invention, the
task processor 51 may process the installation of a software package and/or executing an inventory package. Thetask processor 51 may generate a list of software that is either directly (e.g., made to the computer itself) or indirectly (e.g., made to containers, groups or users) made to the computer. The software on the list may be sorted by product version so that later versions are processed first. Thetask processor 51 may examine each version of the software on the list and may compare the expected action with the current state of the managedclient 20 based on itsagent 32. For example, if the current state of the managedclient 20 is compatible with (or the same as) the corresponding software on the list being examined, then the software is ignored and there is no updated needed. For example, if a product X, version Y is currently installed on theclient 20, then the process to install product X, version Y may be ignored. If however, product X, version Y is not currently installed, then the process to install the product may be used to create one or more tasks that may be added to thetask queue 53 for processing. In one example, once one or more tasks corresponding to a software installation is scheduled in thequeue 53, theserver 50 may discontinue further installations associated with that agent and/or client until the current installation is complete. This action may be take to maintain compatibility. However, it is recognized that theserver 50 may continue to process other installations even if a current installation is pending. The server may use parallel processing techniques, for example, to process additional instructions and/or processes. - In embodiments of the present invention, the
server 50 may use, for example, a compatibility criteria to determine if a particular software product should be installed and/or removed, for example. For example, a software product is compatible and no further installation associated with that product may occur if, for example, the product is installed or if any later version of the product is installed. If, for example, a lower version of the software product is installed, an updated version of the program may be installed or scheduled to be installed. But, if the latest version of the program or a higher version of the program is installed, then the program may not need to be updated. It is recognized that even if an updated or later version is installed, the same program may be re-installed in the managed client. Moreover, even if the entire program is not installed, additional setting, upgrades, fonts, or other data may be installed. - In an embodiment of the present invention, the
server 50 may forward a un-installation instruction or un-installation entitlement associated with a software product. If for example, it is determined that a software or program needs to be partially or completely un-installed and/or deleted from the managed client, the server may send an un-installation and/or delete instruction (and/or script) to the managed client to un-install and/or delete the program. If a program tom be deleted and/or un-installed exists in the managed client with the same or lesser version, then the proper instruction and/or script may be sent to the managed client for processing. The managed client may receive the instruction and/or script and process the instruction and/or script to un-install and/or delete the program. This process can be done at any time and indicated by the server or as determined by the managed client, administrator, and/or user. It is recognized that preconditions may be set before a program can be un-installed and/or deleted from the machine. If, for example, a proper license exists for an upgraded program, the old program may not me un-installed and/or deleted until the upgrade is scheduled and/or completed. Of course, other checks may also be made before programs are removed. For example, data associated with the program to be un-installed and/or removed may be backed up by the client and/or server so that the data is not lost and can be available at a later time. - Embodiments of the present invention may provide a license authorization script or instruction that provides an offer interface (e.g., an offer icon) on, for example, a managed client's computer. The offer interface may provide a program offer to install a valid program in the managed client, for example. If the offer icon is selected and/or a valid license is authorized to the managed client, a program associated with the offer icon and/or license may be downloaded by the managed client. In embodiments of the present invention, once the program has been exited and/or use otherwise terminated, the program may be automatically deleted and/or un-installed, and the program license may be available to others if requested via offer interface located on other machines. Accordingly, an authorized license can be validly used by several users under the terms of the license.
- In embodiments of the present invention, the offer interface may be compatible if the same software of any version is not yet installed, or if the same software with any version is already installed. An offer interface associated with any program may be installed on a client's machine. This could be a new program or a program that is already installed. In the latter case, an administrator or user may want to change status of the program from actually having a copy of the program loaded on the machine at all times to having “access” to the program when needed and allowing others to used the program when not needed or when “use limits” are passed, for example. In embodiments of the present invention, “use limits” may, for example, indicate a predetermined number of uses for the program, a predetermined time the program may be used and/or any combination thereof. Once the use limit has been reached, the program may be un-installed and/or may be deleted. It is recognized that use limits can be set for programs downloaded via the offer interface as well as other programs, as described herein.
- In embodiments of the present invention, an install entitlement for an offer interface may be designed to be compatible twice, with different behaviors. For example, first, an offer interface installation with use limits may follow the same compatibility rules as a normal install entitlement. In other words, an offer interface may be installed for any existing or new programs. Then, when the product catalog indicates that the time since the software has been used on the client machine has surpassed the use limit specified in the entitlement, the entitlement becomes compatible again, this time to change the installation to an offer interface state. In other words, when the offer limit has been passed, the associated program may be un-installed and/or deleted. However, the offer interface may remain or may be re-installed on the client's machine for future selection. If the use limit is never reached, then the second behavior may never be realized by the system and the installed product remains installed.
- In embodiments of the present invention, installation, removal, and/or the offer interface, for example, may be provided by scripts or other instructions that may be sent from the server to one or more managed clients. The scripts may be processed by the managed client to complete the operation. For example, if the instruction is an instruction to install an updated program, the managed client may process such script to download the program at any time. In some cases the download may be immediate and/or in other cases the download may be delayed. This concept may be applied when programs are un-installed, removed and/or when offer interfaces are processed, for example.
-
FIG. 4 is a flowchart illustrating amethod 400 in accordance with embodiments of the present invention. In an embodiment of the present invention, an agent may poll one or more servers in the ESDM system, as shown inbox 410. The poll may include identification data associated with the agent. In other cases, the poll may also include a request for instructions. Once the server receives the poll, the server may verify whether the agent is part of a system that the server is responsible for, as shown inbox 415. If the agent is part of the system, then the server may process the agent. If however, the agent is not part of a system the server is responsible, the server and/or a master server may identify and forward the agent to the correct server. - Once the appropriate server is identified for the agent, processing in accordance with an embodiment of the present invention may begin. The server may transmit an asset inventory instruction including a request for the agent to collect and return inventory asset data to the server. As described herein, the inventory asset data may include information related to hardware, software, licensing, etc. installed in the managed client associated with the agent. It is recognized that the agent may be associated with more than one managed client. In addition, the server may provide a polling interval to the agent. The polling interval may provide, for example, an indication when the subsequent polls to the server should occur.
- In embodiments of the present invention, the server may receive the asset inventory data from the agent, as shown in
box 420. The server may process the asset inventory data received from the agent, as shown inbox 430. Based on the asset inventory data, the server may determine if an program is to be installed on the managed client, un-installed and/or deleted from the managed client, and/or if an offer interface is to be provided to the managed client. In addition, the server may provide license management services for one or more agents as described herein. The server may place one of more instructions to be sent to the agent in a queue. As subsequent polls are received, one or more instructions may be sent to the agent for processing. - In embodiments of the present invention, the asset inventory data may be used by the server to established a base-line for the one or more managed clients associated with the agent. The asset inventory data and/or other information may be stored in a database for future use. In embodiments of the present invention, the server may provide the default tasks to those managed clients that have designated hardware and/or software configurations. The default tasks may provide all the managed clients with compatible hardware and/or software. For example, the default tasks may request removal of certain programs while the installation of other programs, for example.
- In embodiments of the present invention, the asset inventory data may be processed by the server to determine which programs the managed client is entitled to. If it is determined that a managed client is entitled to a program, the server may transmit an installation script to be sent to the agent so that the entitled program can be downloaded by the agent, as shown in
boxes box 445. - In embodiments of the present invention, the asset inventory data may be processed by the server to determine if a program(s) should be removed (e.g., un-installed and/or deleted) from the managed client, as shown in
box 450. If it is determined that a program is to be removed from a managed client, the server may transmit a remove script to be sent to the agent so that the identified program can be un-installed and/or removed from the managed client, as shown inbox 453. The remove script may be placed in a queue to be sent to the agent and/or may be sent directly to the agent. Once the agent receives, for example, the remove script, the agent may process the remove script to un-install and/or delete the identified program(s) from the managed client(s), as shown inbox 455. - In embodiments of the present invention, the asset inventory data including, for example, licensing data associated with one or more managed clients may be processed by the server to determine if an offer icon may be removed from or installed in a managed client, as shown in
box 460. As described herein, the server may perform license management functions to manage program licenses associated with the one or more managed clients. Thus, for example, the server may provide offer icons to the agent so that programs can be installed and/or removed so that valid and licensed programs are available. If it is determined that an offer icon should be installed or removed from the managed client, the server may transmit a offer script to be sent to the agent so that the identified program can be installed or removed from the managed client, as shown inbox 463. The offer script may be placed in a queue to be sent to the agent and/or may be sent directly to the agent. Once the agent receives, for example, the offer script, the agent may process the offer script to install or remove an offer icon from the managed client(s), as shown inbox 465. - In embodiments of the present invention, the agent may send an acknowledgement to the server when one or more scripts are processed. The acknowledgment may indicate the status of the agent and/or managed client. In embodiments of the present invention, the agent may forward updated asset inventory data to the server. The server may update its stored asset inventory data, as shown in
box 470. In embodiments of the present invention, the server may transmit a poll interval to the agent, as shown inbox 480. The poll interval may indicate when the server may need additional information from the agent, for example. It is recognized that the agent may poll the server as needed, for example, if there is a status change, other event, or the like, for example. - In embodiments of the present invention, the server may provide a script, file name and/or product code associated the install, remove and/or offer icon data, for example, to the agent.
- Embodiments of the present invention may provide a license management system, as part of the ESDM system, which may permit a client such as an independent software vendor (ISV) and/or an Original Equipment Manufacturer (OEM) to maintain an inventory of and/or maximize the efficient use of their software licenses. This license management system may incorporate and/or provide embodiments of the “offer interface” feature described above. The license manager 59 (
FIG. 3 ) may provide a license management service that may for example, detect and/or remove unused or unapproved software from managed systems. The license manager may permit a user to mange and/or update licenses automatically. The license manager may provide a “use limit” value associated with one or more programs, for example, installed on client machines. The “use limit” may indicate when themanager 59, for example, may remove a particular software from the managedclient 20 if the inventory indicates, for example, that it has not been used in a specified number of days or if the existing number of copies has exceeded an authorized number of copies. - For example, if the
license manager 59 determines that a software is eligible for removal, the task processor may schedule a removal task (e.g., remove script) intask queue 53, for example. Theserver 50 may send theagent 32 an uninstall script for the software product. The software instruction may be followed by, for example, an offer interface to permit the user to re-install and/or re-activate the software product. The offer interface may provide a offer icon that may allow a program to appear to be installed on a client machine without actually having the binaries in place to run the software. When the user wishes to use the software (indicated by double clicking the offer icon), it is automatically installed. The offer interface may provide one or more programs that do not require a user license until the program is actually installed. - In embodiments of the present invention, any type of technique may be utilized, for example, to inventory the installed software at and/or collect data from the managed
client 20. Such techniques may be platform dependant. For example, if the managed client is running the Microsoft Windows® operating system, it may be possible to quickly query the system for a list of installed software using the “Add/Remove Programs” function from the control panel and the contents of the Windows registry. Optionally or additionally, the Microsoft Windows Installer program may be used to obtain a list of installed programs and/or other data associated with the managedclient 20. It is recognized that if a different operating system (OS) is used, appropriate interfaces may be available to retrieve the desired information. - In embodiments of the present invention, it may also be possible to determine if a program/application is installed using a concept commonly known as a “signature.” A signature is a collection of attributes of a system that indicate with a high probability that a particular software product is installed. Signatures are usually based on the existence of at least one specific program file, but may also be based on directories, registry entries and/or values from configuration files.
-
FIG. 5 is a flowchart illustrating amethod 500 in accordance with embodiments of the present invention. Initially, thesoftware agent 32 is distributed across the enterprise network to one ormore clients 20, as shown inbox 510.Agent 32 may be downloaded to the managedclient 20 from a networked server in response to a network login script executed by each computer. The login script may include a path designating the location of the agent software to be downloaded. Optionally or additionally, an e-mail attachment or URL link, remote scripting, or other ESD system may be used to distribute theagent 32. An indication may be provided when theagent 32 has been successfully installed. Moreover, additional information may further be provided if theagent 32 is idle, is performing a task and/or has failed to complete a task. - As shown in
box 520, theagent 32 may commence an asset discovery and/or inventory process to collect asset information for eachclient 20. This information may be reported to theRSS 22,OSS 24,MS 12 and/ordatabase 28. Theagent 32 may conduct the asset inventory process on its own or based on an instruction received fromRSS 22,OSS 24, or the like. In one example, an agent may generate and transmit a request for instructions to a server, as shown inbox 530. In response, the server may generate one or more instructions to the agent, as shown inbox 540. The asset data may include end-user computer hardware and software characteristics, such as memory size, processor type and speed, resident software, software versions, and the like. The instructions that are received from the server may include instructions to, for example, install software, remove software, repair software, and/or any combination thereof. The instructions may be based on, for example, the asset data collected. - As shown in
boxes - In embodiments of the present invention,
agent 32 may conduct a polling routine in which theagent 32 may periodically poll theOSS 24 via anRSS 22 to check, for example, for programs or its entitlement. The polling may be accomplished using, for example, a hypertext transfer protocol (HTTP) GET command sent to theOSS 24 via theRSS 22 from theclient 20. The command may provide provides a device identifier and/or a user login identifier to theOSS 24. The polling period may be parameterized and can be set by a user at theconsole 30. The period may be set to poll every few minutes, hours, days, etc. Theagent 32 may begin a polling routine based on a predetermined event such as of a user manually installs a program and/or the managedclient 20 is otherwise modified, for example. - As asset information is collected globally (perhaps over a period of several weeks), a validation routine may run by the
OSS 24. This routine may compare the list of supported hardware and minimum computer requirements to the individual asset inventory information gathered by theagents 32 about theclients 20. As a result of this comparison, theagent 32 may identify software and/or hardware that maybe needed. In the case of software, the software may be downloaded as described herein. If hardware is missing, theRSS 22 and/orOSS 24 may determine whether the hardware exists and if it does, may attempt to run the appropriate utility to install the hardware inclient 20. If the hardware does not exist, a notice such as via e-mail may be sent to an administrator and/or user to indicate that such hardware is needed. As new hardware and/or software is installed, theDB 28 and/or 18 may be updated. - In response to one or more poll, the
agent 32 may receive a response indicating, for example, a location of its entitlement. The response may include a Java® wrapper having a script that gives a path as to where, for example, a Microsoft Windows® Installer (MSI) file may reside on theRSS 22. The Java® wrapper may be in XML and may contain JavaScript. Theclient 20 may then download the MSI from theRSS 22, and may begin down loading the entitlement. - Embodiments of the present invention may provide for a method, system and apparatus that may repair an existing application on the
client 20 through a process known as self-healing whereby the application repairs its own defects, it may install entitled applications and/or scripts, it may uninstall applications and/or it may provide an offer icon. - Embodiments of the present invention describe an ESD system which may provide “state management” or software operations management. In one embodiment, the invention provides for management of software products that are installed on a system or device, and the versions of those software products, conform to “approved” and optimal operating parameters. State management is desirable for a number of reasons, including but not limited to, system stability, standardization, accurate reporting, data and asset management, efficient software distribution and migration, information technology, project scheduling and license management.
- Because the number of permutations of different versions of the multiplicity of software products is practically infinite, and because these software products commonly cause conflicts in common components that can render the system unusable causing significant barriers to systems integration and software distribution, it is advantageous from a system stability perspective to limit the amount of diversity in computer systems as much as possible.
- In an embodiment of the invention, by controlling the number of different versions of software in a company's environment or customer base, the support staff can more easily test the common scenarios, proactively prevent user problems and react more effectively and efficiently to user dilemmas. For example, in an environment having a limited versions of tested software products, the occurrence of software conflicts may be significantly reduced, and thereby the number of unique configurations that have to be supported may also be reduced. Among other benefits, this leads to better monitoring, tracking, support and/or service to end users.
- In addition to system stability, embodiments of the present invention may also provide monitoring of the number of versions of a given software product for license optimization and/or management. If a corporation has a software with “bulk” or “site-wide” licenses which may cover only one version of the software, it is desirable to track software so that only the licensed versions are installed in their environment for license compliance reasons. It may also be desirable for both the manufacturer and purchaser to track that they have too many or too few of any type of software license. Embodiments of the present invention provide many of the various features as described herein.
- It is recognized that embodiments of the invention may include, for example, components such as processors, computer readable memories, data ports or other interfaces, network ports or other interfaces, data buses and/or other hardware and/or software components (all not shown). The data ports or other interfaces may permit the various devices to communicate with other devices and/or with the transit network and/or information info-structure. The data buses may connect the processor, the computer readable memory, the data port or other interface and/or the network port or other interface and may permit communications between the various components in embodiments of the invention.
- Several embodiments of the present invention are specifically illustrated and/or described herein. However, it will be appreciated that modifications and variations of the present invention are covered by the above teachings and within the purview of the appended claims without departing from the spirit and intended scope of the invention.
Claims (40)
1. A method comprising:
receiving a request for instructions from a managed client machine;
analyzing the request for instructions, wherein the request for instructions includes asset inventory data;
generating one or more instructions based on the request for instructions and the asset inventory data, wherein the one or more instructions include an instruction to install an application on the managed client machine; and
receiving an acknowledgment from the managed client machine if the instruction has been processed.
2. The method of claim 1 , further comprising:
queuing the one or more generated instructions in a task queue;
transmitting the queued one or more instructions to the managed client machine;
if the acknowledgment from the managed client has been received, removing the instruction from the queue.
3. The method of claim 2 , wherein the application is a script.
4. The method of claim 1 , further comprising:
establishing a priority associated with each of the one or more instructions; and
queuing the one or more generated instructions based on priority.
5. The method of claim 1 , wherein the one or more instructions include an instruction to remove an application on the managed client machine.
6. The method of claim 1 , wherein the one or more instructions include an instruction to repair an application on the managed client machine.
7. A system for automated software distribution comprising:
an agent associated with a managed client to generate a request for instructions; and
a server coupled to the agent, wherein the server is to:
receive the request for instructions from the agent;
analyze the request for instructions;
generate one or more instructions based on the request for instructions;
transmit the one or more instructions to the agent, wherein the agent is to process the one or more instructions; and
receive an acknowledgment from the agent if the one or more instructions have been processed.
8. The system of claim 7 , wherein the request for instructions includes asset inventory data associated with a managed client.
9. The system of claim 8 , wherein the one or more instructions is based on the request for instructions and the asset inventory data.
10. The system of claim 7 , wherein the one or more instructions include an instruction to install an application on the managed client.
11. The system of claim 7 , wherein the one or more instructions include an instruction to install an offer icon on the managed client.
12. The system of claim 7 , wherein the one or more instructions include an instruction to remove an application on the managed client.
13. The system of claim 7 , wherein the one or more instructions include an instruction to repair an application on the managed client.
14. A method implemented on a computer for automatic software distribution, comprising:
receiving a request for instructions from a managed client machine;
analyzing the request for instructions, wherein the request for instructions includes asset inventory data;
generating one or more instructions based on the request for instructions and the asset inventory data, wherein the one or more instructions include an instruction to install an application on the managed client machine; and
receiving an acknowledgment from the managed client machine if the instruction has been processed.
15. The method of claim 14 , further comprising:
queuing the one or more generated instructions in a task queue;
transmitting the queued one or more instructions to the managed client machine;
if the acknowledgment from the managed client has been received, removing the instruction from the queue.
16. The method of claim 15 , wherein the application is a script.
17. The method of claim 14 , further comprising:
establishing a priority associated with each of the one or more instructions; and
queuing the one or more generated instructions based on priority.
18. The method of claim 14 , wherein the one or more instructions include an instruction to remove an application on the managed client machine.
19. The method of claim 14 , wherein the one or more instructions include an instruction to repair an application on the managed client machine.
20. A license management method comprising:
receiving a request for instructions from a managed client;
analyzing the request for instructions, wherein the request for instructions includes licensing data;
determining whether the licensing data associated with a program installed on the managed client is valid;
if the licensing data is not valid, sending an offer to purchase a valid version of the program to the managed client; and
if the offer to purchase is not accepted, sending a remove instruction to the managed client to remove the program.
21. The method of claim 20 , further comprising:
if the offer to purchase is accepted, sending the valid version of the program to the managed client.
22. The method of claim 21 , sending the valid version of the program comprising:
sending an install script to download the valid version of the program to the managed client.
23. The method of claim 20 , further comprising:
if the offer to purchase is not accepted, sending an offer interface to the managed client, wherein the offer interface providing an offer icon to purchase a valid version of the program to the managed client.
24. A method for managing a computer software program license, the method comprising:
providing an offer icon to a managed client device, wherein the offer icon is associated with a program;
in response to a selection of the offer icon, transmitting an install script to the managed client device, wherein the install script permitting a download and installation of the program to the managed client device;
receiving an exit indication that the managed client device has terminated use of the downloaded program; and
in response to the indication, transmitting an remove script to the managed client, wherein the remove script permitting removal of the program from the managed client device.
25. The method of claim 24 , wherein removal of the program comprising:
un-installing the program from the managed client.
26. The method of claim 24 , wherein removal of the program comprising:
deleting files associated with the program from the managed client.
27. The method of claim 24 , further comprising:
determining if licensing information associated with the program is valid;
if the license information is valid, determining if the managed client has exceeded an use limit associated with the program; and
if the use limit has been exceeded, sending an offer to purchase an additional license associated with program to the managed client.
28. A method comprising:
receiving a poll from an agent;
receiving asset inventory data from the agent if the agent is verified;
based on the asset inventory data, determining if a managed client associated with the agent is entitled to a program;
if the managed client is entitled to a program, transmitting an install script to download the program to the agent;
based on the asset inventory data, determining if an existing program, installed on the managed client, should be removed from the managed client; and
if the existing program should be removed, transmitting a remove script to un-install the existing program from the managed client.
29. The method of claim 28 , further comprising:
transmitting a poll interval to the agent.
30. The method of claim 28 , wherein the remove script to delete the existing program from the managed client.
31. The method of claim 28 , further comprising:
receiving updated asset inventory data from the agent, wherein the updated asset inventory data based on the downloaded program and the n-installed existing program.
32. The method of claim 31 , further comprising:
storing the received asset inventory and the updated asset inventory data in a memory.
33. The method of claim 28 , further comprising:
receiving an acknowledgment from the managed client if the install script has been processed.
34. The method of claim 28 , further comprising:
receiving an acknowledgment from the managed client if the remove script has been processed.
35. The method of claim 28 , further comprising:
based on the asset inventory data, determining if an offer icon should be installed on the managed client;
if the offer icon should be installed, transmitting an install offer icon script to the agent.
36. The method of claim 28 , further comprising:
based on the asset inventory data, determining if an offer icon should be removed from the managed client;
if the offer icon should be removed, transmitting a remove offer icon script to the agent.
37. A system for providing automated software distribution and management, comprising:
an agent associated with a managed client to generate a poll;
a server coupled to the agent, wherein the server is to:
receive asset inventory data from the agent;
based on the asset inventory data, determine if the managed client is entitled to a program;
if the managed client is entitled to a program, transmit an install script to the agent, wherein the agent to process the install script and based on the install script, the agent is to download the program to the managed client.
38. The system of claim 37 , wherein based on the asset inventory data, the server is to:
determine if an existing program, installed on the managed client, should be removed from the managed client; and
if the existing program should be removed, transmit a remove script to remove the existing program from the managed client.
39. The system of claim 38 , wherein based on the remove script, the agent is to:
un-install the existing program from the managed client.
40. The system of claim 39 , wherein if the existing program is in-installed from the managed client, the server is to:
send an offer interface to the agent and the offer interface to provide an offer icon to purchase the program to the managed client.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/831,323 US20050027846A1 (en) | 2003-04-24 | 2004-04-26 | Automated electronic software distribution and management method and system |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US46512103P | 2003-04-24 | 2003-04-24 | |
US46512203P | 2003-04-24 | 2003-04-24 | |
US46511803P | 2003-04-24 | 2003-04-24 | |
US10/831,323 US20050027846A1 (en) | 2003-04-24 | 2004-04-26 | Automated electronic software distribution and management method and system |
Publications (1)
Publication Number | Publication Date |
---|---|
US20050027846A1 true US20050027846A1 (en) | 2005-02-03 |
Family
ID=33425173
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/831,322 Expired - Fee Related US7340491B2 (en) | 2003-04-24 | 2004-04-26 | Methods and apparatus for data preservation and software distribution within an enterprise system |
US10/831,323 Abandoned US20050027846A1 (en) | 2003-04-24 | 2004-04-26 | Automated electronic software distribution and management method and system |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/831,322 Expired - Fee Related US7340491B2 (en) | 2003-04-24 | 2004-04-26 | Methods and apparatus for data preservation and software distribution within an enterprise system |
Country Status (4)
Country | Link |
---|---|
US (2) | US7340491B2 (en) |
EP (2) | EP1671200A4 (en) |
CA (2) | CA2523279A1 (en) |
WO (2) | WO2004097566A2 (en) |
Cited By (118)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030204842A1 (en) * | 2002-04-30 | 2003-10-30 | Chenelle Michael A. | Computer software management |
US20050010918A1 (en) * | 2003-07-11 | 2005-01-13 | International Business Machines Corporation | Autonomic image migration/deployment appliance |
US20050097216A1 (en) * | 2003-10-10 | 2005-05-05 | Nortel Networks Limited | Method and network for delivering management software for a network element |
US20050138125A1 (en) * | 2003-12-19 | 2005-06-23 | Ethan Davis | Enterprise asset management by a third party expert system |
US20050262225A1 (en) * | 2004-05-20 | 2005-11-24 | Bea Systems, Inc. | System and method for performing validation of a configuration |
US20050262101A1 (en) * | 2004-05-20 | 2005-11-24 | Bea Systems, Inc. | System and method for performing batch configuration changes |
US20060028691A1 (en) * | 2004-08-06 | 2006-02-09 | Kiyohiko Shinomiya | Network communication apparatus |
US20060031529A1 (en) * | 2004-06-03 | 2006-02-09 | Keith Robert O Jr | Virtual application manager |
US20060168147A1 (en) * | 1999-11-24 | 2006-07-27 | Kabushiki Kaisha Sega | Information processor, file server, accounting control system, accounting control method, and recording medium recording a program therefor |
US20060184714A1 (en) * | 2005-02-17 | 2006-08-17 | International Business Machines Corporation | Intelligent system health indicator |
US20060224545A1 (en) * | 2005-03-04 | 2006-10-05 | Keith Robert O Jr | Computer hardware and software diagnostic and report system |
US20060224544A1 (en) * | 2005-03-04 | 2006-10-05 | Keith Robert O Jr | Pre-install compliance system |
US20060253455A1 (en) * | 2005-05-05 | 2006-11-09 | Microsoft Corporation | Extensible type-based publication / subscription services |
US20060277312A1 (en) * | 2003-05-09 | 2006-12-07 | Karl Hirsch | Location-specific or range-based licensing system |
US20060277402A1 (en) * | 2005-05-18 | 2006-12-07 | Hitachi, Ltd. | System startup method |
US20070028229A1 (en) * | 2005-07-28 | 2007-02-01 | International Business Machines Corporation | Method and system for dynamic generation of computer system installation instructions |
US20070088630A1 (en) * | 2005-09-29 | 2007-04-19 | Microsoft Corporation | Assessment and/or deployment of computer network component(s) |
US20070180059A1 (en) * | 2006-01-27 | 2007-08-02 | Microsoft Corporation | Light weight software and hardware inventory |
EP1851672A1 (en) * | 2005-02-22 | 2007-11-07 | Connectif Solutions Inc. | Distributed asset management system and method |
US20080005165A1 (en) * | 2006-06-28 | 2008-01-03 | Martin James A | Configurable field definition document |
US20080021984A1 (en) * | 2006-07-21 | 2008-01-24 | Lehman Brothers Inc. | Method and system for identifying and conducting inventory of computer assets on a network |
US20080021951A1 (en) * | 2004-07-21 | 2008-01-24 | The Mathworks, Inc. | Instrument based distributed computing systems |
US20080028386A1 (en) * | 2006-07-31 | 2008-01-31 | Fujitsu Limited | Transmission apparatus and method of automatically updating software |
US20080040455A1 (en) * | 2006-08-08 | 2008-02-14 | Microsoft Corporation | Model-based deployment and configuration of software in a distributed environment |
US20080040714A1 (en) * | 2006-08-14 | 2008-02-14 | Caterpillar Inc. | Method and system for automatic computer and user migration |
US20080077704A1 (en) * | 2006-09-24 | 2008-03-27 | Void Communications, Inc. | Variable Electronic Communication Ping Time System and Method |
US20080091773A1 (en) * | 2006-10-16 | 2008-04-17 | Nokia Corporation | Dynamic polling control for content distribution |
US20080109396A1 (en) * | 2006-03-21 | 2008-05-08 | Martin Kacin | IT Automation Appliance And User Portal |
US20080127294A1 (en) * | 2006-09-22 | 2008-05-29 | Keith Robert O | Secure virtual private network |
US20080178172A1 (en) * | 2007-01-23 | 2008-07-24 | Zahir Dossa | Methods and apparatus for pre-configuring software |
US20080184234A1 (en) * | 2007-01-31 | 2008-07-31 | Vutharkar Viswa P | Adaptive client/server control protocol |
US20080201440A1 (en) * | 2007-02-15 | 2008-08-21 | Void Communications, Inc. | Electronic Messaging Recordlessness Warning and Routing System and Method |
US20080244057A1 (en) * | 2007-03-26 | 2008-10-02 | Canon Kabushiki Kaisha | Program management apparatus and method |
US20080281958A1 (en) * | 2007-05-09 | 2008-11-13 | Microsoft Corporation | Unified Console For System and Workload Management |
US20090024991A1 (en) * | 2007-07-16 | 2009-01-22 | International Business Machines Corporation | Method, system and program product for managing download requests received to download files from a server |
US20090031300A1 (en) * | 2004-02-17 | 2009-01-29 | Eastman Kodak Company | Process and system to supply a multimedia application on a terminal using a programming agent |
US20090049288A1 (en) * | 2007-08-17 | 2009-02-19 | Salesforce.Com, Inc. | System, method, and computer program product for runtime invocation of an appropriate version of program instructions in an on-demand database |
US20090055427A1 (en) * | 2007-08-21 | 2009-02-26 | Alcatel Lucent | Cloning policy using templates and override cloned policy |
US20090064133A1 (en) * | 2007-08-28 | 2009-03-05 | Red Hat, Inc. | Provisioning for 32-bit or 64-bit systems |
US20090094378A1 (en) * | 2007-10-09 | 2009-04-09 | Microsoft Corporation | Software Deployment Using Client Location |
US20090183219A1 (en) * | 2003-09-05 | 2009-07-16 | Stephen L Maynard | Technique for updating a resident application and associated parameters in a user terminal through a communications network |
US20090205040A1 (en) * | 2008-02-10 | 2009-08-13 | Aladdin Knowledge Systems Ltd. | Computer data product license installation / update confirmation |
US20090216548A1 (en) * | 2008-02-25 | 2009-08-27 | Suresh Balu | License Management in a Networked Software Application Solution |
US7610578B1 (en) * | 2004-08-24 | 2009-10-27 | The Math Works, Inc. | Test manager for integrated test environments |
US20090293053A1 (en) * | 2008-05-21 | 2009-11-26 | Jim Leroy Knatcher | Method and system for dynamic generation of computer system installation instructions |
US20100023875A1 (en) * | 2008-07-22 | 2010-01-28 | International Business Machines Corporation | Automatic rendering of user interface elements |
US7664834B2 (en) | 2004-07-09 | 2010-02-16 | Maxsp Corporation | Distributed operating system management |
US20100064016A1 (en) * | 2005-07-28 | 2010-03-11 | Vaporstream Incorporated | Reduced Traceability Electronic Message System and Method |
US7693983B1 (en) * | 2005-05-27 | 2010-04-06 | Symantec Operating Corporation | System and method providing application redeployment mappings using filtered resource usage data |
US20100131942A1 (en) * | 2008-11-21 | 2010-05-27 | Microsoft Corporation | Suite-based integration and deployment of business products |
US20100146590A1 (en) * | 2007-05-09 | 2010-06-10 | Wellbia.Com Co., Ltd. | System and method for security using one-time execution code |
US7844686B1 (en) | 2006-12-21 | 2010-11-30 | Maxsp Corporation | Warm standby appliance |
US7908339B2 (en) | 2004-06-03 | 2011-03-15 | Maxsp Corporation | Transaction based virtual file system optimized for high-latency network connections |
US20110093844A1 (en) * | 2009-10-15 | 2011-04-21 | Research In Motion Limited | Method, system and apparatus for management of push content |
US20110113416A1 (en) * | 2009-11-09 | 2011-05-12 | Bank Of America Corporation | Network-Enhanced Control Of Software Updates Received Via Removable Computer-Readable Medium |
US7979898B2 (en) | 2004-11-10 | 2011-07-12 | Barclays Capital Inc. | System and method for monitoring and controlling software usage in a computer |
US7979530B1 (en) * | 2005-04-27 | 2011-07-12 | Juniper Networks, Inc. | Inventory life cycle management for a computer network |
US20110202913A1 (en) * | 2010-02-16 | 2011-08-18 | Tatsuo Nishimura | System, method, and computer program product for software distribution |
US20110219132A1 (en) * | 2010-03-03 | 2011-09-08 | Chalk Media Service Corp. | Method, system and apparatus for configuring a device for interaction with a server |
US20110217953A1 (en) * | 2010-03-03 | 2011-09-08 | Chalk Media Service Corp. | Method, system and apparatus for managing push data transfers |
EP2372537A1 (en) * | 2010-04-01 | 2011-10-05 | Research In Motion Limited | Application portability and transfer of device management for mobile devices |
US20110313892A1 (en) * | 2010-06-16 | 2011-12-22 | Dicke Ronald | Method and system for upselling to a user of a digital book lending library |
US8175418B1 (en) | 2007-10-26 | 2012-05-08 | Maxsp Corporation | Method of and system for enhanced data storage |
US8234238B2 (en) | 2005-03-04 | 2012-07-31 | Maxsp Corporation | Computer hardware and software diagnostic and report system |
US8307239B1 (en) | 2007-10-26 | 2012-11-06 | Maxsp Corporation | Disaster recovery appliance |
US8423821B1 (en) | 2006-12-21 | 2013-04-16 | Maxsp Corporation | Virtual recovery server |
US8443438B1 (en) * | 2006-09-06 | 2013-05-14 | Bmc Software, Inc. | Method and system for deployment of agents |
US8484027B1 (en) | 2009-06-12 | 2013-07-09 | Skyreader Media Inc. | Method for live remote narration of a digital book |
US20130257851A1 (en) * | 2012-04-01 | 2013-10-03 | Chao-Hua Lee | Pipeline web-based process for 3d animation |
US8589323B2 (en) | 2005-03-04 | 2013-11-19 | Maxsp Corporation | Computer hardware and software diagnostic and report system incorporating an expert system and agents |
US8607208B1 (en) * | 2008-10-01 | 2013-12-10 | Oracle International Corporation | System and methods for object code hot updates |
US20140032629A1 (en) * | 2006-07-06 | 2014-01-30 | Visible Measures Corp. | Remote invocation mechanism for logging |
US8645515B2 (en) | 2007-10-26 | 2014-02-04 | Maxsp Corporation | Environment manager |
US20140114804A1 (en) * | 2010-05-27 | 2014-04-24 | Rightware, Inc. | Online marketplace for pre-installed software and online services |
US8713152B2 (en) | 2012-03-02 | 2014-04-29 | Microsoft Corporation | Managing distributed applications using structural diagrams |
US8811396B2 (en) | 2006-05-24 | 2014-08-19 | Maxsp Corporation | System for and method of securing a network utilizing credentials |
US20140245286A1 (en) * | 2013-02-28 | 2014-08-28 | Hon Hai Precision Industry Co., Ltd. | Application managing system and method using same |
US8832847B2 (en) | 2012-07-10 | 2014-09-09 | International Business Machines Corporation | Coordinating data sharing among applications in mobile devices |
US8898319B2 (en) | 2006-05-24 | 2014-11-25 | Maxsp Corporation | Applications and services as a bundle |
US8918761B1 (en) * | 2008-12-05 | 2014-12-23 | Amazon Technologies, Inc. | Elastic application framework for deploying software |
US20150007343A1 (en) * | 2009-02-18 | 2015-01-01 | Canon Kabushiki Kaisha | Shortcut management unit and method, and storage medium |
US8984480B2 (en) | 2012-07-10 | 2015-03-17 | International Business Machines Corporation | Automating and/or recommending data sharing coordination among applications in mobile devices |
US20150088930A1 (en) * | 2013-09-24 | 2015-03-26 | Lg Cns Co., Ltd. | Management system and method for a big data processing device |
US8997077B1 (en) * | 2009-09-11 | 2015-03-31 | Symantec Corporation | Systems and methods for remediating a defective uninstaller during an upgrade procedure of a product |
US20150121361A1 (en) * | 2012-06-25 | 2015-04-30 | Tencent Technology (Shenzhen) Company Limited | Software Installation Method, Device And System |
US9122558B2 (en) | 2009-11-09 | 2015-09-01 | Bank Of America Corporation | Software updates using delta patching |
US9128799B2 (en) | 2009-11-09 | 2015-09-08 | Bank Of America Corporation | Programmatic creation of task sequences from manifests |
US9176898B2 (en) | 2009-11-09 | 2015-11-03 | Bank Of America Corporation | Software stack building using logically protected region of computer-readable medium |
US20150324184A1 (en) * | 2014-05-11 | 2015-11-12 | Lumension Security, Inc. | Self-contained executable for predetermined software updating |
US20150347173A1 (en) * | 2012-08-30 | 2015-12-03 | Zte Corporation | Method, system and device for managing software on virtual machine in cloud environment |
US9229771B2 (en) | 2012-03-08 | 2016-01-05 | Microsoft Technology Licensing, Llc | Cloud bursting and management of cloud-bursted applications |
US9282081B2 (en) | 2005-07-28 | 2016-03-08 | Vaporstream Incorporated | Reduced traceability electronic message system and method |
US9298445B1 (en) * | 2009-09-04 | 2016-03-29 | Symantec Corporation | Systems and methods for correlating software inventory information with delivered software |
US9317506B2 (en) | 2006-09-22 | 2016-04-19 | Microsoft Technology Licensing, Llc | Accelerated data transfer using common prior data segments |
US9319475B2 (en) | 2009-11-06 | 2016-04-19 | Blackberry Limited | Method, system and apparatus for management of push content when changing computing devices |
US9357031B2 (en) | 2004-06-03 | 2016-05-31 | Microsoft Technology Licensing, Llc | Applications as a service |
US9444896B2 (en) | 2012-12-05 | 2016-09-13 | Microsoft Technology Licensing, Llc | Application migration between clouds |
US20180150288A1 (en) * | 2016-11-30 | 2018-05-31 | Vmware, Inc. | Win32 software distribution architecture |
US10122740B1 (en) | 2015-05-05 | 2018-11-06 | F5 Networks, Inc. | Methods for establishing anomaly detection configurations and identifying anomalous network traffic and devices thereof |
US20180322599A1 (en) * | 2017-05-04 | 2018-11-08 | Servicenow, Inc. | Automated software license reclamation |
US10142306B1 (en) * | 2015-05-05 | 2018-11-27 | F5 Networks, Inc. | Methods for providing a secure network channel and devices thereof |
US10270792B1 (en) | 2016-01-21 | 2019-04-23 | F5 Networks, Inc. | Methods for detecting malicious smart bots to improve network security and devices thereof |
US10397250B1 (en) | 2016-01-21 | 2019-08-27 | F5 Networks, Inc. | Methods for detecting remote access trojan malware and devices thereof |
US10581902B1 (en) | 2015-11-30 | 2020-03-03 | F5 Networks, Inc. | Methods for mitigating distributed denial of service attacks and devices thereof |
US10834110B1 (en) | 2015-12-18 | 2020-11-10 | F5 Networks, Inc. | Methods for preventing DDoS attack based on adaptive self learning of session and transport layers and devices thereof |
US10853091B2 (en) * | 2017-07-18 | 2020-12-01 | Citrix Systems, Inc. | Cloud to on-premises windows registry settings |
US10931691B1 (en) | 2017-10-09 | 2021-02-23 | F5 Networks, Inc. | Methods for detecting and mitigating brute force credential stuffing attacks and devices thereof |
US11023248B2 (en) | 2016-03-30 | 2021-06-01 | British Telecommunications Public Limited Company | Assured application services |
US11038869B1 (en) | 2017-05-12 | 2021-06-15 | F5 Networks, Inc. | Methods for managing a federated identity environment based on application availability and devices thereof |
US11153091B2 (en) | 2016-03-30 | 2021-10-19 | British Telecommunications Public Limited Company | Untrusted code distribution |
US11349981B1 (en) | 2019-10-30 | 2022-05-31 | F5, Inc. | Methods for optimizing multimedia communication and devices thereof |
US11347826B2 (en) | 2012-08-28 | 2022-05-31 | Sweetlabs, Inc. | Systems and methods for hosted applications |
US11539740B1 (en) | 2018-02-02 | 2022-12-27 | F5, Inc. | Methods for protecting CPU during DDoS attack and devices thereof |
US11616806B1 (en) | 2015-05-08 | 2023-03-28 | F5, Inc. | Methods for protecting web based resources from D/DoS attacks and devices thereof |
US20230176902A1 (en) * | 2021-12-08 | 2023-06-08 | Jpmorgan Chase Bank, N.A. | System and method for automated onboarding |
EP4266231A1 (en) * | 2022-04-21 | 2023-10-25 | Audi Ag | Method for operating a control device for a motor vehicle |
US11829186B2 (en) | 2010-06-18 | 2023-11-28 | Sweetlabs, Inc. | System and methods for integration of an application runtime environment into a user computing environment |
US12141223B2 (en) | 2023-07-05 | 2024-11-12 | Sweetlabs, Inc. | Systems and methods for hosted applications |
Families Citing this family (142)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060143249A1 (en) * | 2000-03-09 | 2006-06-29 | Pkware, Inc. | System and method for manipulating and managing computer archive files |
US6879988B2 (en) | 2000-03-09 | 2005-04-12 | Pkware | System and method for manipulating and managing computer archive files |
US20050015608A1 (en) | 2003-07-16 | 2005-01-20 | Pkware, Inc. | Method for strongly encrypting .ZIP files |
US8959582B2 (en) | 2000-03-09 | 2015-02-17 | Pkware, Inc. | System and method for manipulating and managing computer archive files |
US7840933B2 (en) * | 2003-08-06 | 2010-11-23 | International Business Machines Corporation | Software application management for distributing resources and resource modeling |
US7685027B2 (en) | 2003-12-04 | 2010-03-23 | International Business Machines Corporation | Method and system for enterprise-wide migration |
US7831581B1 (en) | 2004-03-01 | 2010-11-09 | Radix Holdings, Llc | Enhanced search |
US7617501B2 (en) * | 2004-07-09 | 2009-11-10 | Quest Software, Inc. | Apparatus, system, and method for managing policies on a computer having a foreign operating system |
US8037140B2 (en) * | 2005-03-31 | 2011-10-11 | International Business Machines Corporation | System, method and program product for managing communications pursuant to an information technology (IT) migration |
ATE494580T1 (en) * | 2005-04-18 | 2011-01-15 | Research In Motion Ltd | CENTRALIZED STORAGE MANAGEMENT IN WIRELESS DEVICES |
US20070061386A1 (en) * | 2005-08-30 | 2007-03-15 | International Business Machines Corporation | Method, system and program product for performing an integrated information technology (IT) migration and inventory information collection |
US20070061355A1 (en) * | 2005-09-13 | 2007-03-15 | International Business Machines Corporation | Computer- implemented method, system, and program product for managing data for an information technology (IT) migration |
US7904949B2 (en) | 2005-12-19 | 2011-03-08 | Quest Software, Inc. | Apparatus, systems and methods to provide authentication services to a legacy application |
US8087075B2 (en) | 2006-02-13 | 2011-12-27 | Quest Software, Inc. | Disconnected credential validation using pre-fetched service tickets |
US8387048B1 (en) * | 2006-04-25 | 2013-02-26 | Parallels IP Holdings GmbH | Seamless integration, migration and installation of non-native application into native operating system |
US20070282782A1 (en) * | 2006-05-31 | 2007-12-06 | Carey Julie M | Method, system, and program product for managing information for a network topology change |
US8429712B2 (en) | 2006-06-08 | 2013-04-23 | Quest Software, Inc. | Centralized user authentication system apparatus and method |
WO2008043082A2 (en) | 2006-10-05 | 2008-04-10 | Splunk Inc. | Time series search engine |
US8086710B2 (en) | 2006-10-30 | 2011-12-27 | Quest Software, Inc. | Identity migration apparatus and method |
US8150800B2 (en) * | 2007-03-28 | 2012-04-03 | Netapp, Inc. | Advanced clock synchronization technique |
US8078651B2 (en) * | 2008-01-24 | 2011-12-13 | Oracle International Corporation | Match rules to identify duplicate records in inbound data |
US8346897B2 (en) | 2008-02-25 | 2013-01-01 | Jon Jaroker | System and method for deploying and maintaining software applications |
US8099571B1 (en) | 2008-08-06 | 2012-01-17 | Netapp, Inc. | Logical block replication with deduplication |
US20100262953A1 (en) * | 2009-04-14 | 2010-10-14 | Barboni Michael P | Systems and methods for automatically enabling and disabling applications and widgets with a computing device based on compatibility and/or user preference |
US8655848B1 (en) | 2009-04-30 | 2014-02-18 | Netapp, Inc. | Unordered idempotent logical replication operations |
US8321380B1 (en) | 2009-04-30 | 2012-11-27 | Netapp, Inc. | Unordered idempotent replication operations |
US8255984B1 (en) | 2009-07-01 | 2012-08-28 | Quest Software, Inc. | Single sign-on system for shared resource environments |
WO2011015970A1 (en) | 2009-08-04 | 2011-02-10 | Axxana (Israel) Ltd. | Data gap management in a remote data mirroring system |
US8671072B1 (en) | 2009-09-14 | 2014-03-11 | Netapp, Inc. | System and method for hijacking inodes based on replication operations received in an arbitrary order |
US8799367B1 (en) | 2009-10-30 | 2014-08-05 | Netapp, Inc. | Using logical block addresses with generation numbers as data fingerprints for network deduplication |
US8473690B1 (en) | 2009-10-30 | 2013-06-25 | Netapp, Inc. | Using logical block addresses with generation numbers as data fingerprints to provide cache coherency |
US9507799B1 (en) * | 2009-12-08 | 2016-11-29 | Netapp, Inc. | Distributed object store for network-based content repository |
US8886664B2 (en) * | 2010-05-13 | 2014-11-11 | Microsoft Corporation | Decreasing duplicates and loops in an activity record |
US20130007726A1 (en) * | 2011-06-30 | 2013-01-03 | Indrajit Poddar | Virtual machine disk image installation |
US9128949B2 (en) | 2012-01-18 | 2015-09-08 | Cloudera, Inc. | Memory allocation buffer for reduction of heap fragmentation |
US9639325B2 (en) * | 2012-03-01 | 2017-05-02 | International Business Machines Corporation | Finding a best matching string among a set of strings |
US11106724B2 (en) | 2012-03-28 | 2021-08-31 | Nec Corporation | Matching result display device, matching result display method, program, and recording medium |
US12033231B1 (en) | 2012-04-29 | 2024-07-09 | Subject Packet Solutions, Llc | System for facilitating the execution of law enforcement duties |
US11423502B1 (en) | 2012-04-29 | 2022-08-23 | Subject Packet Solutions, Llc | System for facilitating the execution of law enforcement duties |
US10755371B1 (en) | 2012-04-29 | 2020-08-25 | Subject Packet Solutions, Llc | System for facilitating the execution of law enforcement duties |
US9218634B1 (en) | 2012-04-29 | 2015-12-22 | Intel-Based Solutions, LLC | System and method for facilitating the execution of law enforcement duties |
US10318397B2 (en) | 2013-04-15 | 2019-06-11 | Vmware, Inc. | Efficient data pattern matching |
US9244903B2 (en) * | 2013-04-15 | 2016-01-26 | Vmware, Inc. | Efficient data pattern matching |
US10318541B2 (en) | 2013-04-30 | 2019-06-11 | Splunk Inc. | Correlating log data with performance measurements having a specified relationship to a threshold value |
US10614132B2 (en) * | 2013-04-30 | 2020-04-07 | Splunk Inc. | GUI-triggered processing of performance data and log data from an information technology environment |
US10019496B2 (en) | 2013-04-30 | 2018-07-10 | Splunk Inc. | Processing of performance data and log data from an information technology environment by using diverse data stores |
US10353957B2 (en) | 2013-04-30 | 2019-07-16 | Splunk Inc. | Processing of performance data and raw log data from an information technology environment |
US10346357B2 (en) | 2013-04-30 | 2019-07-09 | Splunk Inc. | Processing of performance data and structure data from an information technology environment |
US10225136B2 (en) | 2013-04-30 | 2019-03-05 | Splunk Inc. | Processing of log data and performance data obtained via an application programming interface (API) |
US10997191B2 (en) | 2013-04-30 | 2021-05-04 | Splunk Inc. | Query-triggered processing of performance data and log data from an information technology environment |
US10474714B2 (en) * | 2013-05-01 | 2019-11-12 | Kble Ltd | Method and component for classifying resources of a database |
US10776244B2 (en) | 2013-07-09 | 2020-09-15 | Oracle International Corporation | Consolidation planning services for systems migration |
US9747311B2 (en) | 2013-07-09 | 2017-08-29 | Oracle International Corporation | Solution to generate a scriptset for an automated database migration |
US9805070B2 (en) | 2013-07-09 | 2017-10-31 | Oracle International Corporation | Dynamic migration script management |
US9442983B2 (en) | 2013-07-09 | 2016-09-13 | Oracle International Corporation | Method and system for reducing instability when upgrading software |
US9996562B2 (en) | 2013-07-09 | 2018-06-12 | Oracle International Corporation | Automated database migration architecture |
US11157664B2 (en) | 2013-07-09 | 2021-10-26 | Oracle International Corporation | Database modeling and analysis |
US9697266B1 (en) * | 2013-09-27 | 2017-07-04 | EMC IP Holding Company LLC | Management of computing system element migration |
US10769028B2 (en) | 2013-10-16 | 2020-09-08 | Axxana (Israel) Ltd. | Zero-transaction-loss recovery for database systems |
TWI513356B (en) * | 2013-12-31 | 2015-12-11 | Aten Int Co Ltd | Network device and system and method of installation and activation of embedded control program thereof |
US9552359B2 (en) * | 2014-02-21 | 2017-01-24 | Apple Inc. | Revisiting content history |
US9471688B2 (en) * | 2014-02-21 | 2016-10-18 | Apple Inc. | Personalized targeting of media stations |
JP5752337B1 (en) * | 2014-05-12 | 2015-07-22 | 楽天株式会社 | Information processing system, information processing method, and program |
US20170154167A1 (en) * | 2014-05-13 | 2017-06-01 | Agfa Healthcare Inc. | A system and a related method for automatically selecting a hanging protocol for a medical study |
US10877982B1 (en) | 2014-05-21 | 2020-12-29 | Google, Llc | Detection of popular content with narrow appeal |
US10360204B2 (en) * | 2014-05-22 | 2019-07-23 | Entit Software Llc | User defined function, class creation for external data source access |
JP6500248B2 (en) * | 2014-05-29 | 2019-04-17 | パナソニックIpマネジメント株式会社 | Method and program for providing cooking recipe |
WO2015183322A1 (en) | 2014-05-30 | 2015-12-03 | Hewlett-Packard Development Company, L.P. | Evaluating user experience |
US10380135B2 (en) | 2014-06-19 | 2019-08-13 | Wells Fargo Bank, N.A. | Data aggregation and reporting environment for data center infrastructure management |
WO2016007162A1 (en) * | 2014-07-10 | 2016-01-14 | Hewlett-Packard Development Company, L.P. | Categorizing columns in a data table |
US20160142485A1 (en) * | 2014-11-19 | 2016-05-19 | Commvault Systems, Inc. | Migration to cloud storage from backup |
US9703876B2 (en) * | 2014-11-20 | 2017-07-11 | International Business Machines Corporation | Normalization of confidence thresholds in federated environments |
JP6540201B2 (en) * | 2015-04-30 | 2019-07-10 | 株式会社リコー | Information processing system and information acquisition method |
US11676235B1 (en) | 2015-06-03 | 2023-06-13 | Subject Packet Solutions, Llc | Computer-based system for facilitating the execution of law enforcement duties |
US11636158B1 (en) | 2015-06-03 | 2023-04-25 | Subject Packet Solutions, Llc | Computer-based system for facilitating the execution of law enforcement duties |
US10379958B2 (en) * | 2015-06-03 | 2019-08-13 | Axxana (Israel) Ltd. | Fast archiving for database systems |
US10474678B1 (en) * | 2015-06-03 | 2019-11-12 | Subject Packet Solutions, Llc | Computer-based system for facilitating the execution of law enforcement duties |
US10922094B2 (en) * | 2015-06-05 | 2021-02-16 | Apple Inc. | Systems and methods for proactively providing recommendations to a user of a computing device |
US10331705B2 (en) * | 2015-06-07 | 2019-06-25 | Apple Inc. | Moments naming based on location accuracy |
US9971995B2 (en) | 2015-06-18 | 2018-05-15 | International Business Machines Corporation | Prioritization of e-mail files for migration |
CN106503017A (en) * | 2015-09-08 | 2017-03-15 | 摩贝(上海)生物科技有限公司 | A kind of distributed reptile system task grasping system and method |
US10345781B2 (en) | 2015-10-28 | 2019-07-09 | Johnson Controls Technology Company | Multi-function thermostat with health monitoring features |
US10655881B2 (en) | 2015-10-28 | 2020-05-19 | Johnson Controls Technology Company | Thermostat with halo light system and emergency directions |
US10529033B2 (en) * | 2015-11-06 | 2020-01-07 | Clarifize, Inc | Network connection system and method |
US10255335B2 (en) * | 2015-11-06 | 2019-04-09 | Cloudera, Inc. | Database workload analysis and optimization visualizations |
JP6555108B2 (en) * | 2015-12-04 | 2019-08-07 | 富士通株式会社 | Display control program, display control method, and information processing apparatus |
JP6620538B2 (en) * | 2015-12-04 | 2019-12-18 | 富士通株式会社 | Learning program, learning method and mail server |
US10726003B2 (en) * | 2016-01-05 | 2020-07-28 | Caavo Inc | Simultaneous search on multiple living room devices |
JP2017138892A (en) * | 2016-02-05 | 2017-08-10 | 株式会社日立製作所 | Information processing device, processing device, and data search method |
US10733153B2 (en) * | 2016-02-29 | 2020-08-04 | Red Hat, Inc. | Snapshot management in distributed file systems |
US10438500B2 (en) | 2016-03-14 | 2019-10-08 | Pearson Education, Inc. | Job profile integration into talent management systems |
US10360190B2 (en) * | 2016-03-31 | 2019-07-23 | Microsoft Technology Licensing, Llc | Migrate data in a system using extensions |
US11036696B2 (en) * | 2016-06-07 | 2021-06-15 | Oracle International Corporation | Resource allocation for database provisioning |
US20170351740A1 (en) * | 2016-06-07 | 2017-12-07 | International Business Machines Corporation | Determining stalwart nodes in signed social networks |
US10474704B2 (en) * | 2016-06-27 | 2019-11-12 | International Business Machines Corporation | Recommending documents sets based on a similar set of correlated features |
US10409834B2 (en) * | 2016-07-11 | 2019-09-10 | Al-Elm Information Security Co. | Methods and systems for multi-dynamic data retrieval and data disbursement |
US10475090B2 (en) * | 2016-07-11 | 2019-11-12 | Micro Focus Llc | Calculating user experience scores |
US10635661B2 (en) * | 2016-07-11 | 2020-04-28 | Facebook, Inc. | Keyboard-based corrections for search queries on online social networks |
US11194860B2 (en) | 2016-07-11 | 2021-12-07 | Baidu Usa Llc | Question generation systems and methods for automating diagnosis |
US10521436B2 (en) * | 2016-07-11 | 2019-12-31 | Baidu Usa Llc | Systems and methods for data and information source reliability estimation |
US10360201B2 (en) * | 2016-07-11 | 2019-07-23 | Investcloud Inc | Data exchange common interface configuration |
US10698908B2 (en) * | 2016-07-12 | 2020-06-30 | International Business Machines Corporation | Multi-field search query ranking using scoring statistics |
US10650318B2 (en) | 2016-07-20 | 2020-05-12 | Baidu Usa Llc | Systems and methods of determining sufficient causes from multiple outcomes |
US11157540B2 (en) * | 2016-09-12 | 2021-10-26 | International Business Machines Corporation | Search space reduction for knowledge graph querying and interactions |
US10585891B2 (en) * | 2016-11-03 | 2020-03-10 | Soundhound, Inc. | Dynamic choice of data sources in natural language query processing |
US10885024B2 (en) * | 2016-11-03 | 2021-01-05 | Pearson Education, Inc. | Mapping data resources to requested objectives |
US10459959B2 (en) * | 2016-11-07 | 2019-10-29 | Oath Inc. | Top-k query processing with conditional skips |
US10558626B2 (en) * | 2016-11-07 | 2020-02-11 | Salesforce.Com, Inc. | Merging and unmerging objects using graphical representation |
US10452688B2 (en) | 2016-11-08 | 2019-10-22 | Ebay Inc. | Crowd assisted query system |
US10489402B2 (en) * | 2016-11-08 | 2019-11-26 | International Business Machines Corporation | Bridging native JDBC calls with DBaaS using ESB |
US10319255B2 (en) | 2016-11-08 | 2019-06-11 | Pearson Education, Inc. | Measuring language learning using standardized score scales and adaptive assessment engines |
US10459960B2 (en) * | 2016-11-08 | 2019-10-29 | International Business Machines Corporation | Clustering a set of natural language queries based on significant events |
US10489456B2 (en) | 2016-11-08 | 2019-11-26 | International Business Machines Corporation | Topic bridging determination using topical graphs |
US10783125B2 (en) * | 2016-11-08 | 2020-09-22 | International Business Machines Corporation | Automatic data purging in a database management system |
US10496401B2 (en) * | 2016-11-08 | 2019-12-03 | Sap Se | Managing rename of tables and table fields |
US10459922B2 (en) * | 2016-11-08 | 2019-10-29 | At&T Intellectual Property I, L.P. | Unique identification generation for records in a data streaming processing system |
US10628457B2 (en) * | 2016-11-08 | 2020-04-21 | International Business Machines Corporation | Method and system for self-organizing an online community of news content readers and authors |
US10708370B2 (en) * | 2016-11-08 | 2020-07-07 | International Business Machines Corporation | Method and system for assigning privileges in an online community of news content readers and authors |
US10423614B2 (en) | 2016-11-08 | 2019-09-24 | International Business Machines Corporation | Determining the significance of an event in the context of a natural language query |
US10275514B2 (en) | 2016-11-22 | 2019-04-30 | International Business Machines Corporation | System and method for generating improved search queries from natural language questions |
US10579587B2 (en) * | 2017-01-03 | 2020-03-03 | International Business Machines Corporation | Space management for a hierarchical set of file systems |
US10657102B2 (en) | 2017-01-03 | 2020-05-19 | International Business Machines Corporation | Storage space management in union mounted file systems |
US10579598B2 (en) * | 2017-01-03 | 2020-03-03 | International Business Machines Corporation | Global namespace for a hierarchical set of file systems |
US10585860B2 (en) * | 2017-01-03 | 2020-03-10 | International Business Machines Corporation | Global namespace for a hierarchical set of file systems |
US10592479B2 (en) * | 2017-01-03 | 2020-03-17 | International Business Machines Corporation | Space management for a hierarchical set of file systems |
US10649955B2 (en) | 2017-01-03 | 2020-05-12 | International Business Machines Corporation | Providing unique inodes across multiple file system namespaces |
US10733613B2 (en) * | 2017-01-04 | 2020-08-04 | Salesforce.Com, Inc. | Methods and systems for performing data assessment |
US10311524B2 (en) * | 2017-01-04 | 2019-06-04 | International Business Machines Corporation | Hashtag segmentation |
US10649857B2 (en) * | 2017-01-04 | 2020-05-12 | International Business Machine Corporation | Risk measurement driven data protection strategy |
US10430465B2 (en) | 2017-01-04 | 2019-10-01 | International Business Machines Corporation | Dynamic faceting for personalized search and discovery |
US10726074B2 (en) * | 2017-01-04 | 2020-07-28 | Microsoft Technology Licensing, Llc | Identifying among recent revisions to documents those that are relevant to a search query |
US10394823B2 (en) * | 2017-01-04 | 2019-08-27 | International Business Machines Corporation | Detection and utilization of attributes |
US10311029B2 (en) * | 2017-01-04 | 2019-06-04 | Sap Se | Shared database dictionaries |
US20180189403A1 (en) | 2017-01-05 | 2018-07-05 | International Business Machines Corporation | Website domain specific search |
US10528633B2 (en) | 2017-01-23 | 2020-01-07 | International Business Machines Corporation | Utilizing online content to suggest item attribute importance |
US10592326B2 (en) | 2017-03-08 | 2020-03-17 | Axxana (Israel) Ltd. | Method and apparatus for data loss assessment |
US10747795B2 (en) | 2018-01-11 | 2020-08-18 | International Business Machines Corporation | Cognitive retrieve and rank search improvements using natural language for product attributes |
US10282359B1 (en) | 2018-03-30 | 2019-05-07 | Atlassian Pty Ltd | Search based on group relevance |
US11107390B2 (en) | 2018-12-21 | 2021-08-31 | Johnson Controls Technology Company | Display device with halo |
US11044504B2 (en) | 2019-06-14 | 2021-06-22 | A&E Television Networks | Intellectual property rights management software systems for video content and methods of their manufacture and use |
US11256671B2 (en) | 2019-09-13 | 2022-02-22 | Oracle International Corporation | Integrated transition control center |
US11550925B2 (en) | 2021-03-24 | 2023-01-10 | Bank Of America Corporation | Information security system for identifying potential security threats in software package deployment |
Citations (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5155847A (en) * | 1988-08-03 | 1992-10-13 | Minicom Data Corporation | Method and apparatus for updating software at remote locations |
US5708709A (en) * | 1995-12-08 | 1998-01-13 | Sun Microsystems, Inc. | System and method for managing try-and-buy usage of application programs |
US5832522A (en) * | 1994-02-25 | 1998-11-03 | Kodak Limited | Data storage management for network interconnected processors |
US5991753A (en) * | 1993-06-16 | 1999-11-23 | Lachman Technology, Inc. | Method and system for computer file management, including file migration, special handling, and associating extended attributes with files |
US6169976B1 (en) * | 1998-07-02 | 2001-01-02 | Encommerce, Inc. | Method and apparatus for regulating the use of licensed products |
US6199204B1 (en) * | 1998-01-28 | 2001-03-06 | International Business Machines Corporation | Distribution of software updates via a computer network |
US6237020B1 (en) * | 1996-10-01 | 2001-05-22 | International Business Machines Corporation | Task-oriented automatic distribution of software |
US6327617B1 (en) * | 1995-11-27 | 2001-12-04 | Microsoft Corporation | Method and system for identifying and obtaining computer software from a remote computer |
US6345386B1 (en) * | 1998-09-21 | 2002-02-05 | Microsoft Corporation | Method and system for advertising applications |
US20020032763A1 (en) * | 1998-12-14 | 2002-03-14 | Cox David E. | Methods, systems and computer program products for distribution of application programs to a target station on a network |
US20020049925A1 (en) * | 1995-06-09 | 2002-04-25 | Galipeau Kenneth J. | Backing up selected files of a computer system |
US6408277B1 (en) * | 2000-06-21 | 2002-06-18 | Banter Limited | System and method for automatic task prioritization |
US20020100036A1 (en) * | 2000-09-22 | 2002-07-25 | Patchlink.Com Corporation | Non-invasive automatic offsite patch fingerprinting and updating system and method |
US20020107809A1 (en) * | 2000-06-02 | 2002-08-08 | Biddle John Denton | System and method for licensing management |
US20020133619A1 (en) * | 2001-03-07 | 2002-09-19 | Broadcom Corporation | Pointer based binary search engine and method for use in network devices |
US20030061170A1 (en) * | 2000-08-29 | 2003-03-27 | Uzo Chijioke Chukwuemeka | Method and apparatus for making secure electronic payments |
US20030078853A1 (en) * | 1999-03-27 | 2003-04-24 | Marcus Peinado | Enforcement architecture and method for digital rights management |
US6598067B1 (en) * | 1999-07-26 | 2003-07-22 | American Management Systems, Inc. | Application server framework |
US6625622B1 (en) * | 1999-05-14 | 2003-09-23 | Eisenworld, Inc. | Apparatus and method for transfering information between platforms |
US20040187104A1 (en) * | 2003-03-18 | 2004-09-23 | Shantanu Sardesai | Operating system deployment methods and systems |
US6889249B2 (en) * | 2001-01-11 | 2005-05-03 | Z-Force, Inc. | Transaction aggregation in a switched file system |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3734334B2 (en) * | 1997-05-07 | 2006-01-11 | 富士通株式会社 | Data migration system, computer-readable recording medium storing data migration program, and data migration method |
US20020174329A1 (en) * | 1999-04-28 | 2002-11-21 | Bowler Richard A. | Method and system for automatically transitioning files among computer systems |
US6938039B1 (en) * | 2000-06-30 | 2005-08-30 | Emc Corporation | Concurrent file across at a target file server during migration of file systems between file servers using a network file system access protocol |
US6981252B1 (en) * | 2000-07-14 | 2005-12-27 | Symantec Corporation | Method and apparatus for automatically uninstalling software on a network |
US6981005B1 (en) * | 2000-08-24 | 2005-12-27 | Microsoft Corporation | Partial migration of an object to another storage location in a computer system |
US20020147974A1 (en) * | 2001-02-09 | 2002-10-10 | Wookey Michael J. | Networked installation system for deploying systems management platforms |
-
2004
- 2004-04-26 CA CA002523279A patent/CA2523279A1/en not_active Abandoned
- 2004-04-26 EP EP04760391A patent/EP1671200A4/en not_active Withdrawn
- 2004-04-26 CA CA002523283A patent/CA2523283A1/en not_active Abandoned
- 2004-04-26 US US10/831,322 patent/US7340491B2/en not_active Expired - Fee Related
- 2004-04-26 US US10/831,323 patent/US20050027846A1/en not_active Abandoned
- 2004-04-26 EP EP04760390A patent/EP1671199A2/en not_active Withdrawn
- 2004-04-26 WO PCT/US2004/012805 patent/WO2004097566A2/en active Application Filing
- 2004-04-26 WO PCT/US2004/012804 patent/WO2004097565A2/en active Application Filing
Patent Citations (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5155847A (en) * | 1988-08-03 | 1992-10-13 | Minicom Data Corporation | Method and apparatus for updating software at remote locations |
US5991753A (en) * | 1993-06-16 | 1999-11-23 | Lachman Technology, Inc. | Method and system for computer file management, including file migration, special handling, and associating extended attributes with files |
US5832522A (en) * | 1994-02-25 | 1998-11-03 | Kodak Limited | Data storage management for network interconnected processors |
US20020049925A1 (en) * | 1995-06-09 | 2002-04-25 | Galipeau Kenneth J. | Backing up selected files of a computer system |
US6327617B1 (en) * | 1995-11-27 | 2001-12-04 | Microsoft Corporation | Method and system for identifying and obtaining computer software from a remote computer |
US5708709A (en) * | 1995-12-08 | 1998-01-13 | Sun Microsystems, Inc. | System and method for managing try-and-buy usage of application programs |
US6237020B1 (en) * | 1996-10-01 | 2001-05-22 | International Business Machines Corporation | Task-oriented automatic distribution of software |
US6199204B1 (en) * | 1998-01-28 | 2001-03-06 | International Business Machines Corporation | Distribution of software updates via a computer network |
US6169976B1 (en) * | 1998-07-02 | 2001-01-02 | Encommerce, Inc. | Method and apparatus for regulating the use of licensed products |
US6345386B1 (en) * | 1998-09-21 | 2002-02-05 | Microsoft Corporation | Method and system for advertising applications |
US20020032763A1 (en) * | 1998-12-14 | 2002-03-14 | Cox David E. | Methods, systems and computer program products for distribution of application programs to a target station on a network |
US20030078853A1 (en) * | 1999-03-27 | 2003-04-24 | Marcus Peinado | Enforcement architecture and method for digital rights management |
US6625622B1 (en) * | 1999-05-14 | 2003-09-23 | Eisenworld, Inc. | Apparatus and method for transfering information between platforms |
US6598067B1 (en) * | 1999-07-26 | 2003-07-22 | American Management Systems, Inc. | Application server framework |
US20020107809A1 (en) * | 2000-06-02 | 2002-08-08 | Biddle John Denton | System and method for licensing management |
US6408277B1 (en) * | 2000-06-21 | 2002-06-18 | Banter Limited | System and method for automatic task prioritization |
US20030061170A1 (en) * | 2000-08-29 | 2003-03-27 | Uzo Chijioke Chukwuemeka | Method and apparatus for making secure electronic payments |
US20020100036A1 (en) * | 2000-09-22 | 2002-07-25 | Patchlink.Com Corporation | Non-invasive automatic offsite patch fingerprinting and updating system and method |
US6889249B2 (en) * | 2001-01-11 | 2005-05-03 | Z-Force, Inc. | Transaction aggregation in a switched file system |
US20020133619A1 (en) * | 2001-03-07 | 2002-09-19 | Broadcom Corporation | Pointer based binary search engine and method for use in network devices |
US20040187104A1 (en) * | 2003-03-18 | 2004-09-23 | Shantanu Sardesai | Operating system deployment methods and systems |
Cited By (212)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060168147A1 (en) * | 1999-11-24 | 2006-07-27 | Kabushiki Kaisha Sega | Information processor, file server, accounting control system, accounting control method, and recording medium recording a program therefor |
US7219344B2 (en) * | 2002-04-30 | 2007-05-15 | Accenture Global Services Gmbh | Method and apparatus for deploying programs and computing platforms to selected computers |
US20030204842A1 (en) * | 2002-04-30 | 2003-10-30 | Chenelle Michael A. | Computer software management |
US9124584B2 (en) * | 2003-05-09 | 2015-09-01 | Arvato Digital Services Llc | Location-specific or range-based licensing system |
US20060277312A1 (en) * | 2003-05-09 | 2006-12-07 | Karl Hirsch | Location-specific or range-based licensing system |
US20050010918A1 (en) * | 2003-07-11 | 2005-01-13 | International Business Machines Corporation | Autonomic image migration/deployment appliance |
US8930934B2 (en) * | 2003-09-05 | 2015-01-06 | Time Warner Cable Enterprises Llc | Technique for updating a resident application and associated parameters in a user terminal through a communications network |
US20090183219A1 (en) * | 2003-09-05 | 2009-07-16 | Stephen L Maynard | Technique for updating a resident application and associated parameters in a user terminal through a communications network |
US7546361B2 (en) * | 2003-10-10 | 2009-06-09 | Nortel Networks Limited | Method and network for delivering management software for a network element |
US20050097216A1 (en) * | 2003-10-10 | 2005-05-05 | Nortel Networks Limited | Method and network for delivering management software for a network element |
US20050138125A1 (en) * | 2003-12-19 | 2005-06-23 | Ethan Davis | Enterprise asset management by a third party expert system |
US20090031300A1 (en) * | 2004-02-17 | 2009-01-29 | Eastman Kodak Company | Process and system to supply a multimedia application on a terminal using a programming agent |
US20050262225A1 (en) * | 2004-05-20 | 2005-11-24 | Bea Systems, Inc. | System and method for performing validation of a configuration |
US20050262101A1 (en) * | 2004-05-20 | 2005-11-24 | Bea Systems, Inc. | System and method for performing batch configuration changes |
US7529818B2 (en) * | 2004-05-20 | 2009-05-05 | Bea Systems, Inc. | System and method for performing validation of a configuration |
US7660824B2 (en) | 2004-05-20 | 2010-02-09 | Bea Systems, Inc. | System and method for performing batch configuration changes |
US9357031B2 (en) | 2004-06-03 | 2016-05-31 | Microsoft Technology Licensing, Llc | Applications as a service |
US20060031529A1 (en) * | 2004-06-03 | 2006-02-09 | Keith Robert O Jr | Virtual application manager |
US8812613B2 (en) * | 2004-06-03 | 2014-08-19 | Maxsp Corporation | Virtual application manager |
US7908339B2 (en) | 2004-06-03 | 2011-03-15 | Maxsp Corporation | Transaction based virtual file system optimized for high-latency network connections |
US9569194B2 (en) | 2004-06-03 | 2017-02-14 | Microsoft Technology Licensing, Llc | Virtual application manager |
US7664834B2 (en) | 2004-07-09 | 2010-02-16 | Maxsp Corporation | Distributed operating system management |
US20080021951A1 (en) * | 2004-07-21 | 2008-01-24 | The Mathworks, Inc. | Instrument based distributed computing systems |
US7991828B2 (en) * | 2004-08-06 | 2011-08-02 | Ricoh Company, Ltd. | Network communication apparatus generating XML responses based on HTTP requests |
US20060028691A1 (en) * | 2004-08-06 | 2006-02-09 | Kiyohiko Shinomiya | Network communication apparatus |
US7610578B1 (en) * | 2004-08-24 | 2009-10-27 | The Math Works, Inc. | Test manager for integrated test environments |
US7979898B2 (en) | 2004-11-10 | 2011-07-12 | Barclays Capital Inc. | System and method for monitoring and controlling software usage in a computer |
US20060184714A1 (en) * | 2005-02-17 | 2006-08-17 | International Business Machines Corporation | Intelligent system health indicator |
US7734574B2 (en) * | 2005-02-17 | 2010-06-08 | International Business Machines Corporation | Intelligent system health indicator |
AU2006217563B2 (en) * | 2005-02-22 | 2012-05-17 | Connectif Solutions Inc. | Distributed asset management system and method |
US8510732B2 (en) | 2005-02-22 | 2013-08-13 | Connectif Solutions Inc. | Distributed asset management system and method |
EP1851672A4 (en) * | 2005-02-22 | 2010-04-14 | Connectif Solutions Inc | Distributed asset management system and method |
EP1851672A1 (en) * | 2005-02-22 | 2007-11-07 | Connectif Solutions Inc. | Distributed asset management system and method |
US7512584B2 (en) | 2005-03-04 | 2009-03-31 | Maxsp Corporation | Computer hardware and software diagnostic and report system |
US8234238B2 (en) | 2005-03-04 | 2012-07-31 | Maxsp Corporation | Computer hardware and software diagnostic and report system |
US7624086B2 (en) * | 2005-03-04 | 2009-11-24 | Maxsp Corporation | Pre-install compliance system |
US8589323B2 (en) | 2005-03-04 | 2013-11-19 | Maxsp Corporation | Computer hardware and software diagnostic and report system incorporating an expert system and agents |
US20060224544A1 (en) * | 2005-03-04 | 2006-10-05 | Keith Robert O Jr | Pre-install compliance system |
US20060224545A1 (en) * | 2005-03-04 | 2006-10-05 | Keith Robert O Jr | Computer hardware and software diagnostic and report system |
US7979530B1 (en) * | 2005-04-27 | 2011-07-12 | Juniper Networks, Inc. | Inventory life cycle management for a computer network |
US20060253455A1 (en) * | 2005-05-05 | 2006-11-09 | Microsoft Corporation | Extensible type-based publication / subscription services |
US20060277402A1 (en) * | 2005-05-18 | 2006-12-07 | Hitachi, Ltd. | System startup method |
US7693983B1 (en) * | 2005-05-27 | 2010-04-06 | Symantec Operating Corporation | System and method providing application redeployment mappings using filtered resource usage data |
US8886739B2 (en) | 2005-07-28 | 2014-11-11 | Vaporstream, Inc. | Electronic message content and header restrictive send device handling system and method |
US9313157B2 (en) | 2005-07-28 | 2016-04-12 | Vaporstream, Inc. | Electronic message recipient handling system and method with separation of message content and header information |
US10412039B2 (en) | 2005-07-28 | 2019-09-10 | Vaporstream, Inc. | Electronic messaging system for mobile devices with reduced traceability of electronic messages |
US8291026B2 (en) | 2005-07-28 | 2012-10-16 | Vaporstream Incorporated | Reduced traceability electronic message system and method for sending header information before message content |
US9313155B2 (en) | 2005-07-28 | 2016-04-12 | Vaporstream, Inc. | Electronic message send device handling system and method with separation of message content and header information |
US9313156B2 (en) | 2005-07-28 | 2016-04-12 | Vaporstream, Inc. | Electronic message send device handling system and method with separated display and transmission of message content and header information |
US12074841B2 (en) | 2005-07-28 | 2024-08-27 | Snap Inc. | Sender-correlated reply ID generation in electronic messaging system |
US11652775B2 (en) | 2005-07-28 | 2023-05-16 | Snap Inc. | Reply ID generator for electronic messaging system |
US8935351B2 (en) | 2005-07-28 | 2015-01-13 | Vaporstream, Inc. | Electronic message content and header restrictive recipient handling system and method |
US20070028229A1 (en) * | 2005-07-28 | 2007-02-01 | International Business Machines Corporation | Method and system for dynamic generation of computer system installation instructions |
US9306886B2 (en) | 2005-07-28 | 2016-04-05 | Vaporstream, Inc. | Electronic message recipient handling system and method with separated display of message content and header information |
US9306885B2 (en) | 2005-07-28 | 2016-04-05 | Vaporstream, Inc. | Electronic message send device handling system and method with media component and header information separation |
US10819672B2 (en) | 2005-07-28 | 2020-10-27 | Vaporstream, Inc. | Electronic messaging system for mobile devices with reduced traceability of electronic messages |
US9338111B2 (en) | 2005-07-28 | 2016-05-10 | Vaporstream, Inc. | Electronic message recipient handling system and method with media component and header information separation |
US9282081B2 (en) | 2005-07-28 | 2016-03-08 | Vaporstream Incorporated | Reduced traceability electronic message system and method |
US9413711B2 (en) | 2005-07-28 | 2016-08-09 | Vaporstream, Inc. | Electronic message handling system and method between sending and recipient devices with separation of display of media component and header information |
US20100064016A1 (en) * | 2005-07-28 | 2010-03-11 | Vaporstream Incorporated | Reduced Traceability Electronic Message System and Method |
US20070088630A1 (en) * | 2005-09-29 | 2007-04-19 | Microsoft Corporation | Assessment and/or deployment of computer network component(s) |
US7676565B2 (en) * | 2006-01-27 | 2010-03-09 | Microsoft Corporation | Light weight software and hardware inventory |
US20070180059A1 (en) * | 2006-01-27 | 2007-08-02 | Microsoft Corporation | Light weight software and hardware inventory |
US20080109396A1 (en) * | 2006-03-21 | 2008-05-08 | Martin Kacin | IT Automation Appliance And User Portal |
US9893961B2 (en) | 2006-05-24 | 2018-02-13 | Microsoft Technology Licensing, Llc | Applications and services as a bundle |
US9160735B2 (en) | 2006-05-24 | 2015-10-13 | Microsoft Technology Licensing, Llc | System for and method of securing a network utilizing credentials |
US8898319B2 (en) | 2006-05-24 | 2014-11-25 | Maxsp Corporation | Applications and services as a bundle |
US9584480B2 (en) | 2006-05-24 | 2017-02-28 | Microsoft Technology Licensing, Llc | System for and method of securing a network utilizing credentials |
US9906418B2 (en) | 2006-05-24 | 2018-02-27 | Microsoft Technology Licensing, Llc | Applications and services as a bundle |
US10511495B2 (en) | 2006-05-24 | 2019-12-17 | Microsoft Technology Licensing, Llc | Applications and services as a bundle |
US8811396B2 (en) | 2006-05-24 | 2014-08-19 | Maxsp Corporation | System for and method of securing a network utilizing credentials |
US8667382B2 (en) * | 2006-06-28 | 2014-03-04 | International Business Machines Corporation | Configurable field definition document |
US20080005165A1 (en) * | 2006-06-28 | 2008-01-03 | Martin James A | Configurable field definition document |
US9578089B2 (en) * | 2006-07-06 | 2017-02-21 | Visible Measures Corp. | Remote invocation mechanism for logging |
US20140032629A1 (en) * | 2006-07-06 | 2014-01-30 | Visible Measures Corp. | Remote invocation mechanism for logging |
US20080077663A1 (en) * | 2006-07-21 | 2008-03-27 | Lehman Brothers Inc. | Method and System For Identifying And Conducting Inventory Of Computer Assets On A Network |
US20080021984A1 (en) * | 2006-07-21 | 2008-01-24 | Lehman Brothers Inc. | Method and system for identifying and conducting inventory of computer assets on a network |
WO2008010820A1 (en) * | 2006-07-21 | 2008-01-24 | Barclays Capital Inc. | Method and system for identifying and conducting inventory of computer assets on a network |
US7769835B2 (en) | 2006-07-21 | 2010-08-03 | Barclays Capital Inc. | Method and system for identifying and conducting inventory of computer assets on a network |
US20080077662A1 (en) * | 2006-07-21 | 2008-03-27 | Lehman Brothers Inc. | Method and System For Identifying And Conducting Inventory Of Computer Assets On A Network |
US7680907B2 (en) * | 2006-07-21 | 2010-03-16 | Barclays Capital Inc. | Method and system for identifying and conducting inventory of computer assets on a network |
US20080028386A1 (en) * | 2006-07-31 | 2008-01-31 | Fujitsu Limited | Transmission apparatus and method of automatically updating software |
US20080040455A1 (en) * | 2006-08-08 | 2008-02-14 | Microsoft Corporation | Model-based deployment and configuration of software in a distributed environment |
US20080040714A1 (en) * | 2006-08-14 | 2008-02-14 | Caterpillar Inc. | Method and system for automatic computer and user migration |
US8387038B2 (en) * | 2006-08-14 | 2013-02-26 | Caterpillar Inc. | Method and system for automatic computer and user migration |
US8443438B1 (en) * | 2006-09-06 | 2013-05-14 | Bmc Software, Inc. | Method and system for deployment of agents |
US7840514B2 (en) | 2006-09-22 | 2010-11-23 | Maxsp Corporation | Secure virtual private network utilizing a diagnostics policy and diagnostics engine to establish a secure network connection |
US8099378B2 (en) | 2006-09-22 | 2012-01-17 | Maxsp Corporation | Secure virtual private network utilizing a diagnostics policy and diagnostics engine to establish a secure network connection |
US9317506B2 (en) | 2006-09-22 | 2016-04-19 | Microsoft Technology Licensing, Llc | Accelerated data transfer using common prior data segments |
US20080127294A1 (en) * | 2006-09-22 | 2008-05-29 | Keith Robert O | Secure virtual private network |
US20080077704A1 (en) * | 2006-09-24 | 2008-03-27 | Void Communications, Inc. | Variable Electronic Communication Ping Time System and Method |
US20080091773A1 (en) * | 2006-10-16 | 2008-04-17 | Nokia Corporation | Dynamic polling control for content distribution |
US8849896B2 (en) * | 2006-10-16 | 2014-09-30 | Nokia Corporation | Dynamic polling control for content distribution |
US9645900B2 (en) | 2006-12-21 | 2017-05-09 | Microsoft Technology Licensing, Llc | Warm standby appliance |
US7844686B1 (en) | 2006-12-21 | 2010-11-30 | Maxsp Corporation | Warm standby appliance |
US8423821B1 (en) | 2006-12-21 | 2013-04-16 | Maxsp Corporation | Virtual recovery server |
US8745171B1 (en) | 2006-12-21 | 2014-06-03 | Maxsp Corporation | Warm standby appliance |
US8266614B2 (en) * | 2007-01-23 | 2012-09-11 | International Business Machines Corporation | Methods and apparatus for pre-configuring software |
US20080178172A1 (en) * | 2007-01-23 | 2008-07-24 | Zahir Dossa | Methods and apparatus for pre-configuring software |
US8204979B2 (en) * | 2007-01-31 | 2012-06-19 | Hewlett-Packard Development Company, L.P. | Adaptive client/server control protocol |
US20080184234A1 (en) * | 2007-01-31 | 2008-07-31 | Vutharkar Viswa P | Adaptive client/server control protocol |
US20080201440A1 (en) * | 2007-02-15 | 2008-08-21 | Void Communications, Inc. | Electronic Messaging Recordlessness Warning and Routing System and Method |
US8051158B2 (en) * | 2007-03-26 | 2011-11-01 | Canon Kabushiki Kaisha | Program management apparatus and method |
US20080244057A1 (en) * | 2007-03-26 | 2008-10-02 | Canon Kabushiki Kaisha | Program management apparatus and method |
US9830434B2 (en) * | 2007-05-09 | 2017-11-28 | Wellbia.Com Co., Ltd. | System and method for security using one-time execution code |
US20080281958A1 (en) * | 2007-05-09 | 2008-11-13 | Microsoft Corporation | Unified Console For System and Workload Management |
US20100146590A1 (en) * | 2007-05-09 | 2010-06-10 | Wellbia.Com Co., Ltd. | System and method for security using one-time execution code |
US11012497B2 (en) | 2007-07-16 | 2021-05-18 | International Business Machines Corporation | Managing download requests received to download files from a server |
US10554730B2 (en) | 2007-07-16 | 2020-02-04 | International Business Machines Corporation | Managing download requests received to download files from a server |
US8347286B2 (en) * | 2007-07-16 | 2013-01-01 | International Business Machines Corporation | Method, system and program product for managing download requests received to download files from a server |
US9876847B2 (en) | 2007-07-16 | 2018-01-23 | International Business Machines Corporation | Managing download requests received to download files from a server |
US9106627B2 (en) | 2007-07-16 | 2015-08-11 | International Business Machines Corporation | Method, system and program product for managing download requests received to download files from a server |
US20090024991A1 (en) * | 2007-07-16 | 2009-01-22 | International Business Machines Corporation | Method, system and program product for managing download requests received to download files from a server |
US20090049288A1 (en) * | 2007-08-17 | 2009-02-19 | Salesforce.Com, Inc. | System, method, and computer program product for runtime invocation of an appropriate version of program instructions in an on-demand database |
US8799298B2 (en) | 2007-08-17 | 2014-08-05 | Salesforce.Com, Inc. | On-demand database service system, method, and computer program product for enforcing the inclusion of tests in a developed application |
US9176730B2 (en) | 2007-08-17 | 2015-11-03 | Salesforce.Com, Inc. | On-demand database service system, method, and computer program product for validating a developed application |
US10481903B2 (en) | 2007-08-17 | 2019-11-19 | Salesforce.Com, Inc. | On-demand database service system, method, and computer program product for validating a developed application |
US20090049065A1 (en) * | 2007-08-17 | 2009-02-19 | Salesforce.Com, Inc. | On-demand database service system, method, and computer program product for validating a developed application |
US8788510B2 (en) * | 2007-08-17 | 2014-07-22 | Salesforce.Com, Inc. | System, method, and computer program product for runtime invocation of an appropriate version of program instructions in an on-demand database |
US8700645B2 (en) | 2007-08-17 | 2014-04-15 | Salesforce.Com, Inc. | On-demand database service system, method, and computer program product for validating a developed application |
US8954453B2 (en) | 2007-08-17 | 2015-02-10 | Salesforce.Com, Inc. | On-demand database service system and method for determining whether a developed application will operate properly with at least one other application |
US20090055427A1 (en) * | 2007-08-21 | 2009-02-26 | Alcatel Lucent | Cloning policy using templates and override cloned policy |
US8301741B2 (en) * | 2007-08-21 | 2012-10-30 | Alcatel Lucent | Cloning policy using templates and override cloned policy |
US20090064133A1 (en) * | 2007-08-28 | 2009-03-05 | Red Hat, Inc. | Provisioning for 32-bit or 64-bit systems |
US9652210B2 (en) * | 2007-08-28 | 2017-05-16 | Red Hat, Inc. | Provisioning a device with multiple bit-size versions of a software component |
US10095498B2 (en) | 2007-08-28 | 2018-10-09 | Red Hat, Inc. | Provisioning a device with multiple bit-size versions of a software component |
US20090094378A1 (en) * | 2007-10-09 | 2009-04-09 | Microsoft Corporation | Software Deployment Using Client Location |
US8756318B1 (en) * | 2007-10-09 | 2014-06-17 | Microsoft Corporation | Software deployment using client location |
US8175418B1 (en) | 2007-10-26 | 2012-05-08 | Maxsp Corporation | Method of and system for enhanced data storage |
US8422833B2 (en) | 2007-10-26 | 2013-04-16 | Maxsp Corporation | Method of and system for enhanced data storage |
US8307239B1 (en) | 2007-10-26 | 2012-11-06 | Maxsp Corporation | Disaster recovery appliance |
US8645515B2 (en) | 2007-10-26 | 2014-02-04 | Maxsp Corporation | Environment manager |
US9092374B2 (en) | 2007-10-26 | 2015-07-28 | Maxsp Corporation | Method of and system for enhanced data storage |
US9448858B2 (en) | 2007-10-26 | 2016-09-20 | Microsoft Technology Licensing, Llc | Environment manager |
WO2009098557A3 (en) * | 2008-02-10 | 2009-12-23 | Aladdin Knowledge Systems Ltd. | Computer data product license installation / update confirmation |
EP2245533A4 (en) * | 2008-02-10 | 2015-08-26 | Safenet Data Security Israel Ltd | Computer data product license installation / update confirmation |
US8655785B2 (en) | 2008-02-10 | 2014-02-18 | Safenet Data Security (Israel) Ltd. | Computer data product license installation / update confirmation |
US20090205040A1 (en) * | 2008-02-10 | 2009-08-13 | Aladdin Knowledge Systems Ltd. | Computer data product license installation / update confirmation |
CN101965555A (en) * | 2008-02-10 | 2011-02-02 | 阿拉丁知识系统有限公司 | Computer data product license installation / update confirmation |
US20090216548A1 (en) * | 2008-02-25 | 2009-08-27 | Suresh Balu | License Management in a Networked Software Application Solution |
US9690913B2 (en) * | 2008-02-25 | 2017-06-27 | International Business Machines Corporation | License management in a networked software application solution |
US20090293053A1 (en) * | 2008-05-21 | 2009-11-26 | Jim Leroy Knatcher | Method and system for dynamic generation of computer system installation instructions |
US20100023875A1 (en) * | 2008-07-22 | 2010-01-28 | International Business Machines Corporation | Automatic rendering of user interface elements |
US8607208B1 (en) * | 2008-10-01 | 2013-12-10 | Oracle International Corporation | System and methods for object code hot updates |
US20100131942A1 (en) * | 2008-11-21 | 2010-05-27 | Microsoft Corporation | Suite-based integration and deployment of business products |
US11175913B2 (en) | 2008-12-05 | 2021-11-16 | Amazon Technologies, Inc. | Elastic application framework for deploying software |
US10564960B2 (en) | 2008-12-05 | 2020-02-18 | Amazon Technologies, Inc. | Elastic application framework for deploying software |
US8918761B1 (en) * | 2008-12-05 | 2014-12-23 | Amazon Technologies, Inc. | Elastic application framework for deploying software |
US9817658B2 (en) | 2008-12-05 | 2017-11-14 | Amazon Technologies, Inc. | Elastic application framework for deploying software |
US9361434B2 (en) * | 2009-02-18 | 2016-06-07 | Canon Kabushiki Kaisha | Shortcut management unit and method, and storage medium |
US20150007343A1 (en) * | 2009-02-18 | 2015-01-01 | Canon Kabushiki Kaisha | Shortcut management unit and method, and storage medium |
US8484027B1 (en) | 2009-06-12 | 2013-07-09 | Skyreader Media Inc. | Method for live remote narration of a digital book |
US9298445B1 (en) * | 2009-09-04 | 2016-03-29 | Symantec Corporation | Systems and methods for correlating software inventory information with delivered software |
US8997077B1 (en) * | 2009-09-11 | 2015-03-31 | Symantec Corporation | Systems and methods for remediating a defective uninstaller during an upgrade procedure of a product |
US8561055B2 (en) * | 2009-10-15 | 2013-10-15 | Blackberry Limited | Method, system and apparatus for management of push content |
US20110093844A1 (en) * | 2009-10-15 | 2011-04-21 | Research In Motion Limited | Method, system and apparatus for management of push content |
US9319475B2 (en) | 2009-11-06 | 2016-04-19 | Blackberry Limited | Method, system and apparatus for management of push content when changing computing devices |
US20110113416A1 (en) * | 2009-11-09 | 2011-05-12 | Bank Of America Corporation | Network-Enhanced Control Of Software Updates Received Via Removable Computer-Readable Medium |
US9176898B2 (en) | 2009-11-09 | 2015-11-03 | Bank Of America Corporation | Software stack building using logically protected region of computer-readable medium |
US9128799B2 (en) | 2009-11-09 | 2015-09-08 | Bank Of America Corporation | Programmatic creation of task sequences from manifests |
US9122558B2 (en) | 2009-11-09 | 2015-09-01 | Bank Of America Corporation | Software updates using delta patching |
US20110202913A1 (en) * | 2010-02-16 | 2011-08-18 | Tatsuo Nishimura | System, method, and computer program product for software distribution |
US20110219132A1 (en) * | 2010-03-03 | 2011-09-08 | Chalk Media Service Corp. | Method, system and apparatus for configuring a device for interaction with a server |
US9178947B2 (en) | 2010-03-03 | 2015-11-03 | Blackberry Limited | Method, system and apparatus for configuring a device for interaction with a server |
US9178949B2 (en) | 2010-03-03 | 2015-11-03 | Blackberry Limited | Method, system and apparatus for managing push data transfers |
US20110217953A1 (en) * | 2010-03-03 | 2011-09-08 | Chalk Media Service Corp. | Method, system and apparatus for managing push data transfers |
EP2372537A1 (en) * | 2010-04-01 | 2011-10-05 | Research In Motion Limited | Application portability and transfer of device management for mobile devices |
US9053505B2 (en) * | 2010-05-27 | 2015-06-09 | Rightware, Inc. | Online marketplace for pre-installed software and online services |
US9727903B2 (en) | 2010-05-27 | 2017-08-08 | Sweetlabs, Inc. | Online marketplace for pre-installed software and online services |
US20140114804A1 (en) * | 2010-05-27 | 2014-04-24 | Rightware, Inc. | Online marketplace for pre-installed software and online services |
US8380632B2 (en) * | 2010-06-16 | 2013-02-19 | Ronald DICKE | Method and system for upselling to a user of a digital book lending library |
US20110313892A1 (en) * | 2010-06-16 | 2011-12-22 | Dicke Ronald | Method and system for upselling to a user of a digital book lending library |
US11829186B2 (en) | 2010-06-18 | 2023-11-28 | Sweetlabs, Inc. | System and methods for integration of an application runtime environment into a user computing environment |
US8713152B2 (en) | 2012-03-02 | 2014-04-29 | Microsoft Corporation | Managing distributed applications using structural diagrams |
US9229771B2 (en) | 2012-03-08 | 2016-01-05 | Microsoft Technology Licensing, Llc | Cloud bursting and management of cloud-bursted applications |
US20130257851A1 (en) * | 2012-04-01 | 2013-10-03 | Chao-Hua Lee | Pipeline web-based process for 3d animation |
US20150121361A1 (en) * | 2012-06-25 | 2015-04-30 | Tencent Technology (Shenzhen) Company Limited | Software Installation Method, Device And System |
US8984480B2 (en) | 2012-07-10 | 2015-03-17 | International Business Machines Corporation | Automating and/or recommending data sharing coordination among applications in mobile devices |
US8832847B2 (en) | 2012-07-10 | 2014-09-09 | International Business Machines Corporation | Coordinating data sharing among applications in mobile devices |
US11741183B2 (en) | 2012-08-28 | 2023-08-29 | Sweetlabs, Inc. | Systems and methods for hosted applications |
US11347826B2 (en) | 2012-08-28 | 2022-05-31 | Sweetlabs, Inc. | Systems and methods for hosted applications |
US9588794B2 (en) * | 2012-08-30 | 2017-03-07 | Zte Corporation | Method, system and device for managing software on virtual machine in cloud environment |
US20150347173A1 (en) * | 2012-08-30 | 2015-12-03 | Zte Corporation | Method, system and device for managing software on virtual machine in cloud environment |
US9444896B2 (en) | 2012-12-05 | 2016-09-13 | Microsoft Technology Licensing, Llc | Application migration between clouds |
US20140245286A1 (en) * | 2013-02-28 | 2014-08-28 | Hon Hai Precision Industry Co., Ltd. | Application managing system and method using same |
US10205767B2 (en) * | 2013-09-24 | 2019-02-12 | Lg Cns Co., Ltd. | Management system and method for a big data processing device |
US20150088930A1 (en) * | 2013-09-24 | 2015-03-26 | Lg Cns Co., Ltd. | Management system and method for a big data processing device |
US9430216B2 (en) * | 2014-05-11 | 2016-08-30 | Lumension Security, Inc. | Self-contained executable for predetermined software updating |
US20150324184A1 (en) * | 2014-05-11 | 2015-11-12 | Lumension Security, Inc. | Self-contained executable for predetermined software updating |
US10142306B1 (en) * | 2015-05-05 | 2018-11-27 | F5 Networks, Inc. | Methods for providing a secure network channel and devices thereof |
US10122740B1 (en) | 2015-05-05 | 2018-11-06 | F5 Networks, Inc. | Methods for establishing anomaly detection configurations and identifying anomalous network traffic and devices thereof |
US11616806B1 (en) | 2015-05-08 | 2023-03-28 | F5, Inc. | Methods for protecting web based resources from D/DoS attacks and devices thereof |
US10581902B1 (en) | 2015-11-30 | 2020-03-03 | F5 Networks, Inc. | Methods for mitigating distributed denial of service attacks and devices thereof |
US10834110B1 (en) | 2015-12-18 | 2020-11-10 | F5 Networks, Inc. | Methods for preventing DDoS attack based on adaptive self learning of session and transport layers and devices thereof |
US10397250B1 (en) | 2016-01-21 | 2019-08-27 | F5 Networks, Inc. | Methods for detecting remote access trojan malware and devices thereof |
US10270792B1 (en) | 2016-01-21 | 2019-04-23 | F5 Networks, Inc. | Methods for detecting malicious smart bots to improve network security and devices thereof |
US11023248B2 (en) | 2016-03-30 | 2021-06-01 | British Telecommunications Public Limited Company | Assured application services |
US11153091B2 (en) | 2016-03-30 | 2021-10-19 | British Telecommunications Public Limited Company | Untrusted code distribution |
US10761827B2 (en) * | 2016-11-30 | 2020-09-01 | Vmware, Inc. | WIN32 software distribution architecture |
US20180150288A1 (en) * | 2016-11-30 | 2018-05-31 | Vmware, Inc. | Win32 software distribution architecture |
US20210158373A1 (en) * | 2017-05-04 | 2021-05-27 | Servicenow, Inc. | Automated software license reclamation |
US20180322599A1 (en) * | 2017-05-04 | 2018-11-08 | Servicenow, Inc. | Automated software license reclamation |
US11038869B1 (en) | 2017-05-12 | 2021-06-15 | F5 Networks, Inc. | Methods for managing a federated identity environment based on application availability and devices thereof |
US11403116B2 (en) | 2017-07-18 | 2022-08-02 | Citrix Systems, Inc. | Cloud to on-premises windows registry settings |
US10853091B2 (en) * | 2017-07-18 | 2020-12-01 | Citrix Systems, Inc. | Cloud to on-premises windows registry settings |
US10931691B1 (en) | 2017-10-09 | 2021-02-23 | F5 Networks, Inc. | Methods for detecting and mitigating brute force credential stuffing attacks and devices thereof |
US11539740B1 (en) | 2018-02-02 | 2022-12-27 | F5, Inc. | Methods for protecting CPU during DDoS attack and devices thereof |
US11349981B1 (en) | 2019-10-30 | 2022-05-31 | F5, Inc. | Methods for optimizing multimedia communication and devices thereof |
US20230176902A1 (en) * | 2021-12-08 | 2023-06-08 | Jpmorgan Chase Bank, N.A. | System and method for automated onboarding |
EP4266231A1 (en) * | 2022-04-21 | 2023-10-25 | Audi Ag | Method for operating a control device for a motor vehicle |
DE102022109637A1 (en) | 2022-04-21 | 2023-10-26 | Audi Aktiengesellschaft | Method for operating a control device for a motor vehicle |
US12141223B2 (en) | 2023-07-05 | 2024-11-12 | Sweetlabs, Inc. | Systems and methods for hosted applications |
Also Published As
Publication number | Publication date |
---|---|
CA2523279A1 (en) | 2004-11-11 |
US7340491B2 (en) | 2008-03-04 |
EP1671200A2 (en) | 2006-06-21 |
WO2004097565A3 (en) | 2006-06-22 |
WO2004097565A2 (en) | 2004-11-11 |
EP1671200A4 (en) | 2007-10-17 |
WO2004097566A2 (en) | 2004-11-11 |
WO2004097566A3 (en) | 2006-06-22 |
CA2523283A1 (en) | 2004-11-11 |
EP1671199A2 (en) | 2006-06-21 |
US20050055357A1 (en) | 2005-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20050027846A1 (en) | Automated electronic software distribution and management method and system | |
US8572267B2 (en) | Managed services platform | |
US8726267B2 (en) | Sharing software certification and process metadata | |
US7124289B1 (en) | Automated provisioning framework for internet site servers | |
US7152109B2 (en) | Automated provisioning of computing networks according to customer accounts using a network database data model | |
EP1327191B1 (en) | Non-invasive automatic offsite patch fingerprinting and updating system and method | |
US8166458B2 (en) | Method and system for automated distributed software testing | |
US8019835B2 (en) | Automated provisioning of computing networks using a network database data model | |
US8635609B2 (en) | Software certification and update process | |
KR100396101B1 (en) | Licensed application installer | |
US20040226010A1 (en) | Automated provisioning framework for internet site servers | |
US20020174422A1 (en) | Software distribution system | |
US20040003266A1 (en) | Non-invasive automatic offsite patch fingerprinting and updating system and method | |
US20050086534A1 (en) | Enterprise console | |
US7140014B2 (en) | System and method for providing a flexible framework for remote heterogeneous server management and control | |
US20080244047A1 (en) | Method for implementing management software, hardware with pre-configured software and implementing method thereof | |
JP2007510987A (en) | System and method for updating a software program | |
MXPA04007787A (en) | Method and system for central management of a computer network. | |
CA2526702A1 (en) | System and method for remote systems management and reporting | |
WO2002039257A2 (en) | Automated provisioning framework for internet site servers | |
US7743008B2 (en) | Adaptive management method with workflow control | |
Monitor | User's Guide |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: SILICON VALLEY BANK, CALIFORNIA Free format text: SECURITY INTEREST;ASSIGNOR:SECUREINFO CORPORATION;REEL/FRAME:019406/0724 Effective date: 20070522 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |
|
AS | Assignment |
Owner name: SECUREINFO CORPORATION, CALIFORNIA Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:SILICON VALLEY BANK;REEL/FRAME:028456/0136 Effective date: 20120625 |