EP2661688A1 - Virtualization of configuration settings - Google Patents
Virtualization of configuration settingsInfo
- Publication number
- EP2661688A1 EP2661688A1 EP11855097.9A EP11855097A EP2661688A1 EP 2661688 A1 EP2661688 A1 EP 2661688A1 EP 11855097 A EP11855097 A EP 11855097A EP 2661688 A1 EP2661688 A1 EP 2661688A1
- Authority
- EP
- European Patent Office
- Prior art keywords
- version
- application
- format
- configuration setting
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Definitions
- Computer users configure their computers in order to most efficiently and comfortably perform tasks. For example, a user may configure a word processing application to include a footer containing the user's initials in every document created by the user. As another example, a user may configure the mouse to open files with a single click instead of a double click.
- the footer and mouse configurations are referred to as configuration settings.
- Some configuration settings are considered global in the sense that all applications executing on the computer share the configuration settings, while other configuration settings are specific to an application or a group of application. For example, a configuration setting that indicates the base color for a window may be global, whereas a configuration setting that indicates spelling errors are to be automatically corrected may be specific to an application or a group of applications.
- both global and application-specific configuration settings are configurable by a user.
- Figure 1 is a data flow diagram showing how requests for configuration settings are intercepted and processed by a translation system in one or more embodiments.
- Figure 2 is a flow chart of a process showing steps performed by a translation system to install interceptors in one or more embodiments.
- Figures 3A-3C are a flow chart of a process showing steps performed by a translation system in response to intercepting a configuration request for a configuration setting in one or more embodiment.
- Figures 4A-4D are table diagrams showing various information that is used by, and/or part of, a translation system in one or more embodiments.
- Figure 5 is a flow chart of a process showing steps performed to upgrade the primary format in which configuration settings are stored for an application in one or more embodiments.
- Figure 6 is a block diagram showing components of a computer on which a translation system executes in one or more embodiments.
- a translation system that automatically applies configuration settings to a computer irrespective of the application version or operation system version for which the settings were originally established.
- the translation system maintains a repository of configuration settings that are stored in a primary format.
- the repository may be a configuration store for a specific version of an application in which the primary format is the version-specific format of the configuration store.
- the primary format may indicate that a configuration setting is stored at a location expected by a particular version of an application, that the configuration setting is referred to using the name expected by that version of the application, that the value (data) of the configuration setting is the type expected by that version of the application, and so on.
- the repository may be a configuration store that is independent of any version of the application or even of any application in which case the primary format may be an intermediate, application independent format, such as XML.
- the translation system intercepts requests specifying configuration settings that are used by applications and/or system components. In response to intercepting a request to read a configuration setting, the translation system determines whether the version of the requesting application uses a format other than the primary format in which the configuration setting is stored. If the primary format differs from the version- specific format, the translation system translates the requested configuration setting from the primary format to the format of the requesting application.
- the translation system may translate the value (data) of the configuration setting from the primary format type (e.g., binary) to the type expected by the version of the requesting application (e.g. , string).
- the translation system may also translate the intercepted request itself.
- the translation system may translate the intercepted request to read the configuration setting from the location specified by the requesting application to the location specified by the primary format.
- the developer of the version of an application may provide the translation definitions and/or transformations necessary to support translations between the primary format of the repository and the format of the new version. In this way, the translation system allows a user to start using the new version of the application program without having to manually transfer configuration settings to the new version.
- the translation system By automatically translating configuration settings for one or more versions of an application, the translation system eliminates any post-installation reconfiguration, thereby simplifying the process of changing or upgrading the application. In addition, by automatically translating configuration settings, the translation system enables multiple concurrent installations of an application to use the same configuration data. Additional advantages of the translation system will become apparent as further features of the translation system are described herein.
- the translation system manages a set of configuration settings established by a user and/or an organization for an application.
- application is used to refer to a single application, a group of applications, an operating system, or the like, for which configuration settings may be established. As such, references to particular applications should not be taken as restrictive. It is noted that the translation system does not need to modify the application code to translate configuration settings between version-specific formats of the application and the primary format.
- user-specific configuration setting is used to refer to a configuration setting that has been modified, or is capable of being modified, from a default configuration setting value.
- User-specific configuration settings may be specific to a single user, a group of users, or a machine.
- default configuration setting is used to refer to a configuration setting that is undefined or that has been defined by the application manufacturer
- standard configuration setting is used to refer to a configuration setting that has been defined by an organization for use across a number of computers.
- the translation system For each configuration setting, the translation system maintains translation definitions that identify the transformations, if any, that may be used to translate an intercepted request and/or a configuration setting from a format used by one version of the application to a format used by another version of the application.
- the term "transformation” is used to refer to a function that converts the attributes of a configuration setting (e.g., the location, name, value (data), type, etc.), configuration setting metadata, and/or the like from one format to another format. That is, a transformation defines how an intercepted request and/or the requested configuration setting is converted from a format used by one version of an application to a format used by another version of the application. For example, a transformation may translate the location specified in an intercepted request to another location. As another example, a transformation may translate a configuration setting's type (e.g., binary) without necessarily changing the underlying value (data) of the configuration setting.
- a configuration setting's type e.g., binary
- Microsoft® Office stores a configuration setting in the system registry of the Microsoft Windows® operating system to indicate the identity of the user operating an application (e.g., Excel, Word, etc.).
- the name of this configuration setting is "UserName.”
- the user name configuration setting is a binary type (REG_BINARY) and is stored at: HKEY_CURRENT_USER ⁇ Software ⁇ Microsoft ⁇ Office ⁇ 11.OXCommomUserlnfo
- the user name configuration setting is a string type (REG_SZ) and is stored at: HKEY_CURRENT_USER ⁇ Software ⁇ Microsoft ⁇ Office ⁇ 12.0 ⁇ Common ⁇ Userlnfo.
- the translation system may include a number of transformations to translate intercepted requests for the user name configuration setting.
- the translation system may include a location mapping transformation that is used to translate the location specified by an intercepted request (e.g., HKEY_CURRENT_USER ⁇ Software ⁇ Microsoft ⁇ Office ⁇ 1 1.0 ⁇ Common ⁇ Userlnfo) to the location in which the user name configuration setting is actually stored (e.g., HKEY_CURRENT_USER ⁇ Software ⁇ Microsoft ⁇ Office ⁇ 12.0 ⁇ Common ⁇ Userlnfo).
- the translation system may include a number of transformations to translate the configuration setting type.
- the translation system may include a data manipulation transformation that is used to translate the value (data) of the user name configuration setting from the type used by the 2003 version of Office (e.g., binary) to the type used by the 2007 version of Office (e.g., string), and vice versa.
- the configuration settings established by a user for an application are managed by the translation system in a format used by a version of the application designated as the primary version.
- the primary format may be the format expected by the version of the application for which the configuration settings were established by the user, an intermediate format (e.g., XML), a format used by the most widely deployed version of the application, a user- selected format, and so on.
- an application executes, it makes multiple requests for configuration settings. Such requests are generally directed to one or more configuration data stores that are used by applications and/or operating system components to create, read, update, and/or delete configuration data.
- the translation system intercepts applications' requests for configuration data. In some embodiments, the translation system intercepts such requests by instrumenting an application programming interface (“API") that is used by the application to access configuration data (e.g. , a registry API).
- API application programming interface
- the term "API” is used to refer to a collection of functions or a single function within a collection.
- the translation system determines whether the intercepted request specifies a configuration setting that is managed by the translation system.
- the translation system includes a catalog of configuration settings that have been, or may be, established for one or more applications. The translation system may determine whether the intercepted request specifies a configuration setting that is managed by the translation system by searching the configuration settings catalog for the specified configuration setting. If an intercepted request does not specify a configuration setting managed by the translation system, the translation system may transfer control back to the API indicating that the API should continue with its normal processing.
- the translation system identifies the version of the application from which the request was intercepted and compares the primary format in which the configuration setting is stored to the format expected by the version of the application from which the request was intercepted (referred to herein as the "version-specific format") to determine whether to apply a transform to the intercepted request and/or to the configuration setting. [0018] If the primary format and the version-specific format are the same, the translation system retrieves the configuration setting and returns it to the requesting application. If the primary format differs from the version-specific format, the translation system determines whether it is necessary to translate the intercepted request to a request for the version in which the configuration setting is stored (e.g., the primary format). For example, the location in which the configuration setting is stored by the requesting application may be a different location than that recognized by the primary version of the application. If appropriate, the translation system translates the intercepted request and then retrieves the configuration setting.
- the translation system determines whether the primary format of the attributes of the retrieved configuration setting (e.g., the name, location, value, type, etc.) differs from the version-specific format expected by the version of the application from which the request was intercepted.
- the configuration setting type e.g., string, binary, etc.
- the absence of a requested configuration setting may be used to indicate a default value; however, the default value of the primary version of an application may be different from the default value of the version of the application from which the configuration request was intercepted.
- the absence of a configuration setting may be treated differently by different versions of an application (e.g.
- the primary version may return the default value and another may return an error). If the primary format differs from the version-specific format, the translation system applies one or more transformations to the retrieved configuration setting to convert the configuration setting from the primary format to the version-specific format, and then returns the translated configuration setting.
- the translation system may use many different techniques to intercept requests for configuration settings. For example, some APIs provide a hooking mechanism through which hooks may be registered to transfer control to the translation system before and/or after an API function is performed.
- the translation system may also intercept other types of requests, such as requests to create, update, merge, split, and/or delete a configuration setting. For example, if the translation system intercepts a request to update the value of a configuration setting, the translation system determines whether it is necessary to translate the intercepted request and/or the configuration setting. The translation system compares the primary format in which the configuration setting is stored to the version-specific format specified by the intercepted request. If the primary format and the version-specific format are not the same, the translation system applies a transformation to the intercepted request and/or to the configuration setting to convert the configuration setting from the version-specific format to the primary format prior to storing the updated configuration setting.
- requests to create, update, merge, split, and/or delete a configuration setting For example, if the translation system intercepts a request to update the value of a configuration setting, the translation system determines whether it is necessary to translate the intercepted request and/or the configuration setting. The translation system compares the primary format in which the configuration setting is stored to the version-specific format specified
- Figure 1 is a data flow diagram showing how requests for configuration settings are intercepted and processed by a translation system in one or more embodiments.
- the translation system 100 includes an interceptor component 105 and a translation component 110.
- the translation component consists of a configuration settings catalog 115, a primary version mapping component 120, translation definitions 125, and a collection of transformations 130.
- the translation system resides on a host computing device and serves as an intermediary between applications 135a...135n and their configuration settings, which are stored in configuration data stores 140p...140z.
- the translation system 100 may be used to virtualize configuration settings across a wide variety of computing devices, such as a personal computer, workstations, personal digital assistant, cell phone, digital camera, servers, or other electronic device.
- configuration setting is used to refer to any application state or preference which is persisted and retrieved by an application.
- the translation system 100 may reside on the same computing device or a different computing device as the applications 135a... 135n and/or the configuration data stores 140p...140z. Similarly, one or more of applications 135a... 135n may reside on the same computing device or different computing devices.
- the translation system 100 includes a configuration settings data store that is used by the translation system in place of configuration data stores 140p...140z.
- the interceptor component 105 intercepts a request 145 made by an application 135a to read a configuration setting via an API
- v. 150p from a configuration data store 140p.
- an application such as Microsoft® Excel reads configuration settings controlling various aspects of the programs behavior, such as user name and initials.
- the application may store these settings in a number of configuration data stores, such as a system registry, a file, network storage, environment variables, or other persistent storage mediums.
- configuration data stores such as a system registry, a file, network storage, environment variables, or other persistent storage mediums.
- these settings are retrieved via an API interface 150 specific to the configuration data store 140.
- the configuration settings that represent the user name and initials for Microsoft® Excel are stored in the system registry on the Microsoft Windows® operating system.
- the Microsoft Windows® system registry API includes the following functions (among others) which control reading of data:
- configuration data stores 140 such as a file system, database, or network resource have APIs to read configuration data and metadata.
- a configuration setting may be determined or influenced via metadata returned by an API, such as its absence or presence, one or more of its attributes, or bookkeeping information. For example, if a registry key does not exist, the application may assume a default configuration value.
- the translation system may use various techniques to intercept calls to the APIs 150, such as, for example, those described in commonly-owned U.S. Patent No. 7,293,170 of R. Bowler et al., filed on October 13, 2005 and entitled "CHANGING THE PERSONALITY OF A DEVICE BY INTERCEPTING REQUESTS FOR PERSONALITY INFORMATION," which is hereby incorporated by reference.
- the interceptor component 105 intercepts the request 145 and then the translation component 1 10 determines the version of the application from which the request was intercepted. For example, in the Microsoft
- the translation component 1 10 may call
- the translation component 110 determines the version of the requesting application when intercepting the first application call and then caches the determined version for subsequent calls intercepted from the application.
- the translation component 1 10 searches the configuration settings catalog 115 to determine if the request is for a configuration setting managed by the translation system 100. In some embodiments, the translation component makes this determination based on whether there is an entry in configuration settings catalog 15 corresponding to the version of the application from which the request was intercepted and/or the location of the configuration setting indicated by the intercepted request.
- location is used to refer to a place where a configuration setting resides, such as a registry path, file path, offset within a file, database row, method returning a location (e.g. a calculated location), and so on. It will be appreciated that other methods may be used to determine whether a request pattern is associated with a configuration setting managed by the translation system 100. For example, a registry call to open a key using the sub-key path
- HKEY_CURRENT_USER Software ⁇ Microsoft ⁇ Office ⁇ Excel later followed by a call to query the value Userlnfo can be canonicalized and described in the configuration settings catalog 1 15.
- the configuration data 155 is retrieved from the configuration data store 140p.
- the term "request" is used to refer to one or more individual API calls, such as, for example, a call to open a registry key followed by a call to query its value, or opening of a file and seeking to a particular offset.
- the translation system 100 maintains state information to associate API calls. For example, the translation system 100 may store a handle to a registry key when it intercepts a call to open the registry key for the purpose of associating it with a later call to query a value from the key. Prior to returning the retrieved configuration data, the translation component performs the appropriate transformations on the data, if any.
- the translation component 1 10 passes the call through to the API 150 and returns the result.
- the API 150 may access the configuration data store 140 directly to retrieve the configuration setting.
- the translation component 110 may record state information related to the call even though the call does not at that time identify configuration data managed by the translation system 100. For example, it may record a handle value when a call is made to open a registry key but return the result to the application unmodified.
- the translation component 110 determines that a call is directly requesting a configuration setting managed by the translation system 100, it uses the primary version mapping component 120, the translation definitions 125, and the transformations 130 to appropriately transform the intercepted request and/or the configuration setting from the primary format to a format expected by the version of the application from which the request was intercepted.
- the translation component 110 determines the user's primary version for the application.
- a user's primary version represents the version format (primary format) in which the user's configuration settings are stored for the application.
- an application may also consist of configuration settings specific to one or more of the user's groups, the machine itself, and/or other categories.
- the primary version mapping component 120 appropriately contains mappings for each of these types.
- the running application 135 may be version 3.0.
- the translation component 110 compares the primary format of the configuration setting to the version-specific format used by the version of the application from which the request was intercepted. Typically, when the version-specific format matches the primary format of the configuration setting, no transformation is necessary. When the version-specific format differs from the primary format, the translation component 110 may determine how to translate the requesting application's configuration setting request to a request for the version in which the configuration setting is stored (e.g., the primary version). In some embodiments, the primary version mapping component 120 indicates which translation definition 125 to use. The translation definitions 125 indicate which of the transformations 130 are to be used to convert an intercepted request and/or a configuration request from one version format to another.
- transformations 130 may include data manipulation transformations, calls to retrieve data from an alternate location, merging or splitting of data, or a combination of these.
- a transformation 130 may query the underlying configuration data store 140, and convert the retrieved data from one format to another.
- a data manipulation transformation may convert the value (data) of a configuration setting from a double word type to a string type.
- a transformation may be used to map the location of a configuration setting to a different location than that used by requesting application's version.
- the version mapping component 120 may indicate that application version 2.0's request to retrieve the setting HKEY_CURRENT_USER ⁇ application ⁇ 2.0 ⁇ wallpaper should use a transformation which indicates the setting should be retrieved from version 1.0 at the location HKEY_CURRENT_USER ⁇ application ⁇ 1.0 ⁇ wallpaper.
- This transformation would make a different call to read the underlying configuration data from a location other than the original call, but still return the result in response to the original call.
- a transformation 130 may transform metadata or return codes from the call. For example, in the user's primary version of an application, a setting may be defaulted if the key is not present, but in the requesting application's version, the setting is defaulted only if it is empty. In this case, the transformation modifies the result and the return code to simulate an empty key instead of returning an error.
- the translation component 110 if the translation component 110 in unable to process an intercepted request, the translation component 110 returns an error message to the interceptor component 105 and logs the request and/or other information describing the processing error for later troubleshooting.
- the translation component 110 may be unable to process a request, for example, if an exception is thrown in response to accessing a configuration setting.
- the action taken by the interceptor component 105 in response to a received error message is dependent on the API 150 that was intercepted.
- the interceptor component 105 may return the appropriate error code to the application.
- the interceptor component 105 may return an indication that the intercepted API 150 should continue its normal processing. Typically, an exception is not propagated back to the requesting application.
- the translation system 100 can seamlessly integrate the reading of settings in one version of an application with those stored using a different version.
- the translation system 100 may intercept and process other types of requests.
- an application 135n makes a call 165 to an API 150z to store configuration data.
- store refers to creation, modification, or deletion of a configuration setting.
- a program such as Microsoft Excel stores the user name and initials when the user modifies this setting using the Options menu.
- the interceptor component 105 behaves similarly to store requests as it does to read requests.
- the Microsoft Windows system registry API includes the following functions (among others) which control creating, modifying, and deleting of data:
- RegReplaceKey()/RegRestoreKey()/RegSaveKey()/RegSetValueO - modifies or creates keys or values
- the interceptor component 105 intercepts the store request 165.
- the translation component 110 determines the version of the application from which the request 165 was intercepted and searches the configuration settings catalog 115 to determine if the request is for a configuration setting managed by the translation system 100. In the illustrated example, if it is determined that the request 165 to store a configuration setting is one which corresponds to a configuration setting managed by the translation system, the translation component 1 10 performs the appropriate transformations on the intercepted request and/or the configuration setting, if any.
- the translation component 110 determines that a call is to store configuration data managed by the translation system 100, it uses the primary version mapping component 120, the translation definitions 125, and the transformations 130 to appropriately transform the requesting application's setting to the format of the primary version.
- the translation component 110 determines how to translate the requesting application's store request 165 to a store request for the primary version.
- the primary version mapping component 120 indicates which translation definition 125 to use.
- the translation definitions 125 identify transformations 130 to convert the intercepted request and/or the configuration setting from one version format to another. These transformations 130 may include data manipulation transformations, calls to store data at an alternate location, merging or splitting of data, or a combination of these.
- the version mapping component 120 may indicate that application version 2.0's request to store the setting HKEY_CURRENT_USER ⁇ application ⁇ 2.0 ⁇ wallpaper should use a transformation 130 which indicates the setting should be stored in a version 1.0 format at the location HKEY_CURRENT_USER ⁇ application ⁇ 1.0 ⁇ wallpaper.
- This transformation 130 (or another) would make a different call to store the underlying configuration data 170 at the translated location and return the result in response to the original call. It is noted that intermediate steps may occur prior to storing the configuration setting. For example, when a registry value is to be created, it may be necessary to first create its parent's keys.
- the primary version mapping component 120 indicates the requesting application version matches the primary version of the stored setting, no transformation is necessary and the call can proceed as normal.
- the result e.g., return code
- the interceptor returns the result to the requesting application 135n.
- the translation system 100 seamlessly translates the storing of configuration settings by one or more versions of an application.
- the translation system 100 may be implemented in a variety of environments including a single, monolithic computer system, a distributed computer system, as well as various other combinations of computer systems or similar devices connected in various ways.
- a variety of computing systems or other devices may be used in place of the applications 135a...135n, such as virtual machines, emulators, application servers, communications servers, database servers, file servers, game servers, etc.
- FIG. 2 is a flow chart of a process"200 showing steps performed by a translation system to install interceptors in one or more embodiments.
- the install interceptors process 200 is invoked by the translation system 100 before other code of an application is executed.
- the translation system 100 identifies the application that is to execute.
- the translation system 100 determines whether the identified application is a supported application.
- the term "supported application” is used to refer to an application for which the translation system is capable of translating a configuration setting between at least one or more version-specific formats of the application and/or an intermediate format.
- step 215 if the identified application is a supported application, then the translation system 100 continues to step 220, else the translation system completes the install interceptors process 200.
- An application may not have its configuration settings translated by the translation system 100 if, for example, the configuration settings catalog 1 15 does not include configuration settings for the application or if for some other reason the application is not to have its configuration settings translated.
- the translation system 100 determines whether interceptors have been installed to enable the interceptor component 105 to intercept the identified application's access to configuration settings.
- the translation system 100 completes the install interceptors process 200, else the translation system 100 continues to step 230.
- the translation system 100 installs interceptors for each function or API 150 used by the identified application to access configuration settings; then the translation system 100 completes the install interceptors process 200.
- the translation system 100 may install the code to intercept the invocation to a function by scanning the code of the address space of the application looking for identifying information (e.g., sequence of instructions) for the function.
- the translation system 100 may include an invocation to each function that is not actually executed and derive the location of the function from that invocation as established by the loader.
- the translation system 100 may use various techniques to install interceptors to intercept requests for configuration settings, such as, for example, those described in commonly-owned U.S. Patent No. 7,293,170 of R. Bowler et al., filed on October 13, 2005 and entitled "CHANGING THE PERSONALITY OF A DEVICE BY INTERCEPTING REQUESTS FOR PERSONALITY INFORMATION," which is hereby incorporated by reference.
- FIGS 3A-3C are a flow chart of a process 300 showing steps performed by a translation system in response to intercepting a request in one or more embodiment.
- the interceptor process 300 may be executed when a call to an instrumented API 150 is intercepted by the interceptor component 105.
- the interceptor process 300 performs the function of the intercepted API 150 by accessing the configuration data store 140 and completing the requested action associated with the configuration setting (e.g., read, update, etc).
- the configuration setting e.g., read, update, etc.
- step 301 if a request for configuration data is intercepted, then the translation system 100 continues to step 302, else the translation system 100 loops back to step 301.
- the translation system 100 determines the version of the application 135 from which the request was intercepted.
- the translation system 100 determines whether the intercepted request is for configuration data managed by the translation system 100. In some embodiments, to make this determination, the translation system 100 queries a configuration settings catalog 115. If the configuration setting is included in the configuration settings catalog 115, the translation system 100 may determine that it manages configuration setting. For example, each configuration setting may be uniquely identified in the configuration settings catalog 1 15 by its setting ID, the version of the application from which the request was intercepted and/or the location of the configuration setting indicated in the intercepted request. It will be appreciated that the location may be a string denoting a registry key, a path to a file, a path to a file with an offset, and so on.
- step 304 if the intercepted request is not for configuration data managed by the translation system 100, then the translation system 100 continues to step 305, else the translation system 100 continues to step 306.
- step 305 the translation system 100 returns an indication that the intercepted API 150 should continue its normal processing, and then the translation system 100 loops back to step 301.
- the intercepted API 150 should continue its normal processing, for example, because the configuration setting that the application 135 is requesting is not available for translation.
- the translation system 100 may record state information related to the request even though the request does not specify a configuration setting managed by the translation system 100. For example, it may record a handle value when a request is made to open a registry key that is not managed by the translation system 100.
- step 306 the translation system 100 determines the type of the request intercepted.
- the type of request intercepted is either a request to read or a request to update a configuration setting.
- the translation system 100 may intercept other types of requests (e.g., create, delete, merge, split, etc.) and, if desirable, transform the intercepted request and/or its associated configuration data.
- step 307 if the intercepted request is a request to read a configuration setting, then the translation system 100 continues to step 308 to process the read request ( Figure 3B), else the translation system 100 continues to step 317 to process the update request ( Figure 3C).
- step 308 the translation system 100 compares the request format used by the primary version of the application 135 to the request format used by the version of the application from which the request was intercepted. In step 309, if the primary format differs from the intercepted request format, then the translation system 100 continues to step 310, else the translation system 100 continues to step 311. In step 310, the translation system 100 selects a transformation 130 and applies the transformation to the intercepted request to translate the request from the format used by the version of the application from which the request was intercepted to the primary format. In step 31 1 , the translation system 100 retrieves the configuration setting.
- step 312 if the primary format of the retrieved configuration setting is the same as the version-specific format expected by the version of the application from which the request was intercepted, then the translation system 100 continues to step 313, else the translation system 100 continues to step 314.
- step 313 the translation system 100 returns the retrieved configuration setting to the requesting application. Then the translation system 100 loops back to step 301.
- step 314 the translation system 100 selects a transformation 130 to translate the retrieved configuration setting from the primary format to the version-specific format of the version of the application from which the request was intercepted.
- the translation system 100 may select a transformation 130 by, for example, querying the translation definitions 125 for a transformation 130 corresponding to the configuration setting, the primary format (source format), and the version-specific format (target format).
- step 315 the translation system 100 applies the selected transformation 130 to the retrieved configuration setting.
- step 316 the translation system 100 returns the translated configuration setting to the requesting application. Then the translation system 100 loops back to step 301.
- step 317 the translation system 100 compares the request format used by the primary version of the application 135 to the request format used by the version of the application from which the request was intercepted. In step 318, if the primary format differs from the intercepted request format, then the translation system 100 continues to step 319, else the translation system 100 continues to step 320. In step 319, the translation system 100 selects a transformation 130 and applies the transformation 130 to the intercepted request to translate the request from the format used by the version of the application from which the request was intercepted to the primary format. In step 320, if the version-specific format of the updated configuration setting is the same as the primary format, then the translation system 100 continues to step 321 , else the translation system 100 continues to step 322.
- step 321 the translation system 100 stores the updated configuration setting.
- step 322 the translation system 100 selects a transformation 130 to translate the updated configuration setting from the version-specific format to the primary format in which the configuration setting is stored.
- step 323 the translation system 100 applies the selected transformation 130 to the updated configuration setting.
- step 324 the translation system 100 stores the translated configuration setting. Then the translation system 100 loops back to step 301.
- Figures 4A-4D are table diagrams showing various information that is used by, and/or part of, a translation system.
- Figure 4A and each of the table diagrams discussed herein show a table whose contents and organization are designed to make them more comprehensible by a human reader.
- actual data structures used by the translation system 100 may differ from the tables shown. For example, they may be organized in a different manner; may contain more or less information than shown; may be compressed and/or encrypted; and so on.
- Figure 4A is a table diagram showing sample contents of a primary version table 400 that identifies the primary version of one or more applications for a user.
- the primary version table 400 is used by the primary version mapping component 120 to determine the primary version of an application for a user.
- a user's primary version may represent the version format in which the user's configuration settings are stored for the application.
- the primary version table 400 includes one or more entries 405. Each entry 405 may correspond to a single user, a group of users, a machine, and so on. Each entry 405 is divided into fields which contain information reflecting a user's primary version of an application.
- each entry includes a user ID field 410 that identifies a user; an application ID field 415 that identifies an application; and a primary version field 420 that identifies the primary version of the application for that user.
- the primary version of an application may be different for different users. For example, in the illustrated embodiment, entry 405a indicates that Jack's primary version of an application is V1 , while entry 405b indicates that Jill's primary version of the same application is V2.
- Figure 4B is a table diagram showing sample contents of a configuration settings catalog 1 15 that identifies, for each version of an application, the configuration settings managed by the translation system 100 in one or more embodiments.
- the configuration settings catalog 1 15 includes one or more entries 425.
- Each entry 425 corresponds to a configuration setting used by a particular version of an application.
- Each entry 425 is divided into fields which contain information reflecting the version-specific format of the configuration setting expected by that version of the application.
- the format of a configuration setting is represented by the type, location, name, value (data), configuration metadata, or any combination of these elements.
- each entry includes an application ID field 415 that identifies an application; a version ID field 430 that identifies a version of the application; a setting ID field 435 that identifies a configuration setting of the application; a type field 440 that identifies the configuration setting type expected by the corresponding version of the application; and a location field 445 that identifies the location at which the corresponding version of the application stores the configuration setting.
- the location field 445 of each entry 425 specifies a registry path.
- the location field 445 may specify other locations, such as, for example, a file path, an offset within a file, a database row, a function to calculate a location, and so on.
- the translation component 1 10 uses the configuration settings catalog 1 15 to determine whether a configuration setting that is associated with an intercepted request is managed by the translation system 100. For example, the translation component 1 10 may determine that a configuration setting is managed by the translation system 100 based on whether there is an entry 425 in configuration settings catalog 1 15 corresponding to the version of the application from which the request was intercepted and/or the location of the configuration setting indicated by the intercepted request.
- the translation component 110 uses the configuration settings catalog 115 to determine whether the primary version of an application specifies a configuration setting format that differs from the format expected by the version of the application from which a request was intercepted. For example, after the translation component 1 10 determines the version of the requesting application and the primary version of the application for the user, the translation component 110 may query the configuration settings catalog 1 15 to determine the configuration setting format expected by the primary version and requesting version of the application.
- entry 425a indicates that version 1 of the application expects the u_name configuration setting to have a binary type (REGJ3INARY), while entry 425b indicates that version 2 of the application expects the same configuration setting to have a string type (REG_SZ).
- the translation component 110 may select one or more transformations to translate the value (data) of the configuration setting from one type to another (e.g., a binary-to-string transformation).
- the translation component 1 10 may also apply transformations to translate the intercepted request. For example, if the primary version is version 1 and the intercepted request is received from version 2, the translation component may apply a location mapping transformation to translate the request to indicate the location 445 specified by entry 425a.
- the translation component 1 10 uses a translation definition 125 to determine whether the primary version of an application specifies a format that differs from the format expected by the version of the application from which the request was intercepted.
- Figure 4C is a table diagram showing sample contents of a translation definitions table 450, in one or more embodiments.
- the translation definitions table 450 identifies, for each configuration setting, a transformation to translate the configuration setting from a source format (e.g., the primary format) to a target format (e.g., a version-specific format). The existence of a transformation may be used to indicate that the primary format differs from the version-specific format.
- the translation definitions table 450 includes one or more entries 455.
- Each entry 455 corresponds to a configuration setting of an application.
- Each entry 455 is divided into fields which contain information identifying a source version, a target version, and a transformation for translating the configuration setting between the corresponding source and target versions of an application.
- each entry includes an application ID field 415 that identifies an application; a setting ID field 435 that identifies a configuration setting of the application; a source version field 460 that identifies the format of the configuration setting from which the configuration setting is translated; a target version field 465 that identifies the format of the configuration setting to which the configuration setting is translated; and a transform ID field 470 that identifies a transformation 130 capable of translating an intercepted request and/or a configuration setting from a ⁇ format used by the source version 460 to a format used by the target version 465.
- the translation definitions table 450 when the format of a configuration setting is the same for both the source and target versions of an application, stores an indication that no transformation is necessary to complete an intercepted request for that configuration setting. For example, in the illustrated embodiment, entries 455a and 455b each list a transform ID 470 of zero, indicating that no transformation is necessary for the ujnitial configuration setting when the source version of the application is V1 and the target version is V2, and vice versa.
- the translation system includes, or interacts with, an authoring component to generate translation definitions entries 455.
- the authoring component may be used to observe and analyze an application's access to configuration data and/or the application's run-time behavior to identify which accessed configuration settings correspond to standard and/or user-specific configuration settings.
- the authoring may use various techniques to identify such configuration settings, such as, for example, those described in commonly-owned U.S. Patent Application No. 12/367,718 of M. Lanner et al., filed on February 9, 2009 and entitled "AUTOMATIC ANALYSIS OF AN APPLICATION'S RUN-TIME SETTINGS,” which is hereby incorporated by reference.
- the authoring component stores an indication of the identified user-specific configuration settings in a configuration data table.
- Figure 4D is a table diagram showing sample contents of a configuration data table 475 in one or more embodiments.
- the configuration data table 475 includes one or more entries 480.
- each entry 480 corresponds to a configuration setting established by a user (or an organization) for an application.
- each entry includes a user ID field 410 that identifies a user; an application ID field 415 that identifies an application; a setting ID field 435 that identifies a configuration setting of the application; and a data field 485 that identifies the value of the configuration setting.
- the data 485 is stored in the configuration data table 475 in the primary format identified for the user.
- the authoring component determines how each configuration setting in the configuration data table 475 is defined for one or more versions of the application. For example, the authoring component may determine the location at which a configuration setting is stored, the configuration setting name, type, and so on for each version of the application.
- the authoring component may include a user-interface to receive a request to monitor an application for configuration settings and/or to receive a selection of one or more versions of an application for which translation definitions 455 are to be generated.
- the authoring component launches the selected version of the application and manipulates the configuration setting while monitoring the application's access to the configuration setting.
- the authoring component may be used to manipulate any number of configuration settings. However, to facilitate description, it is assumed that the authoring component separately manipulates each configuration setting.
- the authoring component may include a script to launch Excel 2003 and set a user name to indicate the identity of a user operating the application. To set the user name, the script launches the application, selects the "Tools” menu, selects the "Options" menu item, selects the "General” tab, enters a name in the "User name” field, and selects the "OK” button.
- the authoring component may determine that the Excel 2003 stores the entered name as the value (data) of the UserName registry key, which has a REG_BINARY type (binary format), and which is stored at:
- the authoring component may compare the configuration setting attributes for each selected version of the application and identifies one or more transformations 130 that are capable of converting the attributes, if necessary, to and from each selected version.
- the authoring component generates a translation definition entry 455 for each selected version of the application as the source version and the other versions as the target versions.
- the translation definition table 450 may include each generated translation definition entry 455, or a selection of the generated entries 455.
- the translation definition table 450 may store only those entries 455 whose source version 460 or the target version 465 correspond to a primary version 420 of an application.
- the translation system includes, or interacts with, a settings upgrade component that is used to change the primary version 420 of an application for a user, a group of users, and so on.
- a settings upgrade component that is used to change the primary version 420 of an application for a user, a group of users, and so on.
- the primary format for configuration settings of Microsoft ® Excel is the format used by the 2003 version of Excel and a company upgrades its employees' computers within the finance department to Excel 2007,
- the setting upgrade component may be used to change primary format for those employees' configuration setting from the format used by the 2003 version of Excel to the format used by the 2007 version of Excel.
- the settings upgrade component may also change the primary version 420 of the application indicated in the primary version table 400 for the user.
- FIG. 5 is a flow chart of a process 500 showing steps performed to upgrade the primary format in which configuration settings are stored for an application in one or more embodiments.
- the upgrade process 500 may be performed for a single user, for a group of users, and so on. However, to facilitate description of the illustrated embodiment, it is assumed that the upgrade process 500 is performed for a single user.
- the settings upgrade component receives a request to change the current primary version of an application to an identified version of the application for a user. For example, the settings upgrade component may receive a request to change the current primary version of Excel to Excel 2007 for a user, or group of users, listed in the primary version table 400.
- the settings upgrade component loops through each configuration setting of the application that is included in the configuration settings catalog 115 in steps 510-555.
- the configuration settings catalog 115 may not include entries 425 for the identified version of the application.
- the settings upgrade component may call the authoring component to determine the format of each configuration setting in the identified version and/or to generate catalog entries 425 for configuration settings of the application.
- step 510 the settings upgrade component selects a configuration setting.
- the settings upgrade component loops through each version of the application supported by the translation system for the selected configuration setting in steps 515-540.
- step 515 the settings upgrade component selects a version of the application.
- step 520 if the translation definition table 450 does not include an entry 455 listing the identified version as the source version 460 and the selected version as the target version 465, then the settings upgrade component continues to step 525, else the settings upgrade component continues to step 530.
- the settings upgrade component updates the translation definition table 450 to identify a transformation 130 to translate the format of the selected configuration setting from the identified version format (source format 460) to the version-specific format of the selected version, of the application (target format 465), if any.
- the settings upgrade component may update the translation definition table 450 by querying the configuration settings catalog 115 to determine the type of the selected configuration setting used by the identified version of the application (e.g., REG_BINARY) and/or the type used by the selected version of the application (e.g., REG_SZ), and then creating an entry 455 that identifies the appropriate transformation 470 (e.g., binary-to-string).
- the settings upgrade component updates the translation definition table 450 to include an indication that no transformation is needed to translate the selected configuration setting between the identified version and the selected version of the application.
- translation definitions entries 455a and 455b identify that the ujnitial configuration setting does not require translation between V1 and V2 of the application.
- step 530 if the translation definition table 450 does not include an entry 455 listing the selected version as the source version 460 and the identified version as the target version 465, then the settings upgrade component continues to step 535, else the settings upgrade component continues to step 540.
- step 535 the settings upgrade component updates the translation definition table 450 to identify a transformation 130 to translate the format of the selected configuration setting from the version-specific format of the selected version (source format 460) to the format of the identified version of the application (target format 465), if any.
- the settings upgrade component may update the translation definition table 450 by querying the configuration settings catalog 115 to determine the type of the selected configuration setting used by the selected version of the application (e.g., REG_SZ) and/or the type used by the identified version of the application (e.g., REG_BINARY), and then creating an entry 455 that identifies the appropriate transformation 470 (e.g., string-to-binary).
- the settings upgrade component selects the next version and continues at step 515, else the settings upgrade component continues to step 545.
- step 545 if the current primary format of the selected configuration setting differs from the format used by the identified version, then the settings upgrade component continues to step 550, else the settings upgrade component continues to step 555.
- step 550 the settings upgrade component converts the selected configuration setting from the primary format to the format used by the identified version.
- step 555 if any configuration settings of the application have not been upgraded, then the settings upgrade component selects the next configuration setting and continues at step 510, else the settings upgrade component continues to step 560.
- step 560 the settings upgrade component changes the stored indication 420 of the primary version of the application from the current primary version to the identified version. Then the upgrade process 500 completes.
- Figure 6 is a block diagram showing components of a computer on which a translation system, a settings upgrade component, and/or an authoring component execute in one or more embodiments. It is noted that certain well-known structures and functions have not been shown or described in detail to avoid obscuring the description.
- the computer includes one or more processors 600 and memory 605 coupled to an interconnect system 610.
- the interconnect system 610 shown in Figure 6 is an abstraction that represents any one or more separate physical buses and/or point-to-point connections, connected by appropriate bridges, adapters and/or controllers.
- the interconnect system 6 0 may include, for example, a system bus, a form of Peripheral Component Interconnect (PCI) bus, a HyperTransport or industry standard architecture (ISA) bus, a small computer system interface (SCSI) bus, a universal serial bus (USB), or an Institute of Electrical and Electronics Engineers (IEEE) standard 1394 bus (sometimes referred to as "Firewire").
- PCI Peripheral Component Interconnect
- ISA HyperTransport or industry standard architecture
- SCSI small computer system interface
- USB universal serial bus
- IEEE Institute of Electrical and Electronics Engineers
- the processors 600 are the central processing units ("CPUs") of the computer and, thus, control its overall operation. In some embodiments, the processors 600 accomplish this by executing software stored in memory 605.
- the computer includes a processor 600 having two or more independent cores in a package composed of a single integrated circuit (referred to as a "die"), one or, more dies packaged together, multiple packages, and so on.
- the computer includes a hyper-threaded processor that, despite having only a single core, is capable of performing as a multi-core processor.
- a processor 600 may be, or may include, one or more programmable general-purpose or special-purpose microprocessors, digital signal processors ("DSPs”) programmable controllers, application specific integrated circuits ("ASICs”), programmable logic devices (“PLDs”), or the like, or a combination of such devices.
- DSPs digital signal processors
- ASICs application specific integrated circuits
- PLDs programmable logic devices
- Memory 605 includes the main memory of the computer.
- Memory 605 includes any form of volatile, nonvolatile, removable, and non-removable computer- readable storage media, or any combination of such media devices that are capable of storing information such as computer-readable instructions, data structures, program modules, or other data.
- Memory 605 stores (among other things) an operating system 615.
- the operating system 615 may be a Microsoft Windows® operating system, a Linux operating system, a Mac OS, or the like. It is noted that the translation system, the settings upgrade component, and the authoring component do not depend on the operating system 615 implemented by the computer.
- Internal storage devices 620 may include volatile (e.g., RAM), nonvolatile (e.g., ROM, Flash, etc.), removable, and non-removable computer- readable storage media, or any combination of such media devices that are capable of storing information such as computer-readable instructions, data structures, program modules, or other data. It is further noted that the term storage medium may refer to a physical or a virtualized computer-readable storage medium.
- the storage adapter 625 allows the computer to access one or more storage subsystems and may be, for example, a Fibre Channel adapter, a USB adapter, a SCSI adapter, eSATA adapter, or the like.
- the network adapter 630 provides the computer with the ability to communicate with remote devices over a network and may be, for example, an Ethernet adapter, a Fibre Channel adapter, or the like.
- the computer may include one or more input/output (I/O) devices (e.g., keyboard, mouse, microphone, display, printer, etc.) that allow a user to access programs and/or data stored in memory 605 of the computer, even though it is not illustrated as such in Figure 6.
- I/O input/output
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
Description
Claims
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/020133 WO2012093996A1 (en) | 2011-01-04 | 2011-01-04 | Virtualization of configuration settings |
Publications (2)
Publication Number | Publication Date |
---|---|
EP2661688A1 true EP2661688A1 (en) | 2013-11-13 |
EP2661688A4 EP2661688A4 (en) | 2016-01-06 |
Family
ID=46457637
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP11855097.9A Withdrawn EP2661688A4 (en) | 2011-01-04 | 2011-01-04 | Virtualization of configuration settings |
Country Status (2)
Country | Link |
---|---|
EP (1) | EP2661688A4 (en) |
WO (1) | WO2012093996A1 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210069861A (en) * | 2019-12-04 | 2021-06-14 | 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. | Providing application configuration file for backward compatible application |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020026436A1 (en) * | 2000-08-31 | 2002-02-28 | Rafael Joory | Supplanting application setup data and preserving the application setup data that has been supplanted |
US7707547B2 (en) * | 2005-03-11 | 2010-04-27 | Aptana, Inc. | System and method for creating target byte code |
US7840942B2 (en) * | 2006-11-29 | 2010-11-23 | International Business Machines Corporation | Configuration file sharing |
US7860887B2 (en) * | 2007-02-20 | 2010-12-28 | The Invention Science Fund I, Llc | Cross-media storage coordination |
US9063765B2 (en) * | 2008-04-28 | 2015-06-23 | Kaazing Corporation | System and methods for distributed execution of computer executable programs utilizing asymmetric translation |
-
2011
- 2011-01-04 WO PCT/US2011/020133 patent/WO2012093996A1/en active Application Filing
- 2011-01-04 EP EP11855097.9A patent/EP2661688A4/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
EP2661688A4 (en) | 2016-01-06 |
WO2012093996A1 (en) | 2012-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8464242B2 (en) | Virtualization of configuration settings | |
US9940330B2 (en) | System and method for converting a physical disk to a virtual disk | |
US9880889B2 (en) | Virtual application extension points | |
US8677345B2 (en) | System for creating virtual application, method for installing virtual application, method for calling native API and method for executing virtual application | |
CA2645708C (en) | Virtual machine configuration system | |
CN101329636B (en) | Method and apparatus for virtualizing window information | |
US8543641B2 (en) | Method and system of application delivery through application template to client device | |
KR101836058B1 (en) | Extension point declarative registration for virtualization | |
US20100205604A1 (en) | Systems and methods for efficiently running multiple instances of multiple applications | |
US8346854B2 (en) | Method and system of operating system independence | |
US9547499B2 (en) | Device configuration with cached pre-assembled driver state | |
US11995449B2 (en) | Layered composite boot device and file system for operating system booting in file system virtualization environments | |
US6944620B2 (en) | File system creator | |
US10514940B2 (en) | Virtual application package reconstruction | |
WO2012093996A1 (en) | Virtualization of configuration settings | |
CN117472458B (en) | System function optimal configuration method and device, electronic equipment and storage medium | |
Waldén | Customizing BIOS/UEFI From OS Using EFI Variables | |
CN117234662A (en) | Virtual machine configuration method, device, equipment and storage medium | |
TW202238379A (en) | Method, device, and computer program product for composing modular firmware |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
17P | Request for examination filed |
Effective date: 20130801 |
|
AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR |
|
DAX | Request for extension of the european patent (deleted) | ||
RA4 | Supplementary search report drawn up and despatched (corrected) |
Effective date: 20151207 |
|
RIC1 | Information provided on ipc code assigned before grant |
Ipc: G06F 9/45 20060101AFI20151201BHEP |
|
17Q | First examination report despatched |
Effective date: 20170619 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN |
|
18D | Application deemed to be withdrawn |
Effective date: 20200801 |