US 20050193032 A1
A process is provided for facilitating the migrating of a user's overall software environment from a first computer to a second computer. The process includes enhancing the operating system on the computer or adding additional functionality to the original and new computers such that software products are identified and their subsequent operation tracked. This tracking operation is used to identify user data files and other files, settings and data which might be potentially moved to the new computer. The method then causes the appropriate programs, settings and files to be packed and moved. The files and programs are unpacked, and the new computer is ready for use such that its appearance and operating environment are identical to that of the original computer.
1. A method for transferring a user's software operating environment from a first to a second computer, the method comprising the steps of:
identifying on the first computer, substantially those software products having software product files and product data files requiring to be prepared for future migration;
packing the software product files and the product data files to be moved;
moving the software product files and the product data files to the second computer, excepting files that are manually excluded; and
unpacking the moved software product files and the product data files onto the second computer.
2. The method of
3. The method of
4. The method of
5. The method of
6. The method of
7. The method of
8. The method of
9. The method of
10. The method of
11. The method of
12. The method of
13. The method of
14. The method of
15. The method of
16. The method of
17. The method of
18. A system for transferring a user's software operating environment from a first to a second computer, the system comprising:
identifying software that serves to substantially automatically identify those software products which define the operating environment, said software products having software product files and product data files requiring to be prepared for future migration, said identifying software being selectively operable during installation of said software product files and said product data files on the first computer;
packing software that packs the software product files and the product data files to be moved;
moving software that moves the software product files and the product data files to the second computer, excepting files that are manually excluded; and
unpacking software that unpacks the moved software product files and product data files onto the second computer.
19. A software product with a facility for migrating the operation and functionality of the software product from a first to a second computer, the software product comprising:
software product files which define the operation and functionality of the software product;
packing software operable for identifying the software product files requiring to be transferred to the second computer in a future migration; and
interface software for interfacing the packing software with other software that is instrumental in facilitating the migration of the software product to the second computer.
20. A method for migrating the operation and functionality of a software product from a first to a second computer, the method comprising the steps of:
identifying on the first computer, substantially those software product files and product data files of said software product requiring to be prepared for future migration;
packing the software product files and product data files to be moved;
moving the software product files and the product data files to the second computer, excepting files that are manually excluded; and
unpacking the moved software product files and the product data files onto the second computer.
This application is a continuation of U.S. application Ser. No. 09/566,326 filed May 5, 2000 entitled METHOD FOR MIGRATING FROM ONE COMPUTER TO ANOTHER (now U.S. Pat. No. 6,889,376), which claims the benefit of and is entitled to the filing date of U.S. Provisional Application Ser. No. 60/133,728 filed May 12, 1999, and entitled “METHOD FOR MIGRATING FROM ONE COMPUTER TO ANOTHER”, the contents of which are incorporated by reference herein.
The present invention relates to a method for software and data transfer between computers, and more particularly to migrating software and data, including configuration data, from a present computer system to a second computer system.
As used herein, migration should be understood to encompass the process of replicating the functionality or capability in the second computer, and not the cloning, as such, of software and data. Thus, the process of transporting only a user's data files associated with a particular software product to a second computer that already has, or will have, a version of that software product installed is the same as also having transported the software product. Also, as used herein, references to a “current” computer means the first or original computer and references to “another” or “new” computer means a second computer to which a user wishes to migrate. The word “new” is not intended to mean only a computer which was previously unused by anyone, but rather that it is the terminus of the migration which begins with the “current” computer. Thus, a “new” computer can be previously used, and can even have been previously used by the individual utilizing the migration process.
Also, it should be understood that the term “software product” as used herein means an executable program, program libraries, installation files, configuration data, and ancillary programs including a suite of such items, shareware, freeware, & user written software.
A computer user might need to migrate from one computer to another for a variety of reasons such as (but not limited to):
A computer user replacing his present system with another one faces an awkward and intractable problem: transferring important software and data from the current computer to the new one completely, without violating any software licenses and without unintentionally overwriting or corrupting newer versions of the same software. This problem typically arises in a graphical user interface environment such as a personal computer (PC) running a Microsoft WINDOWS operating system (such as Windows 3.1, Windows 95, Windows 98, Windows 2000, Windows NT, or any successor operating system), hereinafter referred to simply as “WINDOWS” or “Windows.” References made herein to “operating system” include WINDOWS as well as other operating systems.
The important software and data requiring transfer falls into three broad categories as follows.
(1) Operational data settings that affect the operation of one or several programs. For example, parameters governing the operation of a modem, Internet access information such as telephone numbers, user IDs, passwords, etc., user-specific defaults for the operation of applications such as word processors and spreadsheets, national language and currency preferences, and the like.
(2) User data files or records that are typically explicitly created by a user and contain data of interest to the user. For example, electronic documents created by the user in a word processor, electronic mail system, etc., electronic spreadsheets, contact information created in a contact manager, personal financial information created in a financial management system, and Internet “bookmarks” (i.e., address information of World Wide Web sites saved by the user).
In practice, data in these first two categories are often stored in separate files. For example, a word processor typically stores some data affecting how a document is to be processed in a file a user would consider to be his own user data—the document file itself. Conversely, an electronic mail system may use a single file to store many types of data including operational data, the user's electronic mail messages and address book, etc.
(3) Programs such as directly executable software or installation files for software products. Not all of the software programs the user may want to use and is entitled to use on the new system may be preinstalled on that system. In some cases, a user may have the original distribution media such as the compact disc (CD), diskette, etc., for some software products on the current system and can therefore reinstall them on the new computer. In other cases, however, the software may have been downloaded from an Internet Web site, received via electronic mail or transferred directly from another computer. In still other cases, bug fixes and upgrades may have been applied to the executable files on the user's system after the product was installed such that the user's distribution media no longer contains the current version of the product. In all of these cases it is necessary for the user to ultimately decide how each software product and data is to be migrated to the new computer.
There is no convenient and reliable way available to users to transfer all such information in an orderly fashion when moving from the present computer to a new one. There are several reasons for this problem, described as follows.
There are some products that may be regarded as related in some way to the present invention. A few products that may be regarded as related are discussed briefly below.
DRIVECOPY (POWEROUEST): According to vendor's product literature, “DRIVECOPY(tm) 2.0 by POWERQUEST is an easy to use utility for copying an old drive to a new drive. With a few simple steps the old hard drive is automatically copied to the new one without losing a single preference, setting or byte of data.”
The problem with this type of product is that cloning a hard drive is most suitable for situations where a complete move to a new or temporary computer is necessary. This product produces an exact clone, including all software, settings, etc, whether needed or not. It does not provide for the installation of software products, license transfers, changes in program settings, i.e., the WINDOWS registry, segregation by user, and synchronization of data files (if a reverse move is required).
NORTON GHOST (SYMANTEC): NORTON GHOST provides disk cloning. It “works by creating an exact image of a PC's hard drive, effectively taking a “snapshot” of all the files—hidden, visible, and active—that make up the operating system, applications, and configuration settings. The image can then be copied to any number of PCs, thereby creating completely identical installations.”
Here too, this product is most effective in cloning a new system and not for migrating software and data in an orderly manner. NORTON GHOST has the same disadvantages as those described with respect to POWERQUEST'S DRIVECOPY.
LAPLINK PRODUCTS (TRAVELING SOFTWARE): TRAVELING SOFTWARE markets a number of related products for file transfer and remote access. For example, “LapLink Professional frees you to maximize productivity wherever you are, by providing complete access to your office PC.” LAPLINK PROFESSIONAL is “remote control and file transfer software.”
This product is intended to provide file transfer capabilities to a user. However, the user is ultimately responsible for determining which files should be transferred, synchronization with out-of-date data files, etc. The product does not transfer any settings or personalization not kept in files, such as information in the WINDOWS registry. The transfer and successful re-installation of software products is problematic for all of the reasons previously mentioned. Licensing is also not addressed by this product.
JAVA SERIALIZATION: “To serialize an object means to convert its state into a byte stream in such a way that the byte stream can be reverted back into a copy of the object. A Java object is serializable if its class or any of its superclasses implements either the java.io.Serializable interface or its subinterface java.io.Externalizable. Deserialization is the process of converting the serialized form of an object back into a copy of the object.”
Serialization is a good method for enabling file transfer and archival of objects of different content and format. This too does not take into account the previously mentioned special considerations which are necessary to migrate software products.
UNINSTALLERS: Some uninstallers such as UNINSTALLER DELUXE by MCAFEE provide some capability to “uninstall” a product from one computer and then reinstall the product on another computer. To do so, such an uninstaller relies on information placed by software products in the WINDOWS registry. Such functionality is very much an afterthought for such products, and is very limited. Because the information placed in the WINDOWS registry is not architected for the purpose of uninstalling and reinstalling, this information is not complete or reliable. If the user has moved his settings data out of the subdirectory (folder) that contains the executable program files themselves, the uninstaller will likely be unable to find and move such data. Also, these types of uninstallers are not designed to handle all of the products, or a user-specified set of products, installed on a computer at one time. Rather, these products are only capable of handling uninstallation on a product-by-product basis. In addition, current uninstallers are not designed to handle the user's data files associated with the product being uninstalled.
Other uninstallers, such as NORTON CLEANSWEEP DELUXE by SYMANTEC and REMOVE-IT 98 by QUARTERDECK, are designed to provide clean-up and system tuning functions by removing unnecessary files and programs and correcting erroneous system configuration data. These types of uninstallers rely heavily upon the WINDOWS registry and the conventions established for installing and using WINDOWS software. Therefore, the handling of questionable files results in the user being required to make the final decision to proceed.
UPDATERS: Software products such as OIL CHANGE by MCAFEE are intended to use the Internet to determine whether updates are available for various installed software products. “Oil Change finds these updates from all over the Internet and installs them for you automatically.” To do so, such a product relies on information placed by software products in the WINDOWS registry and conventions established for using such software. Such functionality is very much an afterthought for such products, and is very limited. Because the information placed in the WINDOWS registry is not architected for the purpose of version control, this information is not complete or reliable. Some software products create their own private registries, in which case the updater will likely be unable to find and update such data if the user has moved his settings data out of the subdirectory (folder) that contains the executable program files themselves.
Thus, there are numerous reasons why migrating from a current computer system to another one is problematic. It is desirable to have a system and process to ease migration from one computer to another.
It is an object of the present invention to provide a method and system for migrating software and data from an original computer to a second computer such that a user's operating environment as established on the original computer is preserved and available on the second computer. The method operates so as to minimize the knowledge and expertise required of the user by integrating the migration steps into the operating system and software products, and/or by only requiring the user to make simple choices regarding which programs and files to migrate.
The migration process steps include identifying the software product and data files eligible for migration during the installation of the software product on the current computer, tracking data files created or operated on by the software product on the current computer, packing the software and data files to be moved and moving them to the second computer, and unpacking the moved files on the second computer. Packing the files can include compressing or encrypting the files and copying them to a movable storage medium, or can include transferring the files to the second computer via a data communications network such as the Internet.
It is another object of this invention to provide a method for migrating software products according to their licensing terms and conditions. Migration can be effected by licensing terms and conditions such that software is moved only when permitted by the terms of its license, software is removed or disabled on the current computer according to its license terms, a software product is upgraded according to its license terms, and applicable updates (corrections) are provided to the software product in accordance with its licensing terms.
Some of these features, including license analysis and software updates, typically involves using a network to access a repository such as a vendor website, license clearinghouse, etc., to achieve their functionality.
Other features and advantages of the present invention will become apparent from the following description of the invention which refers to the accompanying drawings.
For the purpose of illustrating the invention, there is shown in the drawings a form which is presently preferred, it being understood, however, that the invention is not limited to the precise arrangement and instrumentality shown.
The present invention is designed to make it easy to migrate a single, several or enough software products so as to replicate its or their existing software operational environment (at an existing computer), to a second, different computer.
Although the present invention is preferably applied to a personal computer, and more preferably personal computers running WINDOWS, it is equally applicable to higher capacity computers such as computers running a version of the UNIX operating system and mainframe computers.
The invention includes the following programs and other elements. (Some of these elements are optional, and some may be provided as a part of other computer programs, such as the operating systems in some cases, and in other cases, by the software product to be migrated. Also, the separation of the invention into these separately named elements is for convenience and clarity only; the invention may be implemented with several such elements combined into a single element, or any one element may be implemented as several separate elements.)
The KNOWLEDGE BASE is a collection of data, possibly stored in a database or table, providing information about software products, associated executable files, control files, data types, etc.
The DIRECTORY is a collection of data, possibly stored in a database or table, that contains information about the software products installed on a particular system, such as where the executable files, control files, and associated user files are located.
For the purposes of the present invention, the list of software products considered to be installed on a computer includes the operating system itself, even if the user receives the computer with the operating system preinstalled, and even if the operating system is installed in a non-standard way. The determination of what operating system is installed could be done in a number of ways. Preferably, it is written to the MOVING VAN, a component of the present invention, as part of the migration.
In a preferred embodiment, the DIRECTORY is implemented as an integral part of the operating system's own product directory (the OSPD), such as (on WINDOWS) the Registry. The DIRECTORY can also be implemented as an extension to the OSPD, a table linked to the OSPD, or an entirely separate file, database, etc.
The PACKER is a program (typically supplied by the software product to be moved) that passes to the LOADER a list of the executable files and control information, and optionally supplies versions of the files in a special format, for example, compressed and renamed, for use by the UNPACKER or other installation facility; written to conform to specifications provided by the present invention for such a program, or based on a model for such a program supplied as part of the present invention.
The UNPACKER is an optional program (typically supplied by the software product to be moved) that unpacks the executable files and control information; written to conform to specifications provided by the present invention for such a program, or based on a model for such a program supplied as part of the present invention.
The PACKER and UNPACKER for each software product can be identified in any of a variety of ways, such as establishing a naming convention for the executable files themselves. For example, the PACKER is always named “packer.exe” and the UNPACKER is always named “unpacker.exe”. Other methods and conventions will be apparent to those skilled in the art.
In an alternative embodiment, the PACKER and the UNPACKER are both facilities of the operating system. In this case, what is identified in the DIRECTORY is the file or files containing the specifications of what is to be packed (and later unpacked), with appropriate parameters, rather the program doing the packing.
In the embodiment as described, the LOADER and UNLOADER optionally handle user data files. In an alternative embodiment, the PACKER and the UNPACKER also handle user data files. In this case, the functionality described as part of the LOADER and the UNLOADER are assumed by the PACKER and UNPACKER. In a variation of this embodiment, the PACKER and UNPACKER can handle some user data files (for example, those known to the software product), and the LOADER and UNLOADER other user data files (for example, by surveying the original computer to find files of the appropriate types not already packed by the PACKER).
The LOADER—a program, preferably a facility of the operating system, that manages the process of invoking the PACKER for each program to be moved, and writes the files specified by the PACKER into the Moving Van. The LOADER also performs various other functions, as described in more detail below. The LOADER is invoked via a command, a menu option, a separate program, a screen icon, or the like.
The Installation/Uninstallation Tracker (TRACKER) is a program, preferably a facility of the operating system, that monitors the installation and uninstallation of software products to capture relevant information.
The Execution Monitor (MONITOR) is a program, preferably a facility of the operating system, that watches the execution of software products to capture relevant information such as the creation, deletion, and moving of software product data files and user files created using the program. If the system supports multiple users or groups of users, the Execution Monitor keeps track of this information by user or user group.
The REGISTRY READER is a program that reads the Registry (or equivalent facility in operating systems other than WINDOWS) to determine what software products are installed. For computers upon which a license manager is installed, the REGISTRY READER also obtains relevant information from the license manager such as what software products are installed and what the applicable license rights are (and, possibly, other information, such as where the products are installed).
The SURVEYOR is a program that surveys the storage media of the computer to locate and identify executable files associated with software products.
The UNLOADER is a program, preferably a facility of the operating system, that executes on the new computer to read the contents of the MOVING VAN, optionally invoking the UNPACKER of each product, and installs the software products. The UNLOADER also performs various other functions, as described in more detail below. The UNLOADER is invoked via a command, a menu option, a separate program, a screen icon, or the like.
The DELETER is a program, preferably a facility of the operating system, that executes on the current computer, with or without user interaction and confirmation, to uninstall the programs that were packed and delete those files that were packed, as appropriate. As explained further below, the DELETER can run as part of the packing and loading process, as part of the unloading and unpacking process (if the original computer is accessible while the UNLOADER is processing) or as a separate process some time after the unloading process has occurred.
The MOVING VAN is a collection of data pertaining to the software products to be moved (possibly including the executable files, control files, user data files, licenses, etc.) in a format suitable for use by the UNLOADER. The MOVING VAN can be written on transportable media such as diskette, CD, tape or tape cartridge; can be written on a storage device accessible via by both the current computer and the new computer via a network such as the Internet; can be written as a data stream sent via a network such as the Internet to the new computer; can be written as a temporary file and sent as a message, attachment, or FTP to the new computer. Transportable media or means of transport includes magnetic tape, diskette, CD, or other removable data storage device. Transportable media or means of transport also includes a file or a collection of files stored or sent electronically, including via the Internet, electronic mail, or cable, whether sent directly to the new computer or sent via an intermediary such as a network server, Internet web address, etc. The MOVING VAN can consist of a database, a collection of files, a collection of files within one or more directories or a single file. Also, the MOVING VAN can optionally incorporate data compression and/or encoding or encryption. The MOVING VAN includes a PACKING LIST, which consists of a record of each software product in the MOVING VAN, along with whatever flags and annotations may be necessary or convenient to facilitate the migration. The PACKING LIST can be a directory, a single file, a portion of another file, or a portion of a database. The name of the MOVING VAN can be predefined and known to the UNLOADER, or the user can identify the Moving Van to the UNLOADER through any of a variety of techniques, such as selecting a file name from a selection list.
Migrating involves activities that must occur during several phases. As shown in
Each phase will now be described in detail.
(A) Determining the Software Products Installed and their PACKERs 28 and UNPACKERs 30 (
In most modern computers, a software product is typically installed by executing a program (for example, in WINDOWS such a program is typically named “SETUP.EXE”) created by the software developer using a special facility for this purpose. (Two such facilities, for example, are Wise for Windows Installer from Wise Solutions and InstallShield from InstallShield Software Corporation.) Such a program typically interacts with one or more defined facilities in the operating system.
Depending on whether the present invention is implemented wholly or partly as a facility of the operating system, there are several ways in which this phase is accomplished. In the preferred embodiment (
The activity of uninstallation must also be tracked so that the DIRECTORY 22 is an accurate reflection of what products are actually installed on the computer.
If the TRACKER 36 is not implemented as a facility of the operating system, a number of alternative, less preferable, implementations are possible. For example, the TRACKER 36 could be implemented as a resident program that monitors the activities of the operating system; could be implemented as a modification or add-on to the operating system; or in other ways involving interaction with installers and uninstallers.
(B) Determining the Software Products Installed and their PACKERs and UNPACKERs After Installation and Uninstallation
If the TRACKER is not implemented as a facility of the operating system, a resident program, a modification or add-on to the operating system, or other ways involving interaction with installers and uninstallers, the determination of what software products are installed and their PACKERs and UNPACKERs can be made after-the-fact, at any time, in several ways, including:
(C) Tracking the Execution of Software Products on the Current Computer.
Typically, when a software product creates, modifies, reads, displays, or deletes a file, it passes information about the file to the operating system. This information includes file name, directory (folder), size, date of access, nature of access such as creation, modification, read, display, delete, and the like.
In the preferred embodiment (
In less desirable embodiments, the MONITOR 38 is implemented as a resident program, as a modification or add-on to the operating system, and in other less desirable ways.
(D) Packing and Loading
When a user decides that she wants to move from her current computer to a new computer, she invokes the LOADER 32, which is, in the preferred embodiment (
Optionally, the LOADER 32 creates and maintains a log of its activities.
(E) Unloading and unpacking
On the new computer, the user invokes the UNLOADER 34. The UNLOADER opens the MOVING VAN 26 and reads the PACKING LIST 48 to determine what software products have been loaded.
In a preferred embodiment (
All of the operations described below are optional, such that not every operation is required during a migration. Also, the operations described below need not necessarily be performed in the exact order given here.
For each software product, the UNLOADER 34 performs the following operations:
The UNPACKER 30 can be invoked by the UNLOADER 34 in different modes:
The UNLOADER 34 (or the UNPACKER 30) can add or update annotations in the PACKING LIST 48. The UNLOADER 34 can optionally create and maintain a log of its activities.
In an alternative embodiment, some or all of the software products in the MOVING VAN 26 are not fully installed by the UNLOADER 34, and the activity log indicates to the user which installation or setup programs are to be executed by the user after the UNLOADER 34 has finished executing.
(E) Cleaning Up on the Current Computer
If it has not been done as part of the packing and loading or unloading and unpacking processes, the DELETER 46 is invoked on the original computer. There are a number of ways in which the DELETER 46 can be initiated. For example, it can be invoked directly by the user; the LOADER 32 can schedule it to run on the original computer at a particular time (for example, the next day) as part of the packing and loading process; the LOADER 32 can place it in a start-up list or start-up directory of the original computer; the UNLOADER 34 can send a message to the user on the original computer reminding him to initiate the DELETER 46; if the appropriate flags and annotations are incorporated into the OSPD (such as the WINDOWS Registry) itself, the operating system can invoke the DELETER whenever a software product that has been marked for delete is started. (Other, less desirable, methods of starting the DELETER will be apparent to those skilled in the art.)
When the DELETER 46 is started, it consults the appropriate flags and annotations for the software product or software products subject to deletion and performs as indicated, possibly interacting with the user as appropriate (
There is flexibility as to the order in which some of these operations are performed. For example, the name of the product can be placed in the PACKING LIST 48 before rather than after the files associated with the product are placed in the MOVING VAN 26.
Although the present invention has been described in relation to particular embodiments thereof, many other variations and modifications and other uses will become apparent to those skilled in the art. It is preferred, therefore, that the present invention be limited not by the specific disclosure herein, but only by the appended claims.