Abstract:
A method of configuring software on a computer is disclosed herein. The software comprises at least one module and the computer comprises a nonvolatile storage having at least one address. An embodiment of the method comprises loading a flag into the address; reading the flag using the software; and activating the module in the software depending on the state of the flag, wherein activating the module causes at least one program to be installed on the computer.

Description:
BACKGROUND 
       [0001]    Many computer manufacturers load programs onto their computers prior to shipping the computers. Some manufacturers provide programs that are customized for a particular market or a particular retailer. Providing these customized programs requires that different programs be loaded onto each computer that is to be shipped to a different market or retailer, which is time consuming and expensive. For example, a first retailer may provide a specific type of antivirus software and a second retailer may provide a second antivirus software on the same computer. At present the two identical computers need to have different programs installed, which is time consuming. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0002]      FIG. 1  is a block diagram of a computer system in accordance with an embodiment. 
           [0003]      FIG. 2  is a block diagram of an embodiment of software that may be installed onto a computer system. 
           [0004]      FIG. 3  is a block diagram of an embodiment of a nonvolatile memory that may be used within a computer system. 
       
    
    
     DETAILED DESCRIPTION 
       [0005]    Manufacturers may load or install programs on computers prior to shipping the computers. Programs are some times referred to as software. However, in order to avoid confusion, software, as used herein, includes a plurality of programs that are stored in the computer for use by the end user. Many customers and retailers prefer customized programs to be installed by the manufacturer. Some conventional computer systems require different customized programs to be loaded on computers for the different retailers and markets. As described below, the computer system and methods described herein enable a single software package to be loaded on computers sent to different retailers and markets. The software then installs specific programs onto the computer that are customized for a particular retailer and/or market. 
         [0006]    In summary, some computers contain memory, such as a nonvolatile memory. During manufacture, flags in the memory are set to indicate the programs or type of programs that are required to be installed on a specific computer. Generic software or a generic software package is then loaded. into the computer. The software reads the flags set in the memory to determine the specific software configuration and/or programs that are to be installed in the computer. Modules or the like in the software are activated or inactivated per the flags. For example, the flags may indicate that the computer is to be sold to a certain retailer. The software may activate modules that install programs that reflect offers or the like specific to the retailer. Accordingly, the programs installed on the computer are customized to the retailer. 
         [0007]    A further description of the technology of the invention will now be described in greater detail. A block diagram of an embodiment of a computer system  10  is shown in  FIG. 1 . It is noted that the computer system  10  of  FIG. 1  is and example of a simplified computer system and that other embodiments of computer systems may be used herein such as, without limitation, multiprocessor computers, servers, network attached servers, personal computers, digital phones, portable display devices, and the like. 
         [0008]    The computer system  10  includes internal storage  16 , a CPU  17 , and nonvolatile memory  200 . The internal storage may be a hard disc drive, optical disk drive, volatile memory, non-volatile memory or the like, which may store computer programs and software  100  as shown in  FIG. 2 . The CPU  17  may be virtually any central processing unit, microprocessor, controller, for use in a computer system  10 . The CPU  17  serves to execute the programs stored in the internal storage  16 . In addition, the CPU  17  may, in some embodiments, read and write to the nonvolatile memory  200 . 
         [0009]    A. block diagram of an embodiment of software  100  is shown in  FIG. 2 . The software  100  may be a software package including a plurality of different programs and/or modules. The software  100  may includes an operating system. and applications  106 , which. is referred to collectively as simply applications  106 . The applications may include browsers, video viewers, anti virus software, ad blocking programs, offers from the retailer, and other programs. 
         [0010]    In addition to the applications  106 , the software  100  may include a plurality of installation modules or modules  110 , each of which is specific to a particular retailer and/or market. The modules  110  serve to customize the software  100  as described in greater detail below. The individual modules are identified as the first retailer  114 , the second retailer  116 , the third retailer  118 , the first market  120 , the second market  122 , and the third market  124 . The retailers reflect different modules in the software related to specific retailers. Likewise, different markets correspond to different market modules that can be loaded into the software. As described in greater detail below, these modules load specific programs into the computer when they are activated. 
         [0011]    With additional reference to  FIG. 3 , the computer in which the software  100  is loaded includes a nonvolatile memory  200  or nonvolatile storage. The nonvolatile memory  200  may, as an example, include a BIOS (basic input/output system) code or other such firmware. In other embodiments, the nonvolatile storage may be a USB (universal serial bus) device. The nonvolatile memory  200  has flags or other indicators loaded therein that serve to ultimately instruct the software  100  as to which modules to activate or programs to load. In some embodiments, the flags are set within the DMI portion of the BOIS and serve to instruct the software as to the modules to be installed. The flags may be, or correspond to, addresses within the nonvolatile memory  200 . 
         [0012]    In an embodiment of the nonvolatile memory  200  of  FIG. 3 , there are six flags stored therein, which are referred to individually as the first flag  206 , the second flag  208 , the third flag  210 , the fourth flag  212 , the fifth flag  214 , and the sixth flag  216 . The flags may be set at the time the computer is manufactured. For example, the nonvolatile memory  200  may be manufactured with the flags set and then the entire memory  200  is installed into the computer. In other embodiments, the flags may be set subsequent to manufacture. 
         [0013]    During installation of the software  100 , the software reads the has  202  in order to determine which of the modules  110  are to be loaded or activated. For example, if the first flag  206  is set, the software  100  may install or activate the first retailer module  114 . Likewise, if the second flag  208  is set, the second retailer module  116  may be installed. With regard to the market modules, the first market module  120  may be installed if the fourth flag  212  is set. Likewise, the second market module  122  may be installed if the fifth flag  214  is set. When a module is installed or activated, certain programs are installed on the computer. 
         [0014]    In practice, a retailer may order a plurality of computers from a manufacturer. The retailer may want the installed programs to be customized for the retailer. As an example, the retailer may want to sell the computer with certain programs installed, such as certain word processors or games. The installed programs may further cause screen backgrounds to display logos of the first retailer or information regarding upgrades and service provided by the first retailer. 
         [0015]    By setting the first flag  206 , the first retailer is identified during installation of the software  100  and the first retailer module  114  of software is installed or activated. In some embodiments, the modules  110  do not actually install, but instruct the software to install certain programs. Thus, the first retailer module  114  may contain instructions for installing certain programs. The first module  114  or other portions of the software may also contain instructions for deleting unused software or programs in the software  100  that were not installed. 
         [0016]    With regard to the market modules, the software  100  may install programs or the like depending on the intended customer market related to the sale of the computer. The market may include seasonal promotions, and other such market criteria. In one example, a retailer may want to sell computers to younger users. In this market, the fourth flag  212  could be set, which causes the software  100 , when operational, to activate the first market module  120 . The first market module  120  may cause the software  100  to install programs and the like directed toward younger users, such as programs related to firewalls or Internet monitoring programs. 
         [0017]    If the retailer wants to sell computers to a different market, it may set the fifth flag  214 . The fifth flag  214  may cause the second market module  122  to activate and install programs directed toward a different market. For example, the fifth flag may cause programs meant for business computers to be installed. 
         [0018]    In some embodiments, the markets may be seasonal, regional, or based on of criteria. For example, one of the market flags may indicate that the computer is to be sold for the Christmas holiday. In such an embodiment, programs associated with Christmas or winter may be loaded. Another market flag may indicate that the computer is to be sold during back to school promotions. A market module may cause programs directed to students to be installed. 
         [0019]    In more elaborate embodiments, a retailer flag and a marketing flag may both be set. A retailer may want to sell computers in a specific market, such as to the business market. In such an embodiment, the first flag  206  may be set to indicate that the first retailer is selling the computer. The fourth flag  212  may also be set to indicate that the market is to business users. The first flag  206  causes the first retailer module  114  to activate, which causes programs unique or customized for the first retailer to be installed. These programs may include logos, technical assistance contacts, and other information that is unique to the first retailer. The fourth flag  212  may cause the first market module to install programs for business computers. These programs may include certain accounting software and the like. If the first retailer is selling a computer in the student market, the fifth flag  214  may be activated to cause the second market module  122  to install student related programs. 
         [0020]    Having described the software  100  and the nonvolatile memory  200 , the assembly of a computer using the software  100  will now be described. 
         [0021]    A retailer or manufacturer may write the software  100  that includes all the programs that are to be installed in a plurality of different computers. Modules  110  or the like within the software determine which programs are to be installed. Thus activation of a first module will cause a first plurality of programs to be installed. The software  100  looks to or accesses nonvolatile memory  200  within the computer to determine which modules are to be activated during the software installation. More specifically, the software  100  may read the flags  202  as described above. 
         [0022]    The manufacture receives orders from the retailer regarding the type of programs that are to be installed on specific computers. Based on the order from the retailer, the manufacturer installs nonvolatile memory  200  with the flags  202  set so as to activate the appropriate modules in the software  100 . In other embodiments, the nonvolatile memory  200  is installed and the appropriate flags are programmed into the nonvolatile memory  200 . In some embodiments, a data cable or the like is connected to the computer to program the nonvolatile memory  200 . 
         [0023]    The software  100  is loaded into the computer. During initialization or installation of the software  100 , the software  100  reads the flags in the nonvolatile memory  200  to determine which modules  110  are to be activated so that the correct programs are installed. It is noted that when the software  100  or programs are loaded in the computer, they are not necessarily installed. Installed software or programs as used herein refers to software or programs that may be readily executed by the computer. The software  100  runs as described above to install the correct programs. In some embodiments, programs that are not installed are deleted. 
         [0024]    The foregoing description, for purposes of explanation, has been described with reference to specific embodiments. However, the illustrative discussions above are not intended to be exhaustive or to limit the invention to the precise forms disclosed. Many modifications and variations are possible in view of the above teachings. The embodiments were chosen and described in order to best explain the principles of the invention and its practical applications, to thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications as are suited to the particular use contemplated. What is claimed is: