Patent Publication Number: US-2013247029-A1

Title: Methods of tracking remote software installations and registrations and related systems and computer program products

Description:
RELATED APPLICATION 
     The present application is related to U.S. Pat. No. 7,516,104, entitled METHODS OF PROVIDING SOFTWARE OVER A NETWORK AND RELATED SYSTEMS AND COMPUTER PROGRAM PRODUCTS, which issued on Apr. 7, 2009; and this application is also a divisional application under 35 U.S.C. §121 of U.S. application Ser. No. 11/239,255, entitled METHODS OF TRACKING REMOTE SOFTWARE INSTALLATIONS AND REGISTRATIONS AND RELATED SYSTEMS AND COMPUTER PROGRAM PRODUCTS, which was filed on Sep. 29, 2005, the disclosures of which is hereby incorporated herein in its entirety by reference. 
    
    
     FIELD OF THE INVENTION 
     The present invention relates to the field of computer software, and more particularly, to methods of installing software and related systems and computer program products. 
     BACKGROUND 
     Computers perform specific tasks by following a set of instructions commonly known as “software”. A piece of software can be distributed to end-users by storing the software on removable storage media such as floppy diskettes or compact disks, and making the storage media available to the users. Typically, the storage medium includes the software to be installed and an installer. The installer is a specialized piece of software designed to assist users in the installation process. A user starts the installation process by inserting the storage medium in a storage medium reader (e.g., floppy drive, CD-ROM drive, etc.) of a computer, and then invoking the installer. In some operating systems, the installer is automatically invoked as soon as the storage medium is inserted in the reader. The installer asks the user a series of questions regarding her preferences as to file storage locations, the amount of files to install, default settings, etc. Thereafter, the installer proceeds to copy the software from the storage medium to the computer&#39;s mass storage device (e.g., hard disk drive), and performs any necessary configuration changes in accordance with the user&#39;s preferences. 
     Software can also be distributed by making the software available for download over a network. In that case, the software is stored on a server coupled to the network. A user who wishes to obtain the software couples a computer onto the network, and downloads the software from the server to the computer. The convenience of being able to obtain software at any time and the widespread availability of public networks such as the Internet contribute to the popularity of downloadable software. 
     Downloading software over a network is not without problems. On the Internet, for example, a software vendor has to somehow alert potential users that a particular piece of software is available for download. Considering the cost of advertising and the number of competing software products available on the Internet, an effective technique for informing potential users of the existence of the downloadable software, and convincing them to download the software, may be desirable. In addition, it may be desirable to track sources of downloads to determine relative effectiveness of different advertising channels. 
     For example, a registration form may be generated when the software is downloaded and/or installed on the user&#39;s computer, and the registration form may request information from the user. More particularly, the registration form may request entry of a referring source (e.g., an advertisement or other source) through which the user became aware of the software, and the information provided through the registration form may be returned to the server that provided the download. The use of registration forms and/or other prompts for user entry of information, however, relies on accurate user entry of the requested information. Many users, however, do not take time to complete registration forms and/or do not complete registration forms accurately. 
     Software downloads over a computer network are discussed, for example, in U.S. Patent Publication No. 2004/0083474 to McKinlay et al.; in U.S. Patent Publication No. 2003/0145316 to McKinlay et al.; and in U.S. Patent Publication No. 2003/0227477 to Kadiwala. The disclosures of each of the above referenced patent publications are hereby incorporated herein in their entireties by reference. 
     SUMMARY 
     According to some embodiments of the present invention, methods of tracking remote software installations at a central server may include receiving an installation message over a network from a user device wherein the installation message indicates an installation of the software at the user device. After receiving the installation message from the user device, an installation code may be created responsive to receiving the installation message, and the installation code may uniquely identify installation of the software at the user device. The installation code may be transmitted over the network to the user device, and the installation code may be stored at the central server. 
     In addition, receiving registration information and the installation code may be received over the network from the user device after storing the installation code, and a user name for the user device may be stored at the central server. More particularly, the registration information received from the user device may include the user name. Moreover, a first timestamp may be stored at the central server wherein the first timestamp represents a time of installation of the software at the user device, and a second timestamp may be stored at the central server wherein the second timestamp represents a time of registration of the software at the user device. 
     A delay between installation and registration of the software at the user device may thus be calculated using the first and second timestamps. In addition, an acquisition code may be stored at the central server with the installation code wherein the acquisition code identifies a source of the software at the user device, and the source of the software at the user device may be associated with the delay between installation and registration of the software at the user device using the acquisition code. More particularly, the installation message may include the acquisition code. 
     After storing the user name for the user device, a request may be received over the network from the user device to print at least one digital image, and/or sharing of files from the user device over the network may be coordinated. The installation message may include an acquisition code defining a source of the software, and the acquisition code may be stored with the installation code. The installation message may also include an affiliate code defining pricing for services provided by the central server for the user device, and the affiliate code may be stored with the installation code. In addition, a file including the software may be transmitted over the network to the user device before receiving the installation message. 
     According to some additional embodiments of the present invention, methods of installing software at a user device may include receiving the software at the user device, and storing the software at the user device. An installation message may be transmitted over a network to a central server wherein the installation message indicates installation of the software at the user device. After transmitting the installation message, an installation code may be received from the central server over the network wherein the installation code uniquely identifies installation of the software at the user device, and the installation code may be stored at the user device. 
     After storing the installation code in memory at the user device, user input of registration information may be accepted at the user device, and the registration information and the installation code may be transmitted over the network to the central server. Moreover, the registration information may include a user name for services provided by the central server using the software at the user device. 
     Digital image files may be organized at the user device using the software before or after transmitting the registration information. After transmitting the registration information, at least one of the digital image files may be shared over the network using the software, and/or a request may be transmitted over the network to print at least one of the digital image files using the software. 
     Receiving the software may also include receiving an acquisition code defining a source of the software, and the installation message may include the acquisition code. Receiving the software may further include receiving an affiliate code defining pricing for services provided by the central server for the user device using the software, and the installation message may include the affiliate code. Moreover, receiving the software at the user device may include receiving the software on a physical storage medium at the user device and/or receiving the software as a download over the network. 
     According to some more embodiments of the present invention, methods of providing software over a network may include receiving a redirected access over the network from a user device at a central server, and receiving an identification of a network device and/or electronic advertisement from which the user device was redirected. A download file including the software and an acquisition code may be provided wherein the acquisition code corresponds to the identification of the network device and/or electronic advertisement from which the user device was redirected. The download file including the software and the acquisition code may be transmitted over the network to the user device. 
     In addition, a download page may be presented to the user device over the network, a download button of the download page may be linked to the download file including the software and the acquisition code, and a download request from the user device may be received using the download button of the download page over the network. Accordingly, transmitting the download file may include transmitting the download file responsive to receiving the download request. 
     Providing the download file may include selecting the download file including the acquisition code and the software from a plurality of download files including the software and respective different acquisition codes. In an alternative embodiment, providing the download file may include creating the download file including the acquisition code and the software responsive to receiving the identification of the network device and/or electronic advertisement from which the user device was redirected. 
     Moreover, receiving the identification of the network device and/or electronic advertisement may include extracting the identification of the network device and/or electronic advertisement from a uniform resource locater (URL) for the redirected access. The software may support editing and/or organizing digital image files at the user device, and/or the software may support sharing of digital image files at the user device over the network. 
     After transmitting the download file, an installation message may be received over the network from the user device, and the installation message may indicate installation of the software at the user device. After receiving the installation message from the user device, an installation code may be created that uniquely identifies installation of the software at the user device. The installation code may then be transmitted to the user device, and the installation code may be stored at the central server. After storing the installation code, registration information and the installation code may be received over the network from the user device, and a user name for the user device may be stored at the central server. After storing the user name, sharing of files at the user device over the network may be coordinated and/or a request may be received from the user device to print at least one digital image from the user device. 
     According to still more embodiments of the present invention, computer program products may be provided for tracking remote software installations at a central server, and the computer program products may include a computer readable medium having computer readable program code embodied therein. More particularly, the computer readable program code may include computer readable program code configured to receive an installation message over a network from a user device wherein the installation message indicates an installation of the software at the user device. Computer readable program code may also be configured to create an installation code responsive to receiving the installation message from the user device, wherein the installation code uniquely identifies installation of the software at the user device. In addition, computer readable program code may be configured to transmit the installation code over the network to the user device and to store the installation code at the central server. 
     According to yet more embodiments of the present invention, computer program products may be provided for installing software at a user device, and the computer program products may include a computer readable medium having computer readable program code embodied therein. More particularly, the computer readable program code may include computer readable program code configured to receive the software at the user device and to store the software at the user device. Computer readable program code may be configured to transmit an installation message over a network to a central server wherein the installation message indicates installation of the software at the user device. Computer readable program code may also be configured to receive an installation code from the central server over the network after transmitting the installation message, wherein the installation code uniquely identifies installation of the software at the user device. In addition, computer readable program code may be configured to store the installation code at the user device. 
     According to additional embodiments of the present invention, computer program products may provide software over a network, and the computer program products may include a computer readable medium having computer readable program code embodied therein. The computer readable program code may include computer readable program code configured to receive a redirected access over the network from a user device at a central server, and to receive an identification of a network device and/or electronic advertisement from which the user device was redirected. Computer readable program code may also be configured to provide a download file including the software and an acquisition code, wherein the acquisition code corresponds to the identification of the network device and/or electronic advertisement from which the user device was redirected. In addition, computer readable program code may be configured to transmit the download file including the software and the acquisition code over the network to the user device. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a block diagram illustrating network devices coupled through a network according to embodiments of the present invention. 
         FIGS. 2-7  are flow charts illustrating operations of software installations, registrations, and downloads according to embodiments of the present invention. 
         FIGS. 8   a  and  8   b  are tables illustrating storing of installation and registration information according to embodiments of the present invention. 
     
    
    
     DETAILED DESCRIPTION 
     The present invention now will be described more fully hereinafter with reference to the accompanying drawings, in which illustrated embodiments of the invention are shown. This invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. Rather; these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the invention to those skilled in the art. Like numbers refer to like elements throughout. 
     As used herein, the singular forms “a,” “an,” and “the” are intended to include the plural forms as well, unless expressly stated otherwise. It will be further understood that the terms “includes,” “comprises,” “including,” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements; and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof. It will be understood that when an element is referred to as being “connected” or “coupled” to another element, it can be directly connected or coupled to the other element or intervening elements may be present. Furthermore, “connected” or “coupled” as used herein may include wirelessly connected or coupled. As used herein, the term “and/or” includes any and all combinations of one or more of the associated listed items. 
     It will also be understood that, although the terms first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first multimedia device could be termed a second multimedia device, and, similarly, a second multimedia device could be termed a first multimedia device without departing from the teachings of the disclosure. 
     The present invention may be embodied as systems, methods, and/or computer program products. Accordingly, the present invention may be embodied in hardware and/or in software (including firmware, resident software, micro-code, etc.). Furthermore, the present invention may take the form of a computer program product on a computer-usable or computer-readable storage medium having computer-usable or computer-readable program code embodied in the medium for use by or in connection with an instruction execution system. In the context of this document, a computer-usable or computer-readable medium may be any medium that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. 
     The computer-usable or computer-readable medium may be, for example but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, or propagation medium. More specific examples (a non-exhaustive list) of the computer-readable medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, and a portable compact disc read-only memory (CD-ROM). Note that the computer-usable or computer-readable medium could even be paper or another suitable medium upon which the program is printed, as the program can be electronically captured, via, for instance, optical scanning of the paper or other medium, then compiled, interpreted, or otherwise processed in a suitable manner, if necessary, and then stored in a computer memory. 
     The present invention is described herein with reference to flowchart and/or block diagram illustrations of methods, systems, and devices in accordance, with exemplary embodiments of the invention. It will be understood that each block of the flowchart and/or block diagram illustrations, and combinations of blocks in the flowchart and/or block diagram illustrations, may be implemented by computer program instructions and/or hardware operations. These computer program instructions may be provided to a processor of a general purpose computer, a special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions specified in the flowchart and/or block diagram block or blocks. 
     These computer program instructions may also be stored in a computer usable or computer-readable memory that may direct a computing device (such as a computer or other programmable data processing apparatus) to function in a particular manner, such that the instructions stored in the computer usable or computer-readable memory produce an article of manufacture including instructions that implement the function specified in the flowchart and/or block diagram block or blocks. 
     The computer program instructions may also be loaded onto a Computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions that execute on the computer or other programmable apparatus provide steps for implementing the functions specified in the flowchart and/or block diagram block or blocks. 
     Unless otherwise defined, all terms (including technical and scientific terms) used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. It will be further understood that terms, such as those defined in commonly used dictionaries, should be interpreted as having a meaning that is consistent with their meaning in the context of the relevant art and will not be interpreted in an idealized or overly formal sense unless expressly so defined herein. 
     According to embodiments of the present invention, peer-to-peer file sharing may be provided between user devices  101   a - d  (such as personal computers, laptop computers, hand-held computers, personal digital assistants, etc.) over a network  103  (such as the Internet). More particularly, application software  115   a - b  may be provided at peer user devices  101   a - b  allowing the peer user devices  101   a - b  to share files with other peer user devices  101   a - b  and non-peer user devices  101   c - d  including respective network browsers  113   a - d . Moreover, file sharing between user devices  101   a - d  may be coordinated by a central server  105 , and a database(s)  107  coupled to the central server may be used to track information relating to the peer user devices  101   a - b  including the peer-to-peer file sharing application software  115   a - b.    
     As shown in  FIG. 1 , each of the user devices  101   a - d  includes a respective processor  112  ( 112   a - d ) that communicates with a memory  111  ( 111   a - d ) and a user interface  114  ( 114   a - d ). The user interface  114  may include a keyboard or keypad, a display, a speaker, a microphone, a joy stick, a mouse, and/or other input/output device(s). Moreover, an input/output (I/O) data port may be included in the processor  112  to provide transfer of information between the user device  101  and the network  103  and/or another user device. These components may be conventional components, such as those used in conventional data processing systems, which may be configured to operate as described herein. 
     Moreover, the processor  112  may communicate with the memory  111  via an address/data bus. The processor  112  can be any commercially available or custom processor, such as a microprocessor. The memory  111  is representative of the overall hierarchy of memory devices including the software and data used to implement the functionality of the user device  101 . The memory  111  may include, but is not limited to, the following types of memory devices: disk, cache, ROM, PROM, EPROM, EEPROM, flash memory, SRAM, and/or DRAM. 
     The memory  111  may include several categories of software and data used in the user device  101 : an operating system, application programs, input/output (I/O) device drivers, and data. As will be understood by those of skill in the art, the operating system may be any operating system suitable for use with a data processing system, such as AIX, or System 390 from International Business Machines Corporation; Windows 95, Windows 98, Windows 2000, or Windows XP from Microsoft Corporation; Mac OS X from Apple Computer, Inc.; Unix; or Linux. I/O device drivers typically include software routines accessed through the operating system by application programs to communicate with devices such as I/O data ports and/or memory components. Application programs, for example, may include a browser  113  used to access information over the network  103  and/or application software  115  used to organize digital image files, edit digital image files, share digital image files over the network  103 , and/or request prints of digital images from the central server  105 . In addition, a data portion of the memory  111  may include static and dynamic data used by application programs, the operating system, I/O device drivers, and other software programs that may reside in the memory  111 . 
     As shown in  FIG. 1 , application software  115   a - b  (used to organize digital image files, edit digital image files, share digital image files over the network  103 , and/or request prints of digital images from the central server  105 ) may be installed in memories  111   a - b  of user devices  101   a - b . The application software  115 , however, may not be initially installed at user devices  101   c - d . Embodiments of the present invention will now be discussed with respect to the installation of the applications software  115  at the user device  101   c . While embodiments of the present invention are discussed by way of example with respect to application software used for digital image files; downloads, installations, and/or registrations may be implemented using other types of application software according to other embodiments of the present invention. 
     According to some embodiments of the present invention, the application software  115   a - b  may be used to share digital images with other user devices. An album of digital images, for example, may be stored in memory  111   a  of user device  101   a  including the application software  115   a , and other user devices  101   b - d  may access the album of digital images using the respective browser  113   b - d  under coordination of the central server  105  and the application software  115   a . Methods and systems of sharing images over a network are discussed for example, in U.S. Patent Publication No. 2004/0139172 entitled Method And System For Requesting Image Prints In An Online Photosharing System; U.S. Patent Publication No. 2004/0111415 entitled Automatic Organization Of Images Uploaded To A Photo-Sharing Site; U.S. Patent Publication No. 2003/0200268 entitled Method And System For Sharing Digital Images Over A Network U.S. Patent Publication No. 2003/0161499 entitled Automated Discovery, Assignment, And Submission Of Image Metadata To A Network-Based Photosharing Service; U.S. Patent Publication No. 2003/0126212 entitled Specking, Assigning, And Maintaining User Defined Metadata In A Network-Based Photosharing, U.S. Patent Publication No. 2003/0063771 entitled Network-Based Photosharing Architecture For Searching And Delivery Of Private Images And Metadata, and U.S. Patent Publication No. 2003/0063770 entitled Network-Based Photosharing Architecture. The disclosures of each of the above referenced patent publications are hereby incorporated herein in their entireties by reference. 
     Accordingly, the application software  115   a - b  may be provided to and installed at each user device  101   a - b  from which files are to be shared. The application software  115   a - b  may be provided together with an installer at each user device  101   a - b , for example, using an optical or magnetic disk, or using a download from the central server  105  over the network  103 . Once the application software  115   a - b  and the installer are provided at each user device  101   a - b , the installer can be used to install the application software  115   a - b  in memory at each user device  101   a - b.    
     Moreover, use of the application software at a user device may be registered with the central server  105  to allow file sharing and/or other services (such as photo-printing) provided by the central server  105 . In addition, information from application software registrations may be saved in database  107 . For example, the user device  101   a  may install the application software  115   a , and the application software  115   a  may be used at the user device  101   a , for example, to edit and/or organize files (such as digital image files) without registering with the central server  105 . Additional functionality and/or services (such as file sharing and/or photo-printing) may be provided using the application software  115   a  after registering with the central server  105 . 
     The application software and/or services offered in connection with the central server  105  may be advertised and/or marketed through different channels to encourage downloading and/or use thereof. There may thus be a desire to separately track an effectiveness of the different advertising and/or marketing channels. For example, the registration process may request that the user enter the source through which the user became aware of the software. The reliability of information entered by user, however, is dependent on accuracy of the user input, so that user registrations may not provide accurate information regarding the effectiveness of different advertising and/or marketing sources. 
     A user of user device  101   c  may become aware of the application software  115  through an on-line advertisement provided on an independent website  109   a  or  109   b , and/or through an advertisement provided when sharing files provided by user device  101   a  and/or  101   b  using the application software  115   a  and/or  115   b . A button in such an on-line advertisement may redirect the browser  113   c  to the central server  105  to facilitate downloading the application software and installer. In an alternative embodiment, the application software and installer may be provided at the user device  101   c  on an optical and/or magnetic disk. According to embodiments of the present invention, the application software and the installer may be provided together with an acquisition code that identifies a source of the software, and an installation code may be assigned by the central server  105  to the user device  101   c  when installing the application software. For example, a first acquisition code may be provided with application software distributed via download responsive to a redirection from an on-line advertisement at independent website  109   a ; a second acquisition code may be provided with application software distributed via download responsive to a redirection from an on-line advertisement at independent website  109   b ; a third acquisition code may be provided with application software distributed via download responsive to a redirection from the peer user device  101   a ; a fourth acquisition code may be provided with application software distributed via download responsive to a redirection from the peer user device  101   b ; a fifth acquisition code may be provided with application software distributed via an optical and/or magnetic disk from a first provider; and a sixth acquisition code may be provided with application software distributed via an optical and/or magnetic disk from a second provider. 
     In addition to the acquisition code, an affiliate code may also be provided with the application software and the installer, and different affiliate codes may identify different pricing structures for services provided by the central server  105 . An affiliate code, for example, may define pricing for a particular user device, may define which advertisements (such as banner advertisements) are provided at the user device home page for the application software, and/or discounts that may be available for the particular user. In other alternatives, separate acquisition and affiliate codes may not be required. 
     While the central server  105  and the database  107  are shown as separate entities, the two elements and/or components thereof may be implemented together. Moreover, functionalities of the central server  105  may be provided at one location or provided using two or more separate components. In addition, the database  107  may be considered as a component of the central server  105 . 
     Operations of providing, installing, and registering the application software at the user device  101   c  will now be discussed with respect to the flow charts of  FIGS. 2-7 . According to first embodiments of the present invention, operations of the user device  101   c  are illustrated in  FIG. 2  (at blocks  201 - 209 ) and operations of the central server  105  are illustrated in  FIG. 3  (at blocks  301 - 309 ) while installing the application software at the user device  101   c . At block  201 , the application software and an installer may be provided at the user device  101   c . As discussed above, the application software and the installer may be provided as a download from the central server  105  over the network  103  or with an optical or magnetic disk or other physical medium. In addition, an acquisition code and/or an affiliate code may be provided with the application software and the installer. As discussed above, an acquisition code is a code used to identify a source of the software, and an affiliate code is a code used to identify a pricing structure to be applied when using the software. 
     At block  203 , the installer may be executed to store the application software in the memory  111   c  of the user device  101   c . At block  205  of  FIG. 2 , an installation message may be transmitted by the user device  101   c  over the network  103 , and the installation message may be received by the central server  105  at block  301  of  FIG. 3 . While block  205  is shown after block  203 , the operations of storing the application software and transmitting the installation message may be performed concurrently or the order may be reversed. In addition, the installation message may include the acquisition code and/or the affiliate code that were provided with the application software. The installation message is used to notify the central server  105  of installation of the software application at the user device  101   c . In other words, the installation message provides indication to the central server  105  that the application software is installed at the user device  101   c.    
     At block  303  of  FIG. 3 , the central server  105  creates an installation code responsive to receiving the installation message from the user device  101   c , and the installation code uniquely identifies installation of the application software at the user device  101   c . In other words, a different installation code may be generated by the central server  105  for each installation message received at the central server  105  so that a different installation code is created each time an installation message for the application software is received. The central server  105  may then store the installation code with information from the installation message in the database  107  at block  305 . 
     More particularly, the database  107  may be used to store a table of information relating to installations and registrations of the application software at different user devices  101 . An example of a table of installation/registration information for the application software is shown in  FIG. 8   a . Each row in the table of  FIG. 8   a  includes information for the installation/registration of the application software at a particular user device, and a new row may be added each time a new installation message is received at the central server  107 . Accordingly, the acquisition code (labeled ACQc) and the affiliate code (labeled AFFc) received with the installation message at block  301  and the installation code (labeled INSTc) created at block  303  may be stored in the respective columns of the table of  FIG. 8   a  in a same row at block  305 . In addition, an installation timestamp (labeled ITSc) may be stored with the installation code to reflect a time that the application software is installed at the user device  101   c . For example, the timestamp may indicate a time that the installation message is received at the central server  105  at block  301 , a time that the installation message is transmitted by the user device  101   c , a time that the installation is initiated, a time that the installation code is created, etc. 
     As shown in  FIG. 8   a , a new row may be generated in the table of  FIG. 8   a  responsive to receiving the installation message from the user device  101   c . Moreover, the table may already be populated with information relating to the prior installation of the application software at other user devices. As discussed above, each installation code (INSTa, INSTb, INSTc) in  FIG. 8   a  will be unique for each installation of the application software. Affiliate codes (AFFa, AFFb, and/or AFFc) and acquisition codes (ACQa, ACQb, and/or ACQc) from different installation messages, however, may be the same or different. For example, different installation messages may have the same acquisition code and different affiliate codes indicating that the software was obtained from the same source but with different pricing structures. Moreover, different installation messages may have different acquisition codes and the same affiliate code indicating that the software was obtained from different sources but with the same pricing structures. 
     When the installation code INSTc is initially stored in the table of  FIG. 8   a  for the user device  101   c  at block  305 , the fields for the registration user name and registration timestamp may remain blank for the user device  101   c  as shown in  FIG. 8   a . Moreover, the fields for the registration user name and registration timestamp may remain blank for the user device  101   c  until the application software at the user device  101   c  is registered with the central server  105 . In the example of  FIG. 8   a , the row of information including AFFa, ACQa, INSTa, ITSa, RUNa, and RTSa may represent installation and registration information for the application software that has been both installed at user device  101   a  and registered with the central server  105 . Moreover, the row of information including AFFb, ACQb, INSTb, and ITSb may represent installation information for the application software that has been installed at user device  101   b  but not yet registered with the central server  105 . 
     At block  307 , the installation code INSTc may be transmitted back to the user device  101   t , and the installation code INSTc may be received at the user device  101   c  at block  207 . The installation code INSTc may then be stored at the user device  101   c  at block  209  for use when the application software at the user device  101   c  is registered with the central server  105 . While transmitting the installation code at block  307  is shown after storing the installation code at block  305 , it will be understood that the order of the these operations may be reversed, or the operations may be performed simultaneously. 
     According to second embodiments of the present invention, operations of the user device  101   c  are illustrated in  FIG. 4  (at blocks  401 - 411 ) and operations of the central server  105  are illustrated in  FIG. 5  (at blocks  501 - 509 ) while registering use of the application software at the user device  101   c  with the central server  105 . As discussed above with respect to  FIGS. 2 and 3 , the application software may be installed at the user device  101   c  without registering installation with the central server. Without registration with the central server, for example, the user device  101   c  may use the application software to edit and/or organize files (such as digital image files). By registering the application software with the central server  105 , files from the user device  101   c  may be shared with other user devices and/or processing (such as photo-processing) and/or other services may be provided by the central server  105 . 
     At block  401  of  FIG. 4 , registration may be initiated at the user device  101   c . The application software, for example, may prompt the user to initiate registration each time the application software is used at the user device  101   c  until registration occurs. In addition or in an alternative, the application software may prompt the user to initiate registration as a part of installation. In yet another alternative, the user may initiate registration of the application software without prompting. 
     At block  403  of  FIG. 4 , the user device  101   c  may accept input of registration information from the user. Once registration has been initiated, a form may be displayed prompting for user input of the registration information. Registration information, for example, may include a user name and password selected by the user that will be used when obtaining service from central server  105 . 
     At block  405 , the registration information and the installation code INSTc may be transmitted from the user device  101   c  to the central server  105 , and the registration information and the installation code INSTc may be received by the central server  105  at block  501  of  FIG. 5 . The registration information may be processed, and if the registration is successful at block  503 , the registration information may be stored at block  509 . If the registration is not successful at block  503 , the central server  105  may transmit a request for corrected registration information at block  505 . 
     At block  503 , for example, the central server  105  may check if the user selected user name is unique (i.e., the user name has not already been assigned to another user). If the user has not selected a unique user name and/or if the selected user name does not conform to a prescribed format (e.g., it is too long or too short), the central server  105  may transmit a request for another user name at block  505 . In addition or in an alternative embodiment, the user may be required to enter the same password twice, and if the password is not correctly entered two times or if the password does not conform to a prescribed format, the central server  105  may transmit a request to reenter the password at block  505 . Moreover, the user may be required to enter a credit/debit card number, and if the credit/debit card number is not approved, the central server may transmit a request to enter a new credit/debit card number. In addition, the central server  105  may transmit a request for corrected information at block  505  if required registration information is not provided. 
     If a request for corrected information is received at block  407 , the user of user device  101   c  may be prompted to input corrected information, and the corrected information may be accepted at block  409 . The corrected information may then be transmitted from the user device  101   c  at block  411  and received by the central server  105  at block  507 . Once the correct registration information has been received at the central server  105  and the registration is successful at block  503 , the registration information may be stored at block  509 . In addition, a confirmation of registration may be transmitted from the central server  105  to the user device  101   c  indicating successful completion of the registration process and/or acceptance of the registration information provided from the user device  101   c.    
     More particularly, the installation code INSTc received with the registration information at block  501  may be used to match the registration information with the installation information previously entered in the table of  FIG. 8   a  and discussed above with respect to  FIGS. 2 and 3 . As shown in the table of  FIG. 8   b , the central server  105  may complete the row of information for the installation and registration of the application software at the user device  101   c  in the database  107 . 
     While the tables of  FIGS. 8   a  and  8   b  show an arrangement of information in rows and columns for ease of illustration, it will be understood that the information may be stored in the database  107  in any format that may be convenient. The database  107 , for example, may be a relational database and each row of information may represent a record for a respective user device. Moreover, each record may have a unique installation code (i.e., no two records for the same application software have the same installation code) so that the installation code may be used to match registration information with an existing record including installation information for the same user device. 
     As discussed above, at block  403 , the user device  101   c  may accept entry of a user selected user name RUNc (also referred to as a Registration User name), the user selected user name RUNc may be transmitted from the user device  101   c  at block  405  with the installation code INSTc, and the user selected user name RUNc may be received with the installation code INSTc at block  501 . The central server  105  may then use the installation code INSTc to locate the installation information (for example, including AFFc, ACQc, and INSTc previously saved in the table of  FIG. 8   a ) associated with the prior installation of the application software at the user device  101   c.    
     As shown in  FIG. 8   b , the table of  FIG. 8   a  may be updated to include the user selected user name RUNc for the user device  101   c  and the registration time stamp RTSc indicating a time of registering the application software at the user device  101   c . The registration time stamp RTSc, for example, may reflect a time that the registration information from the user device  101   c  is received at the central server  105  at block  501 , a time that the registration information is transmitted by the user device  101   c , a time that the registration is initiated, a time that the registration information is stored, etc. 
     In other embodiments of the present invention, a user name and/or password may be assigned by the central server  105  responsive to registration information received from the user device  101   c . Accordingly, successful registration at the central server  105  may be followed by transmission of the user name and/or password to the user device  101   c , and the user device  101   c  may store the user name and/or password received from the central server  105 . 
     Once the application software has been installed at user device  101   c  and registered with the central server  105 , the central server  105  can access the acquisition code ACQc identifying a source of the application software for the user device  101   c , the installation timestamp ITSc identifying a time the application software was installed at the user device  101   c , and the registration timestamp RTSc identifying a time the application software for the user device  101   c  was registered with the central server  105 . Accordingly, the central server  105  can determine a delay between installation and registration at the user device  101   c  (i.e., the delay between ITSc and RTSc), and the delay can be correlated with the source of the software as identified by the acquisition code. Moreover, the installation and registration information for a plurality of user devices can be analyzed to determine which advertising and/or marketing sources are most effective in terms of resulting numbers of downloads, and/or which advertising and/or marketing sources result in the longest and/or shortest delays between installation and registration. This information can thus be used to dynamically track marketing experiments and/or results. Moreover, information relating to installations can be tracked separately and/or independently from information relating to registrations. For example, a number of installations and a number of registrations resulting from a particular advertising and/or marketing source may be determined. 
     According to some embodiments of the present invention, the user device  101   c  may be registered with the central server  105  before installing the application software. More particularly, the user device  101   c  may be registered with the central server  105  to allow purchasing of prints of files shared by user devices  101   a  and/or  101   b . As discussed above, the user device  101   c  can access files shared by other user devices using browser  113   c  without installing the application software. Accordingly, the previously assigned user name and password for the user device  101   c  can be obtained by the central server  105  when the user device  101   c  registers the Application software as discussed above with respect to  FIGS. 4 and 5 , and the previously assigned user name and password may be stored with the registration information at block  509 . 
     According to some additional embodiments of the present invention, the application software may be installed at the user device  101   c  without receiving an installation code. For example, tracking operations of the central server  105  may be implemented after installing the application software at the user device  101   c  but before registering the application software at the user device  101   c . During the registration process of  FIGS. 4 and 5 , an installation code may not be provided and information relating to the previous installation of the software at user device  101   c  may not be available at the central server  105 . Accordingly, a new row of information for the user device  101   c  may be generated by the central server  105  during registration. Moreover, both the installation timestamp INTSc and the registration timestamp RTSb may be set to indicate the time of registration, and the acquisition code ACQc may be set to “OLD” to indicate that the software was installed at user device  101   c  before tracking for installation timestamps was recorded. 
     According to some other embodiments of the present invention, the user device  101   c  may have installed an old version of the application software, and an upgrade of the application software may be requested. In this case, installation information for the user device  101   c  may not have been previously saved in the table of  FIG. 8   b  so that a new row of information for the user device  101   c  may be created by the central server  105  when the application software upgrade is requested. In this case, a new installation code may be created at the time of the upgrade; the affiliate code may be obtained from the user device  101   c  and the acquisition code ACQc may be set to “UPGRADE” to indicate that the software was installed at user device  101   c  before tracking for installation timestamps was recorded; and the installation timestamp ITSc may be stored to reflect the time of the upgrade. 
     As discussed above with respect to block  201  of  FIG. 2 , the application software and installer may be provided at the user device  101   c  on an optical and/or magnetic disk and/or other physical medium. Moreover, appropriate affiliate and/or acquisition codes may be provided with the application software and installer on the physical medium. Accordingly, application software distributed on a physical medium by a first retailer may be provided with a first acquisition code identifying the first retailer, and application software distributed on a physical medium by a second retailer may be provided with a second acquisition code identifying the second retailer. Affiliate codes for application software distributed on a physical medium by a same retailer may change to reflect changes in pricing over time, to reflect different pricing for different purchases, to reflect temporary discounts, etc. Application software for digital image editing, organization, file sharing, and/or photo-processing, for example, may be provided on an optical disk with the purchase of a digital camera. 
     In an alternative embodiment, the application software and installer may be provided at the user device  101   c  by a download from the central server  105  over the network  103  (such as the Internet). More particularly, the user device  101   c  may be redirected from an electronic advertisement for the application software provided on-line over the network  103  to the central server  105  to initiate the download. In this case, the central server may need to provide the appropriate acquisition code with the application software and installer during the download. Operations of downloading application software according to embodiments of the present invention will be discussed with reference to  FIGS. 6 and 7 . 
     At block  601  of  FIG. 6 , the user device  101   c  may access data over the network  103  from another network device such as website  109   a , website  109   b , user device  101   a , and/or user device  101   b . The user device  101   c  may access a webpage from website  109   a  using browser  113   c , and an electronic banner advertisement for the application may be provided by the website  109   a . In an alternative, the user device  101   c  may use browser  113   c  to access digital images made available at user device  101   a  via application software  115   a  and/or central server  105 . While accessing the digital images from user device  101   a , the application software  115   a  and/or central server  105  may present an electronic advertisement for the application software to the user device  101   c . In either case, the electronic advertisement may provide a graphical-user-interface (GUI) button at the user device  101   c  to select a download of the application software to the user device  101   c.    
     At block  603 , a download of the application software may be selected using the GUI button presented by the electronic advertisement at the user device  101   c . In response to selecting download of the application software, the user device  101   c  may be redirected to the central server  105  at block  605 , and the redirected access from the user device  101   c  may be received by the central server at block  701 . At block  607 , the user device  101   c  may transmit an identification of the network device and/or electronic advertisement from which the user device  101   c  is being redirected, and the identification of the network device and/or electronic advertisement may be received by the central server at block  703 . While operations of blocks  605  and  607  are shown separately, operations of blocks  605  and  607  may be performed at the same time or the order may be reversed. Similarly, operations of blocks  701  and  703  may be performed at the same time or the order may be reversed. 
     If the user device  101   c  is redirected from access to user device  101   a , an identification of the user device  101   a  may be received by the central server  105  at block  703 . If the user device  101   c  is redirected from an electronic advertisement at website  109   a , an identification of the website  109   a  and/or the electronic advertisement may be received by the central server  105  at block  703 . The central server  105  may thus be able to determine the source of a request for a download without requiring user identification of the source. For example, when the user device  101   c  is redirected from another network device to the central server  105 , a portion of the URL (Uniform Resource Locator) may include an identification of the network device from which the user device  101   c  has been redirected as a passed-in parameter and/or a referrer link. 
     At block  705 , the central server  105  may present a download page for the user device  101   c , and the user device may access the download page from the central server  105  at block  609 . The central server  105  may then determine if an application software file including an appropriate acquisition code is available for the network device and/or electronic advertisement identified as the source of the redirection. If a pre-built application software file including the appropriate acquisition code is available at block  707 , the central server may link the available pre-built application software file to a download button of the download page presented for the user device at block  711 . If a pre-built application software file including the appropriate acquisition code is not available at block  707 , the central server  105  may build an application software file including the appropriate acquisition code on the fly at block  709 , and the central server may link the built application software file to a GUI download button of the download page presented for the user device  711 . Each application software file may thus include the application software, the installer, and an acquisition code corresponding to the identification received at block  703 . 
     More particularly, the central server  105  may have access to a library of pre-built application software files including the same application software and the same installer, but including different acquisition codes corresponding to different identifications of network devices and/or electronic advertisements. Accordingly, the central server  105  may check the library of pre-built application software files at block  707  before building a new application software file at block  709 . Moreover, a selection of pre-built application software files for the library may be determined based on frequency of use. In other words, more frequently used application software files may be included in the library, while less frequently used application software files may not be included in the library. Once a particular application software file has been downloaded a predetermined number of times over some period of time, the application software file may be added to the library. If an application software file in the library has not been downloaded a sufficient number of times over some period of time, the application software file may be removed from the library. 
     At block  611 , the user device  101   c  may accept selection of the GUI download button of the download page from the central server  105  so that a download request for the application software file is transmitted from the user device  101   c  and received by the central server  105  at block  713 . Responsive to receiving the download request, the central server  105  may download the application software file at block  715 . At block  613 , the user device  101   c  may receive the downloaded application software file including the application software, the installer, and the acquisition code. The application software may then be installed by the user device  101   c  at block  615 . Operations of installation are discussed in greater detail above with respect to  FIGS. 2 and 3 . 
     As discussed above, the acquisition code corresponds to the identification of the network device and/or electronic advertisement from which the user device was redirected at block  605  to initiate the download. Accordingly, the source of the download can be identified using the acquisition code during subsequent installation and/or registration operations as discussed above with respect to  FIGS. 2-5 . Moreover, the identification of the network device and/or electronic advertisement may be translated by the central server  105  into the appropriate acquisition code different than the identification. In an alternative embodiment, the identification of the network device and/or the electronic advertisement may be the same as the corresponding acquisition code so that no translation is required. 
     In the drawings and specification, there have been disclosed exemplary embodiments of the invention. However, many variations and modifications can be made to these embodiments without substantially departing from the principles of the present invention. All such variations and modifications are intended to be included herein within the scope of the present invention, as set forth in the following claims. While embodiments of the present invention have been discussed above with respect to peer-to-peer file sharing software applications, for example, it will be understood that providing, tracking, and/or installing software according to embodiments of the present invention may be provided for other types of application software.