Joint servicing of software packages

Methods, systems, and apparatuses for publishing, acquiring, and servicing of related software packages together. Flexible yet robust software package version control through joint servicing using atomic sets, including business software applications and consumer software applications, is performed by client and developer devices in conjunction with a host server. Developers and publishers develop and provide applications and assign specific, related versions of software packages, that are jointly operable per atomic sets embodied in atomic set manifests, in software program bundles for acquisition by end users. Adherence to jointly serviced software packages using atomic sets is performed by client devices and/or servers in a manner that is transparent to the end user. The end user is enabled to acquire all or less than all software packages that make up an atomic set, yet each software package acquired adheres to the version requirements set forth by the atomic set.

BACKGROUND

Software developers and publishers create and provide software for end users including individuals, students, businesses, etc. This software may be updated over time using updates from the developers and publishers. Additionally, a main software program may have related sub-components or optional components such as programs, data, resources and resource files, etc., that may be acquired and installed with, or at separate times from, the main software program. These related sub-components may also be updated over time using updates from the developers and publishers.

An end user may wish to acquire or update some or all of the related sub-components of the main program and/or may wish to acquire the main program or acquire updates to the main program at various points in time. In some cases, specific versions of the main program may properly operate only with specific versions of related applications or sub-components. If these specific versions are not kept synchronized at the device of the end user, abnormal program behaviors may occur.

SUMMARY

This Brief Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Brief Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.

Methods, systems, and apparatuses for creating, publishing, acquiring, and servicing of related software packages together are described. For example, methods may be performed in client devices for providing requests to a host server for atomic set information associated with a software package, where atomic set information defines version dependencies between the components of the software package, such as a main software program, and related optional software packages. The atomic set information is received from the host server, and a version of the software package available at the host server is determined based on the atomic set information. The version of the software package is retrieved from the host server and may be installed at the client device. The versions of the related optional software packages may also be retrieved and installed. During subsequent installations and updates (e.g., servicing), specific versions of the software package and the related optional software packages are used according to the atomic set information for joint software package servicing.

In another example, a developer system is described in which a UI configured to receive a set of program components from an application developer entity is provided to a developer. The set of program components includes a main software package and/or an optional software package, and each software package in the set of program components has a version value which may be determined. An atomic set manifest is generated based on the version values, and a software program bundle that includes the set of program components and the atomic set manifest is then generated. The software program bundle may then be provided to a host server for distribution, e.g., via an online store or update service, where the atomic set manifest determines versions of software packages in the software bundle that are configured to operate together or jointly.

These and other objects, advantages and features will become readily apparent in view of the following detailed description of examples of the invention. Note that the Brief Summary and Abstract sections may set forth one or more, but not all examples contemplated by the inventor(s). Further features and advantages, as well as the structure and operation of various examples, are described in detail below with reference to the accompanying drawings. It is noted that the ideas and techniques are not limited to the specific examples described herein. Such examples are presented herein for illustrative purposes only. Additional examples will be apparent to persons skilled in the relevant art(s) based on the teachings contained herein.

DETAILED DESCRIPTION

The following detailed description discloses numerous examples. The scope of the present patent application is not limited to the disclosed examples, but also encompasses combinations of the disclosed examples, as well as modifications to the disclosed examples.

Numerous examples are described as follows. It is noted that any section/subsection headings provided herein are not intended to be limiting. Examples are described throughout this document, and any type of example may be included under any section/subsection. Furthermore, examples disclosed in any section/subsection may be combined with any other examples described in the same section/subsection and/or a different section/subsection in any manner.

Section II below describes examples for development of workflows. In particular, sub-sections A, B, and C of Section II describe example system level, client level, and developer level examples, respectively.

Section III below describes an example mobile device that may be used to implement features of the examples described herein. Section IV below describes an example processor-based computer system that may be used to implement features of the example described herein. Section V below describes some examples. Section VI provides some concluding remarks.

The examples described herein are provided for illustrative purposes, and are not limiting. The examples described herein may be adapted to any type of electronic and/or processing device, as well as systems thereof. Further structural and operational examples, including modifications/alterations, will become apparent to persons skilled in the relevant art(s) from the teachings herein.

When software developers and publishers create and provide software for end users, the control of newly installed and updated versions of software packages by an end user may be enforced by each and every optional software package being provided with a main software package at each download or update.

An end user may wish to acquire or update less than all of the related sub-components of the main program and/or may wish to acquire or update the main program at various points in time. However, the end user may experience operational issues with software if incompatible versions of software packages are installed because specific versions of the main program may properly operate only with specific versions of related sub-components. For instance, a user may wish to acquire downloadable content (DLC) for a gaming application, additional, optional, and/or add-on components for productivity software, etc. at different times, and issues may arise due to incompatibilities or unsupported features between versions of installed software applications and newly-acquired components.

Examples described herein enable flexible yet robust software package version control through joint servicing using atomic sets, including business software applications and consumer software applications. Developers and publishers are enabled to develop applications and assign specific, related versions of software packages, that are jointly operable per atomic sets embodied in atomic set manifests, in software program bundles for acquisition by end users. Adherence to jointly serviced software packages as described herein using atomic sets may be performed by client devices and/or servers in a manner that is transparent to the end user. The end user is enabled to acquire all or less than all software packages that make up an atomic set, yet each software package acquired adheres to the version requirements set forth by the atomic set.

Examples are described in the following subsections for joint software package servicing and development. In the following description, a person that develops an application or software package using the techniques described herein may be referred to as a “developer,” and a person that uses the application at runtime may be referred to as a “user” or “end user”. However, it is to be understood that the developer may also be considered a “user” of the software package version control through joint servicing. A “developer entity” as referred to herein comprises one or more developers associated by agreement or employment, such as by working for the same business entity. Additionally, a device of an “end user” may be referred to as an “end user client,” a “client system,” a “client device,” and/or the like, and a device of a “developer” may be referred to as a “developer client,” a “developer system,” a “developer device,” and/or the like, herein. Furthermore, person(s) or a business entity(ies) that distributes or makes available software packages and/or software program bundles using the techniques described herein may be referred to as a “publisher,” and it is contemplated that “publishers” may be “developers.”

A. Joint Servicing Systems Example

Joint software package servicing systems and devices may be enabled in various ways according to examples. For example,FIG. 1is a block diagram of an atomic set deployment system100, according to an example. As shown inFIG. 1, atomic set deployment system100includes an atomic deployment manager102and a host server104.

Host server104may comprise one or more servers and may be distributed or “cloud-based” servers. Host server104may store software applications packaged as software program bundles (or software bundles) of one or more software packages to be available for acquisition by end users. The software program bundles may also comprise an atomic set manifest associated with the software packages.

Atomic deployment manager102and host server104are configured to be communicatively coupled via any type of connection(s) that connects computing devices such as, but not limited to, the Internet, wired or wireless networks and portions thereof, point-to-point connections, and/or the like.

Atomic deployment manager102is configured to perform and/or facilitate joint servicing of software packages. Atomic deployment manager102may reside in an end user (client) system/device or a developer system/device which may be any type computing device, including a mobile computing device (e.g., a smart phone, a Microsoft® Surface® device, a laptop computer, a notebook computer, a tablet computer such as an Apple iPad™, a netbook, etc.), or a stationary computing device such as a desktop computer or PC (personal computer). In examples, atomic deployment manager102may reside in system or device as a stand-alone application or as part of another application, such as but without limitation, as part of a main software package of a software application, as a separate part of the software application, and/or the like.

Atomic deployment manager102is configured to jointly service software packages according to atomic sets as designated by developers of the software packages.

For instance,FIG. 2is a block diagram of an atomic set deployment system200, according to an example. As shown inFIG. 2, atomic set deployment system200includes an atomic deployment manager202residing at an end user client204, a distribution host206, and a developer client210. Atomic deployment manager202may be an example of atomic deployment manager102ofFIG. 1, and distribution host206may be an example of host server104ofFIG. 1.

Developer client210may be a developer system/device (that may also be an end user (client) system/device) which may comprise any type computing device, including a mobile computing device (e.g., a smart phone, a Microsoft® Surface® device, a laptop computer, a notebook computer, a tablet computer such as an Apple iPad™, a netbook, etc.), or a stationary computing device such as a desktop computer or PC (personal computer). Developer client210is configured to enable a developer to generate software program bundles208as described herein. The generated software program bundles208may include one or more software packages developed by the developer using developer client210and/or one or more software packages developed by another developer using another developer client (not shown). Software program bundles208may also comprise an atomic set manifest that includes atomic set information associated with the software packages as designated by the developer(s). A developer via developer client210may provide software program bundles208to the distribution host for publishing and distribution to end users that desire one or more software packages of software program bundles208. Developer client210is described in further detail below.

End user client204, distribution host206, and developer client210are configured to be communicatively coupled via any type of connection(s) that connect computing devices such as, but not limited to, the Internet, wired or wireless networks and portions thereof, point-to-point connections, and/or the like.

Distribution host206may be a server(s) and may host an online software application store, a software update repository, and/or the like, in which software packages, such as software program bundles208, are available for acquisition by end users from developers.

Atomic deployment manager202residing at end user client204is configured to request an atomic set manifest or information therefrom (i.e., atomic set information) for a software package from distribution host206. For example, the atomic set manifest or information therefrom may be included in or associated with a software program bundle such as one of software program bundles208. In examples, atomic deployment manager202is configured to determine the versions of the software package, and of other related software packages, from the atomic set information. In examples, atomic deployment manager202is configured to retrieve the determined versions of the software packages for storage and/or installation as main software applications and related optional software applications.

B. Joint Servicing Client Examples

FIG. 3is a block diagram of a client system300, according to an example. Client system300may be a further example of end user client204ofFIG. 2. As shown inFIG. 3, client system300includes a client device302(i.e., an end user client) that comprises a plurality of components. Client device302may be any type computing device, as mentioned elsewhere herein or otherwise known. As shown inFIG. 3, client device302includes an operating system (OS)304with a user interface (UI)306, one or more main applications308, related optional applications310, an atomic deployment manager312that is an example of atomic deployment manager202ofFIG. 2, and an input/output (I/O) interface314. Client system300may also include additional components (not shown for brevity and illustrative clarity) such as, but not limited to, those described below with respect toFIGS. 23 and 24.

I/O interface314may be any type of network adapter, modem, etc., configured to allow client device302to communicate with other devices over a network, e.g., such as distribution host206described above with respect toFIG. 2. OS304may be any operating system used by computing devices described herein such as, but without limitation, Microsoft® Windows® from Microsoft Corporation of Redmond, Wash., OS X® from Apple, Inc. of Cupertino, Calif., UNIX® from The Open Group, and/or the like, and UI306provides a UI for OS304. In examples, OS304may be accessed via a network connection to a server (not shown) where client device302operates as a workstation or terminal.

Client devices and systems for joint servicing of software packages such as client system300and client device302ofFIG. 3may be enabled in various ways according to examples. For example,FIG. 4shows a flowchart400of a process for atomic set software package deployment, according to an example. For purposes of illustration, flowchart400ofFIG. 4is described with respect to client system300ofFIG. 3and also with reference toFIG. 2. That is, end user client204ofFIG. 2and/or client system300ofFIG. 3may perform their respective functions and operations in accordance with flowchart400. Further structural and operational examples will be apparent to persons skilled in the relevant art(s) based on the following description. Flowchart400is described as follows.

In step402, a request is provided to a host server for atomic set information associated with a software package, the atomic set information defining version dependencies between the software package and a related optional software package. For example, an atomic set information request may be provided to a host server such as distribution host206ofFIG. 2from atomic deployment manager312of client device302via I/O interface314. Atomic deployment manager312may be a part of OS304, a part of one or more of main applications308(e.g., where multiple instances of atomic deployment manager312may be present for different software applications), or may be a separate component of client system300. That is, for illustrative clarity, atomic deployment manager312is shown as a separate component, but this example is not to be considered limiting.

In examples, an instruction may be received by atomic deployment manager312to provide the atomic set information request. The instruction may be generated by an end user via one of main applications308installed at client device302and/or UI306where the end user desires to update one of main applications308and/or a number of related optional applications310. Alternatively, the instruction may be received from distribution host206to notify client device302that an update for the one of main applications308and/or a number of related optional applications310. In some examples, the instruction may be provided responsive to the execution of an installation script by a deployment engine of OS304at client device302or another device associated with client device302where it is desired to newly install an additional one of main applications308at client device302.

As an example scenario, an end user may desire to newly install or update their application for Microsoft® Office® from Microsoft Corporation, although any example application may be considered in this scenario such as iWork® from Apple, Inc., Adobe® Creative Suite® from Adobe Systems Incorporated of San Jose, Calif., etc. The user may provide an instruction to install or update, which prompts a request for atomic set information associated with the main software package of the Microsoft® Office® application to be provided to distribution host206from atomic deployment manager312at client device302.

In step404, the atomic set information is received from the host server. For instance, atomic set information of an atomic set manifest in a software program bundle of software program bundles208ofFIG. 2may be provided from distribution host206to client device302where it is received via I/O interface314. The atomic set information may be received by atomic deployment manager312. The atomic set information may be stored in a memory of client device302for use in the steps of flowchart400. In examples, the entire atomic set manifest may be received.

Continuing with the above example scenario, atomic set information associated with the main software package of the Microsoft® Office® application is received by atomic deployment manager312, which may be a component of the main Microsoft® Office® application (of main applications308) that is executing on client device302.

In step406, a version of the software package available at the host server is determined based on the atomic set information. For instance, atomic deployment manager312may parse the atomic set information received in step404to determine the atomic set versions of the main software package and any related optional applications in the software program bundle of software program bundles208available at distribution host206ofFIG. 2.

Atomic set information may be formatted/configured in any suitable manner. For instance,FIG. 5shows an example atomic set manifest500, according to an example. Atomic set manifest500is an example of the atomic set manifests of software program bundles208ofFIG. 2, and/or of atomic set manifest(s)316. As exemplarily illustrated using pseudo-XML, atomic set manifest500defines version dependencies between the software package and related optional software packages. Atomic set manifest500may include an initiating tag with a software program bundling version value (e.g., “1.1.0.0,” as illustrated) that corresponds to a closing tag to denote the beginning and end of the atomic set information in atomic set manifest500. The software program bundling version value may denote the current version of the bundling process that is being used, as described in further detail below. Within atomic set manifest500, there may be one or more bundle tag sets corresponding to software packages in the software program bundle (such as one of software program bundles208inFIG. 2). As shown, a tag set for a main software package and tag sets for three related optional software packages are included, although fewer, additional, and/or alternative tag sets for software packages are also contemplated herein.

Each tag set may include a software package bundle version value that denotes the bundle version for the software package bundle itself, and a path or directory location for the software package bundle. Each tag set may also include the name of the corresponding software package, e.g., “Main,” “Optional_1,” etc., along with corresponding developer information. Each tag set may further include a version value for the corresponding software package of the atomic set. As illustrated, the Main software package has a version value of “1.0.0.1,” the Optional_1 software package has a version value of “1.0.0.1,” the Optional_2 software package has a version value of “1.0.0.0,” and the Optional_3 software package has a version value of “1.0.0.2.” In examples, the version values for the corresponding software packages of the atomic set are used by atomic deployment manager312to ensure that no other versions of these software packages may be installed for joint operation with each other.

Turning back to flowchart400ofFIG. 4, and continuing with the example scenario in steps402and404, atomic deployment manager312parses the atomic set information, e.g., as described above with respect to atomic set manifest500ofFIG. 5. Furthermore, a version of the software package, e.g., for the main Microsoft® Office® software package (available at the host server), is determined based on the atomic set information. The versions of the related optional software packages described in the atomic set information may also be determined and stored for subsequent use. In this scenario, the related optional software packages may correspond to Microsoft® Word, Microsoft® PowerPoint®, Microsoft® Excel®, etc., from Microsoft Corporation (although as noted herein the related optional software packages may correspond to other main software packages such as Apple® Pages®, Apple® Keynote®, Apple® Numbers®, etc., of Apple® iWork® from Apple, Inc., or other software packages).

In step408, the version of the software package is retrieved from the host server. For instance, atomic deployment manager312is configured to retrieve the version of the software package (in the form of program code) from the software program bundle that is specified in the atomic set information determined in step406. Once retrieved, the software package may be stored for installation by client device302to be a main application of main applications308. Additionally, the atomic set manifest in the software program bundle from which the atomic set information was received in step404may be stored as an atomic set manifest of atomic set manifest(s)316and associated with the software package when installed.

With respect to the example scenario (described with respect to steps402,404, and406above), the main software package for Microsoft® Office® and its associated atomic set manifest are retrieved and stored by atomic deployment manager312at client device302.

It is also contemplated herein that versions of one or more related optional software packages may be retrieved with the software package, or not retrieved with the software package, as described herein. For instance,FIG. 6shows a flowchart600of a process for atomic set software package deployment, according to an example. Flowchart600may be a further example of flowchart400ofFIG. 4(e.g., step408). For purposes of illustration, flowchart600ofFIG. 6is described with respect to client system300ofFIG. 3and also with reference toFIG. 2. That is, end user client204ofFIG. 2and/or client system300ofFIG. 3may perform their respective functions and operations in accordance with flowchart600. Further structural and operational examples will be apparent to persons skilled in the relevant art(s) based on the following description. Flowchart600is described as follows.

In step602, the main software package and the related optional software package are retrieved. For instance, atomic deployment manager312is configured to retrieve the version of the software package and the version of a related optional software package from the software program bundle specified in the atomic set information determined in step406(from distribution host206ofFIG. 2via I/O interface314). As noted above in flowchart400, the versions of related optional software packages of a software program bundle may also be received in atomic set information from a host server, e.g., distribution host206ofFIG. 2,

Once retrieved, the software package and the related optional software package may be stored for subsequent installation by client device302to respectively be a main application of main applications308and a related optional application of related optional applications310. Additionally, the atomic set manifest in the software program bundle from which the atomic set information was received in step404may be stored as an atomic set manifest of atomic set manifest(s)316and associated with the software package and the related optional software package when installed.

With respect to the example scenario described above with respect to flowchart400ofFIG. 4, the version of main software package for Microsoft® Office® and its associated atomic set manifest, as well as a version of a related optional software package such as Microsoft® Word, Microsoft® PowerPoint®, or Microsoft® Excel®, etc., from Microsoft Corporation are retrieved and stored by atomic deployment manager312at client device302. It is also contemplated in examples that related optional software packages may comprise media or multimedia content, library files such as dynamic linked library (DLL) files, other resources, add-on program applications, and/or the like, and that related optional software packages may be from a variety of developers or developer entities.

As noted above, retrieved software packages may be installed at a client device, e.g., client device302ofFIG. 3. For instance,FIG. 7shows a flowchart700of a process for atomic set software package deployment, according to an example. Flowchart700may be a further example of flowchart400ofFIG. 4and/or flowchart600ofFIG. 6. For purposes of illustration, flowchart700ofFIG. 7is described with respect to client system300ofFIG. 3and also with reference toFIG. 2. That is, end user client204ofFIG. 2and/or client system300ofFIG. 3may perform their respective functions and operations in accordance with flowchart700. Further structural and operational examples will be apparent to persons skilled in the relevant art(s) based on the following description. Flowchart700is described as follows.

In step702, the main software package and the related optional software package are installed at the client device. For instance, once retrieved as in step408of flowchart400and/or in step602of flowchart600, the software package and/or the related optional software package may be stored and installed by client device302to respectively be a main application of main applications308and a related optional application of related optional applications310. Upon receipt of the software package and/or the related optional software package, installation may begin automatically by client device302, e.g., initiated by atomic deployment manager312, or may begin based on an input of the end user via UI306or a UI of an application executing on client device302.

In step704, the atomic set information is assigned to an installed application corresponding to the main software package at the client device. For example, the atomic set manifest in the software program bundle from which the atomic set information was received in step404may be assigned as the atomic set manifest (e.g., of atomic set manifest(s)316) to the installed application corresponding to the software package and/or the related optional software package. When the installed applications have a corresponding atomic set in the atomic set manifest, future downloads for other software packages, e.g., related optional software packages that have not yet been installed at client device302, are performed to adhere to the version values for such yet-to-be-installed related optional software packages according to the atomic set information.

With respect to the example scenario in the steps of flowchart400ofFIG. 4above, the version of the software package for Microsoft® Office® and a corresponding version of a related optional software package (such as Microsoft® Word, Microsoft® PowerPoint®, or Microsoft® Excel®, etc., from Microsoft Corporation) in the atomic set manifest, are installed as applications (e.g., main applications308and related optional applications310) at client device302. The atomic set manifest from the software program bundle associated with the software package is stored at client device302and is assigned to the newly-installed applications.

For example, using atomic set manifest500ofFIG. 5to further this illustrative example scenario, the Microsoft® Office® main application would correspond to the “Main” in atomic set manifest500and would have a version value of “1.0.0.1,” and letting the related optional application installed be Microsoft® PowerPoint®, it may correspond to any of the “Optional_*” tag sets of atomic set manifest500, such as “Optional_3” in which case a version value of “1.0.0.2” would be associated.

Referring now toFIG. 8, a block diagram of software applications and atomic sets in a system800is shown, according to an example. System800may be a further example of client system300ofFIG. 3. As illustrated, system800includes a first application802and a second application804. First application802and second application804may be retrieved and installed according to flowcharts400,600,700, and/or800, in examples. System800ofFIG. 8shows first application802and second application804post-installation.

First application802has been assigned a first atomic set806, and second application804has been assigned a second atomic set808, e.g., as described in step704of flowchart700above. The illustrated arrows designate dependencies for the software packages of the atomic sets (i.e., arrows start at dependent packages and point to packages from which the dependent packages depend). First atomic set806includes a first main package810, a first optional package812, and a second optional package814, each from “Publisher A,” as well as a third optional package816from “Publisher B.” Second atomic set808includes a second main package818from “Publisher D,” and a fifth optional package820from “Publisher A.” It should be noted that while the publisher is denoted inFIG. 8, in examples the illustrated software packages may also have different developers or developer entities.

Also included in system800is a fourth optional package822from “Publisher C.” Fourth optional package822is not a part of first atomic set806or of second atomic set808. However, fourth optional package822may be utilized by first application802or by second application804, in examples. For instance, fourth optional package822may be a software package comprising media or multimedia content, library files such as dynamic linked library (DLL) files, other resources, add-on program packages, and/or the like.

It should be noted that while first atomic set806and second atomic set808denote packages in atomic sets for first application802and second application804, respectively, the optional packages of the atomic sets are not required to be installed in system800. For example, as noted above, it is contemplated herein that versions of one or more related optional software packages may not be retrieved with the software package for installation thereof.

Referring also toFIG. 9, a flowchart900of a process for atomic set software package deployment is shown, according to an example. Flowchart900may be a further example of flowchart400ofFIG. 4, flowchart600ofFIG. 6, and/or flowchart700ofFIG. 7. For purposes of illustration, flowchart900ofFIG. 9is described with respect to client system300ofFIG. 3and system800ofFIG. 8, and also with reference toFIG. 2. That is, end user client204ofFIG. 2, client system300ofFIG. 3, and/or system800ofFIG. 8may perform their respective functions and operations in accordance with flowchart900. Further structural and operational examples will be apparent to persons skilled in the relevant art(s) based on the following description. Flowchart900is described as follows.

In step902, the main software package is retrieved, and the related optional software package that is available at the host server is not retrieved. For example, as noted above in the description of step408of flowchart400ofFIG. 4, the version of the software package (e.g., the main software package) is retrieved from the host server by atomic deployment manager312from a software program bundle that is specified in the atomic set information determined in step406of flowchart400ofFIG. 4from distribution host206ofFIG. 2. In examples, even though other related optional software packages may be specified in the atomic set manifest associated with the software package at distribution host206ofFIG. 2, it is not required that all or any of the related optional software packages in the atomic set be retrieved. However, the entire atomic set manifest in the software program bundle for the software package is also retrieved as described herein.

For instance, with respect toFIG. 8, first main package810and second main package818of system800may be retrieved and installed as first application802and second application804, respectively, although the entire atomic set of first atomic set manifest806and the entire atomic set of second atomic set manifest808would still list the software packages as shown. Likewise, if at least one but less than all of the optional packages in first atomic set manifest806were installed with first main package810, the atomic set of first atomic manifest806would remain unchanged.

It should be noted, however, that examples contemplated herein allow for software packages that are not originally included in atomic sets, such as fourth optional package822, to be added to atomic sets at system800(and/or at client device302ofFIG. 3, e.g., by atomic deployment manager312ofFIG. 3as described in further detail herein.

Given that the atomic set defines the dependencies and required versions of program packages (and corresponding installed applications) for interoperation, the examples and techniques herein provide for mechanisms by which atomic sets are maintained when a software package (e.g., a main software package) and/or a related optional software package fail to install (or update and install) properly subsequent to being retrieved as described above.

For instance,FIG. 10shows a flowchart1000of a process for atomic set software package deployment, according to an example. Flowchart1000may be a further example of flowchart400ofFIG. 4, flowchart600ofFIG. 6, and/or flowchart700ofFIG. 7. For purposes of illustration, flowchart1000ofFIG. 10is described with respect to system800ofFIG. 8and also with reference to client system300ofFIG. 3andFIG. 2. That is, end user client204ofFIG. 2, client system300ofFIG. 3, and/or system800ofFIG. 8may perform their respective functions and operations in accordance with flowchart1000. Further structural and operational examples will be apparent to persons skilled in the relevant art(s) based on the following description. Flowchart1000is described as follows.

In step1002, it is determined that one of the main software package and the related optional software package failed to install properly subsequent to the retrieving. For instance, atomic deployment manager312is configured to retrieve a main software package and the related optional software package, e.g., as described with respect to step408of flowchart400and step602of flowchart600, for installation at a client device (e.g., client device302) or system (system800). When an error, interruption, or device/system failure occurs that prevents proper installation of retrieved software packages, atomic deployment manager312is configured to determine that one of the main software package and the related optional software package failed to install properly.

For example, referring to system800ofFIG. 8, let first application802include installed first main package810, first optional package812, and second optional package814. When an end user desires to update second optional package814which is available at a host server, e.g., distribution host206ofFIG. 2, system800, which may be a further example of client system300and client device302ofFIG. 3, may perform the steps of flowchart400ofFIG. 4and flowchart600ofFIG. 6in order to retrieve the latest version of second optional package814, as well as the latest version of first main package810. With regard to first atomic set806, the latest version available at the host server may be v.2of first main package810, and may be v.4of second optional package814, which may be indicated as compatible versions in a first atomic set manifest (the current installed versions at system800are v.1and v.3, respectively, which may be indicated in a first atomic set manifest as compatible versions). First main package810may properly install to v.2, however, second optional package814may not properly install to v.4, and atomic deployment manager312is configured to determine that second optional package814was not properly installed.

In step1004, the main software package and the related optional software package are rolled back to previously installed versions that correspond to a previous atomic set. For instance, atomic deployment manager312is configured to roll back the main software package and the related optional software package to previously installed versions, such as the versions that correspond to the prior atomic set. In examples, atomic deployment manager312may be configured to install new software packages and/or existing installed software packages to be updated without deleting or altering other software packages that may be affected by a failed or corrupt installation for new or updated software packages, e.g., via alternate or temporary installation paths. Additionally, atomic set manifests for prior installed versions of software packages may remain at a client device/system to facilitate rollbacks.

For example, referring again to system800ofFIG. 8and the example scenario described above with respect to step1002, when v.4of second optional package814is not properly installed, atomic deployment manager312is configured to rollback second optional package814to prior version v.3and to rollback first main package810to v.1even though v.2of first main package810was properly installed. That is, atomic deployment manager312is configured to rollback each software package of a new atomic set to the prior atomic set versions if any installations/updates of the new atomic set versions fail. In this example scenario, the failure to install v.4of second optional package814requires atomic deployment manager312to rollback second optional package814to prior version v.3and to rollback first main package810to v.1according to first atomic set806as illustrated inFIG. 8. This is because the atomic set information either associates v.1of first main package810with v.3of second optional package814(in the first atomic set manifest) or associates v.2of first main package810with v.4of second optional package814(in the second atomic set manifest), but no atomic set information associates v.2of first main package810with v.3of second optional package814as compatible versions.

In step1006, the previous atomic set information is assigned to the software package at the client device. For instance, atomic deployment manager312is configured to assign the atomic set manifest corresponding to the rolled-back versions of second optional package814(prior version v.3) and of first main package810(prior version v.1) to installed and rolled-back first main package810(i.e., first application802), as illustrated in first atomic set806ofFIG. 8(and indicated in the first atomic set manifest).

In some examples, a previously uninstalled software package may be retrieved by a client device/system from a host server for use with an existing, installed software application that corresponds to one or more previously retrieved software packages, such as a main software package and zero or more related optional software packages. For example, an end user may wish to install a newly published component (i.e., a software package) of a software productivity suite, or a new expansion set or DLC (i.e., a software package) for a gaming application. Similarly, previously published software packages for installed applications may be desired by an end user at some later time. The described client device/system examples may be configured to operate in various ways to enable previously uninstalled software packages to be incorporated into existing applications and their associated atomic set manifests for the purposes of joint software package servicing.

For instance,FIG. 11shows a flowchart1100of a process for atomic set software package deployment, according to an example. Flowchart1100may be a further example of flowchart400ofFIG. 4, flowchart600ofFIG. 6, and/or flowchart700ofFIG. 7. For purposes of illustration, flowchart1100ofFIG. 11is described with respect to system800ofFIG. 8and also with reference to client system300ofFIG. 3andFIG. 2. That is, end user client204ofFIG. 2, client system300ofFIG. 3, and/or system800ofFIG. 8may perform their respective functions and operations in accordance with flowchart1100. Further structural and operational examples will be apparent to persons skilled in the relevant art(s) based on the following description. Flowchart1100is described as follows.

In step1102, an additional related optional software package is retrieved from the host server subsequent to retrieving the version of the software package. For example, atomic deployment manager312ofFIG. 3is configured to retrieve a related optional software package, e.g., an additional related optional software package, from a host server such as distribution host206ofFIG. 2according to flowchart400ofFIG. 4and/or flowchart600ofFIG. 6.

In an example, such as is shown inFIG. 8, an application corresponding to one or more software packages, e.g., first application802, may be installed at a client system or device such as client system800. A newly- or previously-published related optional software package (i.e., the additional related optional software package in step1102) is retrieved, as similarly described above, after first main package810is installed as first main application802. When a newly- or previously-published related optional software package is published at a host server subsequent to a previously retrieved main software package being installed at a client system/device, the atomic set manifest associated with a corresponding main software package is also updated at the host server to include a version value of the newly- or previously-published related optional software package. Accordingly, in such cases, the available software packages at the host server have an atomic set manifest that is updated with respect to the atomic set manifest for the previously retrieved main software package that is installed at the client system/device. Alternatively, a previously-published related optional software package published at a host server prior to a previously retrieved main software package being installed at a client system/device would be included in atomic set manifests at both the host server and the client system/device.

In step1104, the atomic set information from the host server that has been updated to define version dependencies between the software package, the related optional software package, and the additional related optional software package is received. For example, atomic deployment manager312ofFIG. 3is configured to receive the atomic set information as described herein, which may include receiving the atomic set manifest of a software program bundle itself from the host server. In examples, and as noted above, an updated or existing atomic set manifest or information thereof may reflect a required atomic set for the software package, the related optional software package, and the additional related optional software package. In some cases, even when the existing atomic set manifest at the host server matches the atomic set manifest at the client system/device, the existing atomic set manifest at the host server may be received for version verification of the software packages.

In step1106, an updated version of the software package corresponding to the updated atomic set information is retrieved. In some examples, as discussed above, step1106may be optional and/or not performed. For instance, in cases where the existing atomic set manifest at the host server matches the atomic set manifest at the client system/device, a new version of the software package is not required to be retrieved as the version available at the host server is the same as the version installed at the client system/device.

In other examples, atomic deployment manager312ofFIG. 3is configured to retrieve the updated version of the software package that corresponds to the updated atomic set information from the host server, e.g., as similarly described in flowchart400ofFIG. 4and flowchart600ofFIG. 6.

In step1108, the updated version of the software package and the additional related optional software package are installed at the client device. For example, the updated version of the software package and the additional related optional software package are installed at the client device in a manner that is similar to step702of flowchart700ofFIG. 7described above. Additionally, step1108may also include assigning the updated atomic set information to the installed application corresponding to the main software package at the client device in a manner that is similar to step704of flowchart700ofFIG. 7.

Referring again toFIG. 8and client system800, applications corresponding to one or more software packages, e.g., first application802and second application804, may be installed at a client system or device such as client system800, in an example. The examples and techniques herein provide for mechanisms by which a software package that may be utilized by more than one installed application may be assigned to an atomic set of a first installed application to the exclusion of an atomic set manifest of a second installed application.

As described above, optional packages listed in an atomic set manifest may include content. For instance,FIG. 12shows a flowchart1200of a process for atomic set software package deployment, according to an example. Flowchart1200may be a further example of flowchart400ofFIG. 4, flowchart600ofFIG. 6, flowchart700ofFIG. 7, and/or flowchart1100ofFIG. 11. For purposes of illustration, flowchart1200ofFIG. 12is described with respect to system800ofFIG. 8and also with reference to client system300ofFIG. 3andFIG. 2. That is, end user client204ofFIG. 2, client system300ofFIG. 3, and/or system800ofFIG. 8may perform their respective functions and operations in accordance with flowchart1200. Further structural and operational examples will be apparent to persons skilled in the relevant art(s) based on the following description. Flowchart1200is described as follows.

In step1202, an additional related optional software package is retrieved from the host server, the additional related optional software package comprising content that may be utilized by the software package and by another software package. For example, a newly- or previously-published related optional software package such as fourth optional package822ofFIG. 8may be retrieved by atomic deployment manager312ofFIG. 3, as described herein. Fourth optional package822may be retrieved independently of the software packages corresponding to first application802and/or second main application804. As previously noted, fourth optional package822may be utilized by first main application802or second main application804.

In step1204, the additional related optional software package is associated with the software package. For instance, atomic deployment manager312ofFIG. 3may be configured to associate fourth optional package822with first application802. In an example, indicia of an end user request or instruction to perform the association may be received by atomic deployment manager312via a UI of first application802or UI306of OS304ofFIG. 3, or by another mechanism, such as but without limitation, a script, a remote instruction from an administrative system, and/or the like. As an illustrative example, an end user using first application802may elect to import or install fourth optional package822through a UI (e.g., buttons or menus) of first application802.

In step1206, a version of the additional related optional software package is assigned to the atomic set information of the software package, where the version of the additional related optional software package is exclusive of atomic set information of the other software package. For example, atomic deployment manager312ofFIG. 3may be configured to assign the additional related optional software package (e.g., fourth optional package822) to the atomic set manifest of first application802that corresponds to installed first main package810. Atomic deployment manager312may also be configured to enforce mutual exclusivity between installed applications for packages in their respective atomic sets. That is, if fourth optional package822is assigned to first atomic set806of first application802, fourth optional package822cannot be assigned to second atomic set808of second application804, in examples. In other words, atomic deployment manager312may be configured to prevent the addition of a software package present in an atomic set to another atomic set.

Additionally, in some examples, a software package that does not initially have versioning associated therewith, such as a software package comprising media or multi-media content, that is saved at system800(e.g., fourth optional package822, in one such example), may be added to first atomic set806or to second atomic set808by atomic deployment manager312. Atomic deployment manager312may be configured to assign a version to previously non-versioned software packages when they are added to an atomic set embodied by an atomic set manifest.

The examples herein may be also configured in various ways to enable software packages with multiple dependencies in atomic set manifests to be jointly serviced.FIG. 13shows a block diagram of a shared software package for an atomic set1300, according to an example. As illustrated inFIG. 13, atomic set1300includes a main package1302, a first optional package1304, a second optional package1306, and a third optional package1308.

The illustrated arrows in atomic set1300designate dependencies for the software packages of the atomic sets (i.e., arrows start at dependent packages and point to packages from which the dependent packages depend). Main package1302does not depend from any other packages in atomic set1300. First optional package1304and second optional package1306each depend from main package1302. Third optional package1308is shown as being dependent from each of main package1302, first optional package1304, and second optional package1306. However, in examples, third optional package1308may be dependent from any two of main package1302, first optional package1304, and second optional package1306. Third optional package1308may include content such as shared library files (e.g., DLLs) or other resource files, media/multi-media content, DLC(s), that two or more software packages of an atomic set reference.

Referring also toFIG. 14, a flowchart1400of a process for atomic set software package deployment is shown, according to an example. Flowchart1400may be a further example of flowchart400ofFIG. 4, flowchart600ofFIG. 6, and/or flowchart700ofFIG. 7. For purposes of illustration, flowchart1400ofFIG. 14is described with respect to atomic set1300ofFIG. 13and also with reference to client system300ofFIG. 3andFIG. 2. That is, end user client204ofFIG. 2and/or client system300ofFIG. 3may perform their respective functions and operations in accordance with flowchart1300. Further structural and operational examples will be apparent to persons skilled in the relevant art(s) based on the following description. Flowchart1400is described as follows.

In step1402, a request is provided to a host server for atomic set information associated with a software package, the atomic set information defining version dependencies between the software package, a first related optional software package, and a second related optional software package that is a software library file. For example, the request may be provided to a host server such as distribution host206ofFIG. 2from atomic deployment manager312of client device302via I/O interface314.

In examples, an indication may be received by atomic deployment manager312to provide the request. The indication may be generated by an end user via one of main applications308installed at client device302and/or UI306where the end user desires to update the software package, e.g., a main software package corresponding to one of main applications308, and/or a number of related optional applications310. Alternatively, the indication may be received from distribution host206to notify client device302that an update for the one of main applications308and/or a number of related optional applications310. In some examples, the indication may be provided responsive to the execution of an installation script by a deployment engine of OS304at client device302or another device associated with client device302where it is desired to newly install an additional one of main applications308at client device302.

As an example scenario, an end user may desire to newly install or update their application for Microsoft® Office® from Microsoft Corporation, although any example application may be considered in this scenario such as iWork® from Apple, Inc., Adobe® PhotoShop® from Adobe Systems Incorporated, etc., gaming applications, and/or the like. The user may provide the indication to prompt a request for atomic set information associated with the main software package of the Microsoft® Office® application to be provided to distribution host206from atomic deployment manager312at client device302. Related optional software packages for Microsoft® Office®, e.g., Microsoft® Word, Microsoft® PowerPoint®, Microsoft® Excel®, etc., from Microsoft Corporation may also be desired by the end user for installation or updating. The second related optional software package is a software library file, such as a DLL, that may be shared between one or more related optional software packages, and/or between the main software package and one or more related optional software packages. As illustrated in atomic set1300ofFIG. 13, the second related optional software package may be third optional package1308.

In step1404, the atomic set information is received from the host server. For instance, atomic set information from an atomic set manifest in a software program bundle of software program bundles208ofFIG. 2is provided from distribution host206to client device302ofFIG. 3where it is received via I/O interface314. The atomic set information, e.g., atomic set1300ofFIG. 13, may be received by atomic deployment manager312. The atomic set information may be stored in a memory of client device302for use in the steps of flowchart1400. In examples, the entire atomic set manifest may be received.

In step1406, versions available at the host server for the software package, the first related optional software package, and the second related optional software package are determined based on the atomic set information. For instance, atomic deployment manager312may parse the atomic set information received in step1404to determine the atomic set versions of the main software package, the first related optional software package, and the second related optional software package, as well as any other related optional applications in the software program bundle of software program bundles208available at distribution host206ofFIG. 2.

In step1408, the versions of the software package from the host server, the first related optional software package, and the second related optional software package are retrieved. For instance, atomic deployment manager312ofFIG. 3is configured to retrieve the versions of the software package, the first related optional software package, and the second related optional software package from the software program bundle that are specified in the atomic set information determined in step1406from distribution host206ofFIG. 2via I/O interface314. Once retrieved, the packages may be stored for installation by client device302.

In the examples described herein, versions of related software packages specified in atomic sets provide for proper functioning and interoperability. That is, the examples and techniques described herein allow for strict adherence to joint servicing of related software packages via atomic sets to prevent undesired and/or abnormal behaviors that may arise due to incompatible versions of software packages or unsupported features between software packages that share common components. In examples, when a related optional software package is updated and/or installed, a main software package in the associated atomic set is also updated regardless of whether the main software application includes changes to software code for to the related optional software package, or whether only the version value of the related optional software package is new or changed in the associated atomic set manifest (in which case the main software package may only be updated to assign the associated atomic set manifest. Likewise, when a software package that is dependent on or that depends from one or more other software packages is installed and/or updated, each other dependent or depending software package is also required to be installed and/or updated to ensure compatible/operable versions of software packages are used together, in examples.

For instance,FIG. 15shows a flowchart1500of a process for atomic set software package deployment, according to an example. Flowchart1500may be a further example of flowchart400ofFIG. 4, flowchart600ofFIG. 6, flowchart700ofFIG. 7and/or flowchart1400ofFIG. 14. For purposes of illustration, flowchart1500ofFIG. 15is described with respect to atomic set1300ofFIG. 13and also with reference to client system300ofFIG. 3andFIG. 2. That is, end user client204ofFIG. 2and/or client system300ofFIG. 3may perform their respective functions and operations in accordance with flowchart1500. Further structural and operational examples will be apparent to persons skilled in the relevant art(s) based on the following description. Flowchart1500is described as follows.

In step1502, each of the software package, the first related optional software package, and the second related optional software package is required to be updated at the client device according to the atomic set information when any of the software package, the first related optional software package, and the second related optional software package are updated. For example, atomic deployment manager312ofFIG. 3is configured to require each other software package to be updated when the second related optional software package (that is a common or shared software package) is updated based on the atomic set.

With respect to the example scenario in step1402, the main software package for Microsoft® Office®, a related optional package, e.g., one of Microsoft® Word, Microsoft® PowerPoint®, Microsoft® Excel®, etc., and a shared library file, such as a DLL, along with their associated atomic set manifest, are retrieved and stored by atomic deployment manager312at client device302based on the atomic set information.

As noted above, atomic deployment manager312is configured to strictly enforce lock-step joint software package servicing according to the atomic set in the atomic set manifest for the software packages. Attempts to install versions of software packages from another atomic set, or incorrect versions of software packages that conflict with an atomic set, may be denied by atomic deployment manager312. In some examples, atomic deployment manager312may be configured to maintain, or roll back to, existing installed versions of software packages subsequent to denying such installations. In other examples, atomic deployment manager312may be configured to automatically retrieve correct and/or updated versions of software packages, according to atomic set information, as described in the flowcharts above, subsequent to denying such installations.

In step1410, the versions of the software package, the first related optional software package, and the second related optional software package are installed at the client device from the host server. For instance, once retrieved as in step1408, the software package and the related optional software packages may be stored and installed by client device302to respectively be a main application of main applications308and related optional applications of related optional applications310. Upon receipt of the software package and the related optional software packages, installation may begin automatically by client device302, e.g., initiated by atomic deployment manager312, or may begin based on an input of the end user via UI306or a UI of an application executing on client device302.

Additionally, the atomic set manifest in the software program bundle from which the atomic set information was received in step1404may be stored and associated with the software package when installed.

The examples herein may be also configured in various ways to initiate updates for software packages as described herein. For instance,FIG. 16shows a flowchart1600of a process for atomic set software package deployment, according to an example. Flowchart1600may be a further example of any flowchart described above. For purposes of illustration, flowchart1600ofFIG. 16is described with respect to atomic set1300ofFIG. 13and also with reference to client system300ofFIG. 3andFIG. 2. That is, end user client204ofFIG. 2and/or client system300ofFIG. 3may perform their respective functions and operations in accordance with flowchart1600. Further structural and operational examples will be apparent to persons skilled in the relevant art(s) based on the following description. Flowchart1600is described as follows.

In step1602, an update for the software package, the first related optional software package, and the second related optional software package is initiated based on the atomic set information. For example, atomic deployment manager312may be configured to initiate an update of software packages. The initiation may be performed responsive to end user inputs, information received from a host server, a time of day or time since a new version of a software package was published, and/or the like.

In examples, atomic deployment manager312may initiate an update of software packages prior to the first step of any flowchart described above.

The examples herein may be also configured in various ways to enable dynamic updates for related optional software packages as described herein while main software applications corresponding to main software packages are being executed at client systems/devices. For instance,FIG. 17shows a flowchart1700of a process for atomic set software package deployment, according to an example. Flowchart1700may be a further example flowchart1600ofFIG. 16, and may also be a further example of any flowchart described above. For purposes of illustration, flowchart1700ofFIG. 17is described with respect toFIG. 18and also with reference to client system300ofFIG. 3andFIG. 2.FIG. 18shows an example an atomic set deployment system1800for dynamic updating of software packages, according to an example. As shown inFIG. 18, system1800includes an end user client1802, which may be a further example of end user client204ofFIG. 2, client system300ofFIG. 3, and/or client system800ofFIG. 8, and a distribution host1816that may be a further example of distribution host206ofFIG. 2. Distribution host1816includes an in-use handler1818, and end user client1802includes an optional package change listener1806.

End user client1802, as well as end user client204ofFIG. 2, client system300ofFIG. 3, and/or client system800ofFIG. 8, may perform their respective functions and operations in accordance with flowchart1700. Further structural and operational examples will be apparent to persons skilled in the relevant art(s) based on the following description. Flowchart1700is described as follows.

In step1702, one or more of the first related optional software package and the second related optional software package are dynamically updated while a main package process (e.g., an executing software application or portion thereof) corresponding to the installed version of the main package is executing at the client device. For instance, optional package change listener1806may be configured to facilitate dynamic updating of one or more optional software packages related to a main software package while an installed main application related to the main software package is executing on a client system/device. Optional package change listener1806may be a separate component in examples, or may be a further example or a component of atomic deployment manager312ofFIG. 3. For instance, in examples where optional package change listener1806is a component of atomic deployment manager312, optional package change listener1806may be part of a main application, e.g., a process1804executing on end user client1802.

In an example, a request to update one or more related optional software packages may originate from process1804executing on end user client1802, e.g., as similarly described above with respect to step1602of flowchart1600. The request may specify that that the update is a dynamic or asynchronous update, i.e., that the executing process is requesting an update for a related optional software package. Package change listener1806. The request may be received by distribution host1816at in-use handler1818. In-use handler1818is configured to determine if related optional software packages that are in use have updated versions available at deployment host1816.

If it is determined that one or more updated versions are available, deployment host1816may provide, or end user client1802may retrieve, the updated versions of the available optional software packages for installation at end user client1802. As the updated versions of the available optional software packages are installed, optional package change listener1806may maintain optional package information1808, which may comprise process information, and/or other information about the currently installed version of the related optional package, such as version values, and may maintain optional package path1812, which may comprise main and optional package paths. The updated versions of the available optional software packages may install new optional package information1810, which may comprise updated process information, and/or other information about the newly installed version of the related optional package, such as version values, and may maintain new optional package path1812, which may comprise new main and optional package paths.

Upon proper/successful completion of the new installation of the updated versions, process1804may begin to utilize the new versions of the optional software packages either with, or without, restarting process1804, in examples. Optional package change listener1806may be configured to maintain or delete optional package information1808and/or optional package path1812subsequent to proper/successful completion.

C. Joint Servicing Developer Examples

FIG. 19shows a block diagram of a developer system1900, according to an example. Developer system1900may be a further example of developer client210ofFIG. 2. As shown inFIG. 19, developer system1900includes a developer device1902e.g., a developer client) that comprises a plurality of components. Developer device1902may be any type computing device, as described herein. Developer client1902includes an I/O interface1912, as well as a UI component1904, a version determiner1906, an atomic set generator1908, and a bundler1910which may comprise a portion of a software development kit (SDK)1914, in an example. In examples, SDK1914may comprise software development suite, such as Microsoft® Visual Studio® or the like, that may be executed for use by a developer at developer system1900. Developer system1900may also include additional components (not shown for brevity and illustrative clarity) such as, but not limited to, those described below with respect toFIGS. 23 and 24. For instance, developer system1900may also include at least one memory configured to store program instructions, and at least one processor configured to execute the program instructions.

I/O interface1912may be any type of network adapter, modem, etc., configured to enable developer device1902to communicate with one or more other devices over a network, e.g., such as communicating with distribution host206described above with respect toFIG. 2.

Developer devices and systems for joint servicing of software packages such as developer system1900and developer device1902ofFIG. 19may be enabled in various ways according to examples. For example,FIG. 20shows a flowchart2000of a process for atomic set software package deployment, according to an example. For purposes of illustration, flowchart2000ofFIG. 20is described with respect to developer system1900ofFIG. 19and also with reference toFIG. 2. That is, developer client204ofFIG. 2and/or developer system1900ofFIG. 19may perform their respective functions and operations in accordance with flowchart2000. Further structural and operational examples will be apparent to persons skilled in the relevant art(s) based on the following description. Flowchart2000is described as follows.

In step2002, a UI configured to receive a set of program components from an application developer entity is provided. For instance, UI component1904of developer device1902ofFIG. 19may provide a UI for use by a developer for performing aspects of joint servicing of software packages, as described herein. In examples, the provided UI is configured to receive a set of program components from an application developer entity or a developer(s). The set of program components may include one or more of a main software package and an optional software package, and a version value for each software package in the set of program components.

The UI described in step2002may also be configured to accept options and/or additional information from the application developer entity or the developer(s). The options and/or additional information may include, without limitation, dependency information, atomic set information, software component descriptions, and/or the like. For instance, as illustrated in atomic set manifest500ofFIG. 5, options and/or additional information may include, without limitation, a “Bundles Version,” a “Bundle Version” specific to the software program bundle, a path for the bundle, a software package identifier, e.g., “<Identity Name=“publisher.Main”” or “<Identity Name=“publisher.Main.Optional_1”,” and publisher information such as name and location data.

In examples, the software package and the optional software package may be a main software package and a related optional software package, as described herein, and may be developed by the application developer entity or the developer(s). For example, the application developer entity or the developer(s) may develop such software packages using SDK1914ofFIG. 19. The software packages may correspond to full applications, such as gaming applications, productivity software suites, stand-alone applications etc., or may correspond to updates and/or add-on packages for existing software packages/applications.

In step2004, each of the version values is determined. For instance, version determiner1906ofFIG. 19may be configured to determine the version values for the main software package and the optional software package received via the UI provided by UI component1904, as described above in step2002. In examples, the version values may be input directly by the developer via the provided UI, while in other examples, version determiner1906may be configured to parse of the main software package, the optional software package, and/or informational software components to determine their respective version values.

The version values or information associated therewith may also designate dependencies of the main software package and the optional software package. It should be noted that while two program components are described with respect to the set of program components, additional or fewer related software packages, as disclosed herein, may also be included, and respective version values and dependency information may be determined in step2004.

In step2006, an atomic set manifest is generated based on the version values. For example, atomic set generator1906ofFIG. 19may be configured to generate an atomic set manifest based on the version values determined in step2004. In examples, atomic set generator1906is configured to generate an XML file representation of an atomic set as the atomic set manifest, as illustrated in atomic set manifest500ofFIG. 5. Additionally, the options and/or additional information may be used by atomic set generator1906ofFIG. 19to generate the atomic set manifest. For instance, software component dependency information may also be used and may be determined from the software package identifier, as noted above. In examples, the generated atomic set manifest defines version dependencies between program components in the set of program components requiring the program components in the set of program components to be serviced together subsequent to installation at a client device.

In some examples, the generated atomic set manifest may comprise additional, published software packages.

In step2008, a software program bundle that includes the set of program components and the atomic set manifest is generated. For instance, bundler1910ofFIG. 19may be configured to generate a software program bundle that includes the set of program components and the atomic set manifest. Bundler1910may bundle the set of program components and the atomic set manifest according to known bundling techniques that will, in addition and according to the techniques and examples herein, include the atomic set manifest described above.

Software program bundles may be published and/or provided to a host server such as distribution host206ofFIG. 2and/or distribution host1816ofFIG. 18for storage and/or distribution as described above (e.g., as illustrated by software program bundles208ofFIG. 2). Additionally, software program bundles may be stored at developer device1902for subsequent use.

The examples herein are also configured to provide for generating software program bundles with software components, e.g., software packages, from different application developer entities and/or developers.

FIG. 21shows a flowchart2100of a process for atomic set software package deployment, according to an example. For purposes of illustration, flowchart2100ofFIG. 21is described with respect to developer system1900ofFIG. 19and also with reference toFIG. 2. That is, developer client204ofFIG. 2and/or developer system1900ofFIG. 19may perform their respective functions and operations in accordance with flowchart2100. Flowchart2100ofFIG. 21may be a further example of flowchart2000ofFIG. 20. Further structural and operational examples will be apparent to persons skilled in the relevant art(s) based on the following description. Flowchart2100is described as follows.

In step2102, information in the atomic set manifest that associates the set of program components with another software program bundle that includes another set of program components from a different developer entity is generated. For example, atomic set generator1912of developer system1900may be configured to generate an atomic set manifest with such associating information. In examples, atomic set generator1912may associate program components of a software program bundle with another software program bundle based on path information and/or software package identifier information that is related to the other program bundle, although the association may be based on other types of information disclosed herein.

For instance, a developer or developer entity may develop a related optional software package (e.g., a software add-on or update or the like) for a main software package that is developed by a different developer or developer entity. In this example, the main software package may be included in a published software program bundle stored for distribution at a host server, e.g., at an online store. When atomic set generator1912generates an atomic set manifest for the related optional software package (e.g., similarly as in step2006of flowchart2000ofFIG. 20), a portion of the atomic set manifest is generated to include the path or directory location for the published software package bundle. A portion for the atomic set manifest for the related optional software package may also be generated to include the name of the corresponding main software package for the published software bundle in the identifier tag set of the related optional software package. As a further illustrative example, and also referring back toFIG. 5and atomic set manifest500, the main software package atomic set manifest for the published software program bundle may include “<Identity Name=“publisher1.Main”” for the main package tag set which may be followed by relevant information for “publisher1.” However, in this further illustrative example, the related optional software package atomic set manifest may include “<Identity Name=“publisher2.Main.Optional_1”” for the related optional software package tag set which may be followed by relevant information for “publisher2.”

Accordingly, related optional software packages may be bundled in a way that creates an association with a main software package of a different developer/developer entity. It should be noted that while the software bundle generation techniques and examples noted above are discussed in terms of different developers, it is also contemplated herein that these techniques and examples may be similarly applied to software packages, and associated bundles, that are published by different publishers or publisher entities.

Referring also toFIG. 22, a block diagram of a software program bundle2200is shown, according to an example. Software program bundle2200may be generated according to flowchart2000ofFIG. 20and/or flowchart2100ofFIG. 21by bundler1910ofFIG. 19, in examples. As noted above, software program bundles, along with associated related optional software packages, may be published and/or provided to a host server such as distribution host206ofFIG. 2and/or distribution host1816ofFIG. 18for storage and/or distribution.

Software program bundle2200includes a main package bundle2202, an independent optional package2214, a first optional package2210, and a second optional package2212. First optional package2210and second optional package2212may be related optional packages, as described herein, and independent optional package2214may be unrelated to, but utilizable by, main package2208. Main package bundle2202includes an atomic set manifest2204, and an atomic set2206. Atomic set manifest2204may be similarly structured as atomic set manifest500ofFIG. 5, in examples, and atomic set2206includes a main package2208, a first optional package reference2210a, and a second optional package reference2212a. That is, in examples, the related optional packages, e.g., first optional package2210and second optional package2212, may reside outside of main package bundle2202that may instead include a reference(s) to the related optional package(s).

Independent optional package2214, as noted above, is not related to main package2208and therefore is not included in atomic set2206or atomic set manifest2204. However, independent optional package2214may be added to atomic set2206and reflected in atomic set manifest2204, as described above.

Each of the three optional packages illustrated inFIG. 22may be separately bundled and associated with main package bundle2202as noted herein. The optional packages illustrated inFIG. 22may have different developers/developer entities or publishers/publisher entities with respect to each other and/or with respect to main package2208.

III. Example Mobile Device Implementation

Atomic deployment manager102, host server104, atomic deployment manager102, end user client204, distribution host206, a developer client210, client device302, OS304, UI306, main application(s)308, related optional applications310, atomic deployment manager312, end user client1802, process1804, optional package change listener1806, distribution host1816, in-use handler1818, UI component1904, version determiner1906, atomic set generator1908, bundler1910, SDK1912, flowchart600, flowchart700flowchart900, flowchart1000, flowchart1100, flowchart1200, flowchart1400, flowchart1500, flowchart1600, flowchart1700, flowchart2000, and/or flowchart2100may be implemented in hardware, or hardware with any combination of software and/or firmware, including being implemented as computer program code configured to be executed in one or more processors and stored in a computer readable storage medium, or being implemented as hardware logic/electrical circuitry, such as being implemented together in a system-on-chip (SoC). The SoC may include an integrated circuit chip that includes one or more of a processor (e.g., a microcontroller, microprocessor, digital signal processor (DSP), etc.), memory, one or more communication interfaces, and/or further circuits and/or embedded firmware to perform its functions.

FIG. 23is a block diagram of an exemplary mobile system2300that includes a mobile device2302that may implement examples described herein. For example, mobile device2302may be used to implement any system, client, or device, or components/subcomponents thereof, in the preceding sections. As shown inFIG. 23, mobile device2302includes a variety of optional hardware and software components. Any component in mobile device2302can communicate with any other component, although not all connections are shown for ease of illustration. Mobile device2302can be any of a variety of computing devices (e.g., cell phone, smart phone, handheld computer, Personal Digital Assistant (PDA), etc.) and can allow wireless two-way communications with one or more mobile communications networks2304, such as a cellular or satellite network, or with a local area or wide area network.

Mobile device2302can include a controller or processor2310(e.g., signal processor, microprocessor, ASIC, or other control and processing logic circuitry) for performing such tasks as signal coding, data processing, input/output processing, power control, and/or other functions. An operating system2312can control the allocation and usage of the components of mobile device2302and provide support for one or more application programs2314(also referred to as “applications” or “apps”). Application programs2314may include common mobile computing applications (e.g., e-mail applications, calendars, contact managers, web browsers, messaging applications) and any other computing applications (e.g., word processing applications, mapping applications, media player applications).

Mobile device2302can include memory2320. Memory2320can include non-removable memory2322and/or removable memory2324. Non-removable memory2322can include RAM, ROM, flash memory, a hard disk, or other well-known memory devices or technologies. Removable memory2324can include flash memory or a Subscriber Identity Module (SIM) card, which is well known in GSM communication systems, or other well-known memory devices or technologies, such as “smart cards.” Memory2320can be used for storing data and/or code for running operating system2312and application programs2314. Example data can include web pages, text, images, sound files, video data, or other data to be sent to and/or received from one or more network servers or other devices via one or more wired or wireless networks. Memory2320can be used to store a subscriber identifier, such as an International Mobile Subscriber Identity (IMSI), and an equipment identifier, such as an International Mobile Equipment Identifier (IMEI). Such identifiers can be transmitted to a network server to identify users and equipment.

A number of programs may be stored in memory2320. These programs include operating system2312, one or more application programs2314, and other program modules and program data. Examples of such application programs or program modules may include, for example, computer program logic (e.g., computer program code or instructions) for implementing, atomic deployment manager102, host server104, atomic deployment manager102, end user client204, distribution host206, a developer client210, OS304, UI306, main application(s)308, related optional applications310, atomic deployment manager312, end user client1802, process1804, optional package change listener1806, distribution host1816, in-use handler1818, UI component1904, version determiner1906, atomic set generator1908, bundler1910, SDK1912, flowchart600, flowchart700flowchart900, flowchart1000, flowchart1100, flowchart1200, flowchart1400, flowchart1500, flowchart1600, flowchart1700, flowchart2000(including any suitable step of flowcharts600,700,900,1000,1100,1200,1400,1500,1600,1700, and2000), and/or further examples described herein.

Mobile device2302can support one or more input devices2330, such as a touch screen2332, a microphone2334, a camera2336, a physical keyboard2338and/or a trackball2340and one or more output devices2350, such as a speaker2352and a display2354. Other possible output devices (not shown) can include piezoelectric or other haptic output devices. Some devices can serve more than one input/output function. For example, touch screen2332and display2354can be combined in a single input/output device. Input devices2330can include a Natural User Interface (NUI).

Wireless modem(s)2360can be coupled to antenna(s) (not shown) and can support two-way communications between processor2310and external devices, as is well understood in the art. Modem(s)2360are shown generically and can include a cellular modem2366for communicating with the mobile communication network2304and/or other radio-based modems (e.g., Bluetooth2364and/or Wi-Fi1662). At least one of wireless modem(s)2360is typically configured for communication with one or more cellular networks, such as a GSM network for data and voice communications within a single cellular network, between cellular networks, or between the mobile device and a public switched telephone network (PSTN).

Mobile device2302can further include at least one input/output port2380, a power supply2382, a satellite navigation system receiver2384, such as a Global Positioning System (GPS) receiver, an accelerometer2386, and/or a physical connector2390, which can be a USB port, IEEE 1394 (FireWire) port, and/or RS-232 port. The illustrated components of mobile device2302are not required or all-inclusive, as any components can be deleted and other components can be added as would be recognized by one skilled in the art.

In an example, mobile device2302is configured to implement any of the above-described features of flowcharts herein. Computer program logic for performing any of the operations, steps, and/or functions described herein may be stored in memory2320and executed by processor2310.

IV. Example Processor-Based Computer System Implementation

FIG. 24depicts an example processor-based computer system2400that may be used to implement various examples described herein. For example, system2400may be used to implement any server, host, online store, system, client, device, etc., as described herein. System2400may also be used to implement any of the steps of any of the flowcharts, as described herein. The description of system2400provided herein is provided for purposes of illustration, and is not intended to be limiting. Examples may be implemented in further types of computer systems, as would be known to persons skilled in the relevant art(s).

As shown inFIG. 24, system2400includes a processing unit2402, a system memory2404, and a bus2406that couples various system components including system memory2404to processing unit2402. Processing unit2402may comprise one or more circuits, microprocessors or microprocessor cores. Bus2406represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. System memory2404includes read only memory (ROM)2408and random access memory (RAM)2410. A basic input/output system2412(BIOS) is stored in ROM2408.

System2400also has one or more of the following drives: a hard disk drive2414for reading from and writing to a hard disk, a magnetic disk drive2416for reading from or writing to a removable magnetic disk2418, and an optical disk drive2420for reading from or writing to a removable optical disk2422such as a CD ROM, DVD ROM, BLU-RAY™disk or other optical media. Hard disk drive2414, magnetic disk drive2416, and optical disk drive2420are connected to bus2406by a hard disk drive interface2424, a magnetic disk drive interface2426, and an optical drive interface2428, respectively. The drives and their associated computer-readable media provide nonvolatile storage of computer-readable instructions, data structures, program modules and other data for the computer. Although a hard disk, a removable magnetic disk and a removable optical disk are described, other types of computer-readable memory devices and storage structures can be used to store data, such as flash memory cards, digital video disks, random access memories (RAMs), read only memories (ROM), and the like.

A number of program modules may be stored on the hard disk, magnetic disk, optical disk, ROM, or RAM. These program modules include an operating system2430, one or more application programs2432, other program modules2434, and program data2436. In accordance with various examples, the program modules may include computer program logic that is executable by processing unit2402to perform any or all of the functions and features of any technique or example described herein, including the computer program logic described above with regard toFIG. 23. The program modules may also include computer program logic that, when executed by processing unit2402, causes processing unit2402to perform any of the steps of any of the flowcharts, as described above.

A user may enter commands and information into system2400through input devices such as a keyboard2438and a pointing device2440(e.g., a mouse). Other input devices (not shown) may include a microphone, joystick, game controller, scanner, or the like. In one example, a touch screen is provided in conjunction with a display2444to allow a user to provide user input via the application of a touch (as by a finger or stylus for example) to one or more points on the touch screen. These and other input devices are often connected to processing unit2402through a serial port interface2442that is coupled to bus2406, but may be connected by other interfaces, such as a parallel port, game port, or a universal serial bus (USB). Such interfaces may be wired or wireless interfaces.

Display2444is connected to bus2406via an interface, such as a video adapter2446. In addition to display2444, system2400may include other peripheral output devices (not shown) such as speakers and printers.

System2400is connected to a network2448(e.g., a local area network or wide area network such as the Internet) through a network interface2450, a modem2452, or other suitable means for establishing communications over the network. Modem2452, which may be internal or external, is connected to bus2406via serial port interface2442.

As used herein, the terms “computer program medium,” “computer-readable medium,” and/or “computer-readable storage medium” are used to generally refer to memory devices or storage structures such as the hard disk associated with hard disk drive2414, removable magnetic disk2418, removable optical disk2422, as well as other memory devices or storage structures such as flash memory cards, digital video disks, random access memories (RAMs), read only memories (ROM), and the like. Such computer-readable storage media are distinguished from and non-overlapping with communication media, software programs, and transitory signals (do not include communication media, software programs, or transitory signals). Communication media typically embodies computer-readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wireless media such as acoustic, RF, infrared and other wireless media. Examples are also directed to such communication media.

As noted above, computer programs and modules (including application programs2432and other program modules2434) may be stored on the hard disk, magnetic disk, optical disk, ROM, or RAM. Such computer programs may also be received via network interface2450, serial port interface2442, or any other interface type. Such computer programs, when executed or loaded by an application, enable system1700to implement features of examples discussed herein. Accordingly, such computer programs represent controllers of the system2400. Examples are also directed to computer program products comprising software stored on any computer useable medium. Such software, when executed in one or more data processing devices, causes a data processing device(s) to operate as described herein. Examples may employ any computer-useable or computer-readable medium, known now or in the future. Examples of computer-readable mediums include, but are not limited to memory devices and storage structures such as RAM, hard drives, floppy disks, CD ROMs, DVD ROMs, zip disks, tapes, magnetic storage devices, optical storage devices, MEMs, nanotechnology-based storage devices, and the like.

V. Additional Examples

In examples, one or more of the steps or operations of any flowchart described herein may not be performed. Moreover, steps or operations in addition to or in lieu of those in any flowchart described herein may be performed. Further, in examples, one or more operations of any flowchart described herein may be performed out of order, in an alternate sequence, or partially (or completely) concurrently with each other or with other operations.

The further examples described in this section may be applicable to examples disclosed in any other section or subsection of this disclosure.

A method implemented in a client device is described herein. The method includes providing a request to a host server for atomic set information associated with a first software package, the atomic set information defining version dependencies between the first software package and a related optional software package, and receiving the atomic set information from the host server. The method also includes determining a version of the software package available at the host server based on the atomic set information, and retrieving the version of the first software package from the host server.

In examples, the method specifies that the atomic set information comprises a version value of the first software package that is a main software package and a version value of the related optional software package available at the host server, and that said retrieving includes retrieving the main software package and the related optional software package. In an example, the method comprises assigning the atomic set information to the main software package at the client device, and installing the main software package and the related optional software package.

In an example, the method comprises determining that one of the main software package and the related optional software package failed to install properly subsequent to the retrieving, rolling back to previously installed versions for the main software package and for the related optional software package that correspond to a previous atomic set, and assigning the previous atomic set information to the first software package at the client device.

In examples, the method specifies that the related optional software package has a developer entity that is different from the first software package.

In examples, the method specifies that the atomic set information comprises a version value of the first software package that is a main software package and a version value of the related optional software package available at the host server, and that said retrieving includes retrieving the main software package and excludes retrieving the related optional software package that is available at the host server. In an example, the method comprises installing the main software package at the client device, and assigning the atomic set information to an installed application corresponding to the main software package at the client device.

In an example, the method comprises retrieving an additional related optional software package from the host server subsequent to retrieving the version of the first software package, receiving the atomic set information from the host server that has been updated to define version dependencies between the first software package, the related optional software package, and the additional related optional software package, retrieving an updated version of the first software package corresponding to the updated atomic set information, and installing the updated version of the first software package and the additional related optional software package at the client device.

In an example, the method comprises retrieving an additional related optional software package from the host server, the additional related optional software package comprising content that may be utilized by the first software package and by another software package, associating the additional related optional software package with the first software package, and assigning a version of the additional related optional software package to the atomic set information of the first software package. In an example, the method specifies that the version of the additional related optional software package is exclusive of atomic set information of the other software package.

In examples, the method specifies that the first software package is a gaming application, and that the related optional software package is one or more of purchased downloadable content, media or multimedia content, and add-on software content for the gaming application.

A computer-readable storage device having program instructions recorded thereon that, when executed by one or more processors, cause the one or more processors to perform a method in a client device is also described herein. The method includes providing a request to a host server for atomic set information associated with a first software package, the atomic set information defining version dependencies between the first software package, a first related optional software package, and a second related optional software package that is a software library file, and receiving the atomic set information from the host server. The method also includes determining versions available at the host server for the first software package, the first related optional software package, and the second related optional software package based on the atomic set information, retrieving the versions of the first software package from the host server, the first related optional software package, and the second related optional software package, and installing the versions of the first software package from the host server, the first related optional software package, and the second related optional software package at the client device.

In examples, the method specifies that the second related optional software package is shared between the first software package and the first related optional software package, and that each of the first software package, the first related optional software package, and the second related optional software package are required to be updated at the client device according to the atomic set information when any of the first software package, the first related optional software package, and the second related optional software package are updated.

In an example, the method comprises initiating an update for the first software package, the first related optional software package, and the second related optional software package based on the atomic set information, determining that one of the first software package, the first related optional software package, and the second related optional software package failed to update properly, and rolling back to previously installed versions for the first software package, the first related optional software package, and the second related optional software package that correspond to a previous atomic set.

In examples, the method specifies that the second related optional software package is shared between the first related optional software package and a third related optional software package that is installed at the client device and that includes version information thereof in the atomic set information, and that each of the first software package, the first related optional software package, the second related optional software package, and the third related optional software package are required to be updated at the client device according to the atomic set information when any of the first software package, the first related optional software package, the second related optional software package, and the third related optional software package are updated.

In an example, the method comprises retrieving a third related optional software package from the host server subsequent to retrieving the version of the first software package, receiving updated atomic set information that includes a version of the third related optional software package and an updated version of the first software package from the host server, and installing the updated version of the first software package and third related optional software package at the client device.

In examples, the method specifies that the first software package comprises a main software package of a software program suite, the first and the third related optional software package comprise software sub-packages of the main software package, and the second related optional software package is a dynamic linked library file.

In an example, the method comprises dynamically updating one or more of the first related optional software package and the second related optional software package while a main package process corresponding to the installed version of the main package is executing at the client device.

A system is also described herein. The system comprises at least one memory configured to store program instructions, and at least one processor configured to execute the program instructions. The program instructions include user interface (UI) instructions for providing a UI configured to receive a set of program components from an application developer entity, the set of program components comprising one or more of a main software package and an optional software package, and a version value for each software package in the set of program components. The program instructions also include determination instructions for determining each of the version values, atomic set instructions for generating an atomic set manifest based on the version values, and bundler instructions for generating a software program bundle that includes the set of program components and the atomic set manifest.

In examples, the system specifies that the program instructions comprise a software development kit.

In examples, the system specifies that the set of program components comprises the optional software package of the developer entity, and that the bundler instructions are further for generating information in the atomic set manifest that associates the set of program components with another software program bundle that includes another set of program components from a different developer entity.

In examples, the system specifies that the set of program components comprises the main software package of the developer entity and the optional software package of another developer entity.

In examples, the system specifies that the atomic set manifest comprises an extensible markup language (XML) document that defines version dependencies between program components in the set of program components requiring the program components in the set of program components to be serviced together subsequent to installation at a client device.