CA2223409A1 - Try before you buy software distribution and marketing system - Google Patents
Try before you buy software distribution and marketing system Download PDFInfo
- Publication number
- CA2223409A1 CA2223409A1 CA002223409A CA2223409A CA2223409A1 CA 2223409 A1 CA2223409 A1 CA 2223409A1 CA 002223409 A CA002223409 A CA 002223409A CA 2223409 A CA2223409 A CA 2223409A CA 2223409 A1 CA2223409 A1 CA 2223409A1
- Authority
- CA
- Canada
- Prior art keywords
- software program
- computer
- software
- user
- program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
- 238000005070 sampling Methods 0.000 claims abstract description 73
- 238000000034 method Methods 0.000 claims description 107
- 230000004044 response Effects 0.000 claims description 36
- 238000012544 monitoring process Methods 0.000 claims description 25
- 238000004590 computer program Methods 0.000 claims 23
- 230000004913 activation Effects 0.000 claims 16
- 230000000007 visual effect Effects 0.000 claims 2
- 230000008569 process Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 8
- 230000006835 compression Effects 0.000 description 7
- 238000007906 compression Methods 0.000 description 7
- 238000001514 detection method Methods 0.000 description 6
- 238000005192 partition Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000009434 installation Methods 0.000 description 3
- 230000001681 protective effect Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 241000700605 Viruses Species 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 239000013598 vector Substances 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- 241001481833 Coryphaena hippurus Species 0.000 description 1
- JGFZNNIVVJXRND-UHFFFAOYSA-N N,N-Diisopropylethylamine (DIPEA) Chemical compound CCN(C(C)C)C(C)C JGFZNNIVVJXRND-UHFFFAOYSA-N 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07F—COIN-FREED OR LIKE APPARATUS
- G07F17/00—Coin-freed apparatus for hiring articles; Coin-freed facilities or services
- G07F17/16—Coin-freed apparatus for hiring articles; Coin-freed facilities or services for devices exhibiting advertisements, announcements, pictures or the like
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/08—Payment architectures
- G06Q20/085—Payment architectures involving remote charge determination or related payment systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/02—Marketing; Price estimation or determination; Fundraising
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07F—COIN-FREED OR LIKE APPARATUS
- G07F17/00—Coin-freed apparatus for hiring articles; Coin-freed facilities or services
- G07F17/0014—Coin-freed apparatus for hiring articles; Coin-freed facilities or services for vending, access and use of specific services not covered anywhere else in G07F17/00
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/007—Encryption, En-/decode, En-/decipher, En-/decypher, Scramble, (De-)compress
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2137—Time limited access, e.g. to a computer or data
Abstract
A computer-based system is provided for demonstrating software programs to a potential purchaser and for gathering marketing information related to the demonstration of the programs. The system enables the software programs for execution upon selection by a user, and allows the user to subsequently operate or sample the selected software program. The system maintains the selected software program in a locked state to prevent unauthorized duplication of the selected software program, and selectively disables the sampling, such as when the user completes the sampling or if the system detects that the user is attempting to copy the sampled application. A code is generated that identifies one or more particular software programs and contains information relating to sampling of the particular software programs by the user, such as which applications were sampled and how many times they were sampled.
Description
W O 96/41449PCTAUS96fO3316 TRY BEFORE YOU BUY SOFTWARE
DISTRIBUTION AND MAKKh~lN~ SYSTEM
FIF~T~n OF T~ INV~NTION
5The present invention relates to a system and method for gathering data related to usage of software programs sampled by a potential purchaser or other user of the programs.
RACKGROUN~ OF THF INVFNTION
Customers or potential purchasers of software programs often desire to test the programs before determining whether or not to purchase them. This may occur because written literature does not adequately provide the customer with a feel for the functionality of the software program when in operation. The written literature simply describes the program, and customers often want to actually work with the software program in order to determine if they want to buy the program.
Some software vendors provide demonstration programs of their software programs for sale. These demonstration programs typically are not the fully operating version of the software program. The demonstration program usually contains only some of the functionality of the full software program in order to provide the customer with a feel for the functionality of the program. However, since the demonstration version normally is not a fully operating version of the program, it does not provide a customer with a complete picture of the program's functionality. Therefore, demonstration versions are limited in how they may assist a customer in deciding whether to purchase a particular software program.
Recently, some software vendors are providing fully operating versions of software programs which a customer may sample. These software programs are intended to be securely stored on a particular storage medium. Therefore, when a customer samples a fully CA 02223409 l997-l2-03 WO 96/41449 PCT/US~GJ'~9916 operating version of a program, the program being sampled is securely maintained by another program which seeks to prevent the customer from obtaining a free copy of the sampled program.
These software vendors typically distribute the programs to be sampled on some type of transportable storage medium. For example, a software vendor may provide a floppy diskette on which is contained the program to be sampled. The diskette may be locked through changes to the physical storage medium such that the customer may not obtain a free copy of the program.
Other software vendors provide a CD-ROM which stores a large number of programs which may be sampled. Such a CD-ROM typically contains a program which manages and in effect supervises the sampling of the programs such that a customer may not obtain copies of the programs without first purchasing them and obtaining particular unlocking codes.
These distribution systems for sampling fully operating versions of programs, however, are generally limited in that they do not provide for on-line distribution. These systems typically distribute the programs on some type of transportable storage medium, such as a CD-ROM or hard disk drive sold with a computer. This type of distribution can be more burdensome to the computer user, because an on-line distribution channel is more easily accessible, since the computer users need simply "dial up" a network or bulletin board.
These systems for providing the sampling of fully operating versions of programs are also limited in the security provided to the programs being sampled.
For example, they typically prevent unauthorized copying of programs by dividing the program or removing portions of the program such that a secure ~key" is required to reassemble the program and thus operate it. These methods, however, require that one tamper with the program, which can make the program unstable. In WO96/41449 PCT/U~5 ~9316 addition, these methods typically do not work with all applications. For example, some applications use a checksum program to prevent damage from computer viruses. These distribution methods change the format of the program, which can result in the checksum virus check incorrectly returning an error or message that the program is corrupted.
SUMM~Y OF T~ v~ lON
One aspect of the is a system and method for demonstrating software programs to a potential purchaser of the programs and for gathering marketing information related to the demonstration of the programs. The system receives a plurality of software programs to be demonstrated and maintains each of the software programs in a locked state in order to prevent unauthorized duplication of the software programs.
Any of the software programs are enabled for execution upon selection by a user, and the user is allowed to subsequently operate or sample the selected software program. The system maintains the selected software program in the locked state during the sampling in order to prevent unauthorized duplication of the selected software program. The sampling of the selected software program is selectively disabled, such as when the user completes the sampling or if the system detects that the user is attempting to copy the sampled application.
In addition, a code is generated that identifies a particular software program in the plurality of software programs and contains information relating to sampling of the particular software program by the user, such as which applications were sampled and how many times they were sampled.
Another aspect of the invention is an on-line system and method for demonstrating software programs to a potential purchaser of the programs. The system receives from an on-line system a software program to be CA 02223409 l997-l2-03 WO 96/41449 PCT~US96/09916 demonstrated, and maintains the software program in a locked state in order to prevent unauthorized duplication of the software program.
The software program is enabled for execution upon selection by a user, and the user is allowed to subsequently operate or sample the software program.
The system maintains the software program in the locked state during the sampling in order to prevent unauthorized duplication of the software program. The sampling of the software program is selectively disabled, such as when the user completes the sampling or if the system detects that the user is attempting to copy the sampled application.
A further aspect of the invention is a self-launching system associated with a software program, andmethod for implementing a self-launching system, for demonstrating the software program to a potential purchaser of the program. The self-launching system is attached to a software program. The system maintains the software program in a locked state in order to prevent unauthorized duplication of the software program.
The self-launching system also includes the ability to launch itself when a user selects the software program. Upon launching itself, the system enables the software program for execution upon selection by the user, and allows the user to subsequently sample the software program. The system maintains the software program in the locked state during the sampling in order to prevent unauthorized duplication of the software program. The sampling of the software program is selectively disabled, such as when the user completes the sampling or if the system detects that the user is attempting to copy the sampled application.
An additional aspect of the invention is a self-launching system associated with a software program or other digital information, and method for CA 02223409 l997-l2-03 implementing such a system, for distributing the software program or other digital information to a potential purchaser of the program. The self-launching system is attached to a software program or other digital information. The system maintains the software program or other digital information in a locked state in order to prevent unauthorized copying of the software program or other digital information.
The self-launching system also includes the ability to launch itself when a user selects the software program or other digital information. Upon launching itself, the system unlocks the software program or other digital information in response to a request to purchase the software program or other digital information.
Still another aspect of the invention is a system and method for storing a code within an operating system of a computer in order to identify whether the computer has executed a particular software program.
The system receives an indication that the computer has executed the software program, and searches a non-volatile memory in which the operating system for the computer is stored in order to locate spare memory locations. The system writes a code to at least one of the spare memory locations. The code provides an indication that the computer has executed the software program. The system associates the code with the software program in order to provide the indication that the computer has previously executed the program.
An even further aspect of the invention is a system and method for preventing unauthorized duplication of a particular software program among a plurality of active software programs executed on a computer. The system receives an indication that the computer is executing the particular software program, and then monitors operation of the computer to determine which of the plurality of the active software programs is being currently executed. When the system determines W 0 96/41449 PCT/U~36/~'3316 through the monitoring that the particular software program is not the currently executed software program, it disables execution of the particular software program.
An additional aspect of the invention is a computer-based system for automatic sales of software programs. The system accesses a software program within a computer database and maintains the software program in a locked state in order to prevent unauthorized duplication of the software program. In response to a request to purchase the software program, the system unlocks a copy of the software program and distributes the unlocked copy. The system records how many copies of the software program have been distributed in response to the purchase requests.
BRI~F DF~CRIPTION OF T~F DRAWINGS
FIG. 1 is a diagram of the conceptual operation of a software or digital information distribution system.
FIG. 2 is a block diagram of hardware components for implementing a software or digital information distribution system.
FIG. 3 is a user interface for a software or digital information distribution system illustrating examples of programs available to be sampled and/or purchased.
FIG. 4A is a diagram of software program files used by a software or digital information distribution system.
FIGS. 4B and 4C are diagrams of a package file system for use in maintaining software programs or digital information in a locked state.
FIG. 5 is a diagram of background processes used by a software or digital information distribution system.
FIG. 6 is a flow chart of a preferred active process detection routine.
WO96/41449 PCT~S96/09916 FIG. 7 is a flow chart of a preferred background processing setup routine.
FIG. 8 is a flow chart of a preferred check status of sample count files routine.
5FIG. 9 is a flow chart of a preferred "do open" routine.
FIG. 10 is a flow chart of a preferred "do prime" routine.
FIG. 11 is a flow chart of a preferred image driver routine.
FIG. 12 is a flow chart of a preferred install active process detection code routine.
FIG. 13 is a flow chart of a preferred install image driver routine.
lSFIG. 14 is a flow chart of a preferred open driver routine.
FIG. 15 is a flow chart of a preferred sample count manager routine.
FIG. 16A is a flow chart of a preferred sector encryption/decryption routine.
FIG. 16B is a flow chart of a preferred varying positional key encryption/decryption routine used with the routine of FIG. 16A.
FIG. 17 is a flow chart of a preferred setup sample counter routine.
FIG. 18 is a flow chart of a preferred watchdog task routine.
FIG. 19 is a flow chart of a preferred purchase routine for allowing users to purchase sampled software programs.
FIG. 20 is a flow chart of a preferred process for a self-launching and on-line self-launching software or digital information distribution system.
FIG. 21 is a flow chart of a preferred process for generating a serial number which contains identification of marketing information for sampled software programs.
WO 96/41449 PCT~S96/09916 FIG. 22 is a flow chart of a preferred process for automatic sale of software programs.
DF~TATTl~n DFSCRIPTION
FIG. 1 is a conceptual diagram of the operation of a software or digital information distribution system. A user or customer 10 may sample a software program 12, which typically involves working with a fully operating version of the software program 10 12. The system preferably maintains a secure interface or protective envelope 14 around the software program 12 such that the user 10 may not obtain a copy of the software program without first purchasing it. The system preferably maintains the sampled program in a 15 locked state during the sampling of the program in order to prevent unauthorized duplication of the program, for example, during the sampling. The system selectively disables the sampling of the selected software program, such as when the user completes the sampling or tampers 20 with the program during the sampling. The use of a secure interface or protective envelope 14 provides the advantage of not tampering with the program for security purposes. This type of scheme for maintaining a program in a locked state is described below. Other methods for 25 maintaining software programs in a locked state to prevent unauthorized copying of the program are possible, such as is disclosed in U.S. Patent Nos.
4,658, 093; 4,740, 890; 4,999, 806; and 5, 341, 429.
If the user 10 purchases the software program 12, then the system copies an unlocked copy of the software program 16 to a storage medium where the user may access and continue to use the program. "Software program," "program," and "application,~' are used interchangeably herein.
3 5 The present invention can also distribute digital information (12), as indicated in FIG . 1. The present invention views the distributed entity as "bits," whether it is a software program which includes WO96/41449 PCT~S96/09916 functionality for controlling the operation of a computer, or simply other types of information in digital form. Therefore, the principles of the present invention used for distribution of information apply to digital information generally, software programs being a type of digital information. Digital information includes information capable of being represented in digital form. Digital information thus includes software programs and also includes intellectual property such as data representing creative or artist expression. Other examples of digital information include: textual works such as books and articles;
music; video; music video; fonts; graphics; and clip art.
In distributing digital information, a user may have the option to sample the information. For example, when distributing locked movies in digital form, a user may be allowed to view the first few minutes of the movie. For distributing music, a user may be allowed to sample a representative portion of the music. If the digital information is a software program, the user may be allowed to sample the program, as mentioned above.
The digital information may also be distributed without sample capability. For example, a publisher may distribute a CD-ROM having several locked ~white papers" or technical works. The system can, for example, only display titles or abstracts to a user for purposes of allowing the user to decide which if any textual works to purchase. When a user requests to purchase one or more of the papers, the system unlocks the paper and distributes it to the user. This distribution scheme thus provides the advantage of allowing one to purchase individual textual works in a collection without having purchase the entire compilation.
The system, therefore, maintains the digital information in a locked state by using the secure WO96/41449 PCT/U~3~95l6 interface or protective envelope 14. When a user requests to purchase the information and provides any required information such as a credit card number, the system distributes an unlocked copy (16) of the digital information to the user.
FIG. 2 is a diagram of typical hardware components for implementing a software or digital information distribution system. The system includes a computer 18 which is a typical digital computer such as a personal computer. The computer 18 includes a microprocessor 20 for executing software programs. The microprocessor 20 is interfaced with a read only memory 22 and random access memory 24. The computer 18 is interfaced with an input device 26 for entering comm~n~.
or information into the computer 18. The input device 26 may be implemented with, for example, a keyboard, touch screen, light pen, "mouse" or other cursor control device such as a trackball, or other device for entering information or commands into the computer 18. The computer 18 is typically interfaced with a printer 28, which may be implemented with a typical computer printer for generating a hard copy of the information stored within the computer 18. The computer 18 is also typically interfaced with a display device 30, which may be implemented with a typical color or monochrome computer monitor. A preferred hardware platform for implementing the present invention is a Macintosh computer, developed and sold by Apple Computer, Inc.
The computer 18 is also preferably interfaced to devices from which it may receive software programs to be sampled optionally along with a software program for managing the sampling of additional software programs. These external devices may include a digital audiotape drive 32, disk drive 34, hard disk drive 36, CD-ROM drive 38, or an on-line system 42 interfaced through a modem 40. The on-line system 42 may be interfaced to existing networks or on-line services such as, for example, the Internet, America OnLine , and WO96/41449 PCT~S96/09916 .
Prodlgy . Computer users may download 1nformatlon from networks such as the Internet.
FIG. 3 is a user interface of a software or digital information distribution system operating within the computer 18 by the microprocessor 20. User interface 50 displays in window 44 a plurality of programs which a user may sample and/or purchase.
Alternatively, window 44 can display an identification of digital information available for purchase. In order to sample a particular program, a user would select one of the plurality of programs in window 44 and then select icon 46. In addition, the system allows a user to select other information identified in window 52, and that information is displayed in window 51, such as:
program information; system re~uirements; information about "getting started" with a particular application;
publisher information; licensing agreement; and packaging photos.
If the user desires to purchase one of the programs, a user would select the purchase icon 48 and optionally the install icon 47 in order to have the program automatically installed. When a user samples a particular program, the system preferably displays the number of samples remaining at location 49 and optionally additional information such as the version of the sampled program. As explained below, the system can thus control how many samples are available to the user.
FIG. 3 is one example of user interfaces for a software or digital information distribution system. Other user interfaces or ways of allowing a user to interact with the system are possible for such a system.
FIG. 4A is a diagram of files used by a software or digital information distribution system. An example of a software or digital information distribution system is also referred to as a "distribution application" in the present specification.
The system typically uses an image driver 56 and invisible files 60. FIG. 4A also illustrates how a CA 02223409 l997-l2-03 W O 96/41449 PCTfUS96/09916 software or digital information distribution system may be implemented in a separate "stand-alone" version and a self-launching version. In one embodiment, the system 58 is a separate software program which interfaces an encrypted package 62 containing a usage file 64 and a program or digital information 66 to be distributed and/or sampled. The usage file 64 typically contains a separate redundant copy of how the program or digital information is to be used; for example, how many samples are available. This is in addition to the invisible files, which store encrypted copies of how many samples are available, as explained below. Accordingly, the usage file 64 provides another level of protection in the event that a user tampers with or otherwise alters the sample count information in the invisible files.
The software program or digital information is preferably encrypted, as explained below, in order to prevent a user from obtaining a "free" copy of the information.
In another embodiment, a self-launching system implementing a software or digital information distribution system 72 iS attached to a usage file 70 and program or digital information 74 to be distributed and/or sampled. In this embodiment, distribution application is attached to each program or information to be distributed and/or sampled and its operation is thus essentially invisible to the user. Therefore, instead of requiring a user to install a software or digital information distribution system and then sample other software programs, a user may simply download each program to be sampled and/or purchased. Each of those packages contains a distribution application for controlling the sampling or distribution of software programs or digital information along with such programs or information.
The distribution application 72 iS typically attached to the encrypted package by joining the distribution application stored in a resource fork and WO96/41449 PCT~S96~5l6 the encrypted package stored in the data fork into one file 71. The operation of the resource fork for storing structured data and the data fork for storing random access data in a Macintosh computer system is well known. Therefore, the file 71 includes the distribution application 72 "wrapped around" the encrypted package 68 which includes an encrypted application or digital information 74 along with the encrypted usage file 70.
The distribution application 72 also contains the invisible files. The package 68 is typically encrypted in the same manner as package 62.
As mentioned above, applications used by a software or digital information distribution system are maintained in a locked state. This locked state is used to prevent unauthorized copying of the program both while it is stored and when a user samples it. The applications to be sampled are typically in a form only usable by a software or digital information distribution system in order to ensure security. Encryption as part of a locked state is typically accomplished by exclusive-ORing ("XORing") each byte of the application with a positional variant, as is explained with reference to FIGS. 16A and 16B. In addition, a package file system is also typically used as a part of a locked state to ensure security of the applications in a locked state.
This package file system is illustrated in FIGS. 4B and 4C. As shown in FIG. 4B, a package file in a Macintosh computer system works much like a random access memory (RAM) disk except that it is in non-volatile memory. An image file 77 which is the desired size of a "virtual volume" created by a software or digital information distribution system is allocated on a hard drive 75 or other non-volatile storage medium.
Locked applications or digital information are stored within this partition. In a self-launching distribution application, the distribution application and image file WO96/41449 PCT~S9~95l6 appear as one file 67. A distribution application file 73 is also stored on the storage medium 75.
As shown in FIG. 4C, the image file 77, or in the self-launching case the distribution application/image file 67, is internally given the same structure as a floppy disk. A distribution application 69 then informs the operating system of the corresponding computer that a "floppy disk" 79 is actually mounted. The operating system of a computer system 81 sends read/write requests 85 to the virtual volume 79. Instead of writing to a physical media, the driver of the computer's operating system writes to the virtual volume 79. The image driver 83 of the distribution application 69 performs reading and writing to the image files 77 and 67. This technique is also known as a "soft partition," because the hard drive on which the image file is located has been effectively partitioned via software. Accordingly, a distribution application 69 can reserve this virtual volume in order to control reading and writing to this partition (the physical media) and thus prevent unauthorized copying of applications or digital information in this partition.
FIG. 5 is a diagram of background processes used by a software or digital information distribution system implemented within the computer 18 and executed by the microprocessor 20. The background processes preferably include an active process detection 76, image driver 78, sample count manager 80, sector encryption/decryption 82, and watchdog task 84, all of which are described below.
FIG. 6 is a flow chart of an active process detection routine. On an exemplary embodiment on a Macintosh computer, this routine is implemented by a patch to the system trap called SystemTask. This trap is called consistently by all applications many times a second. What makes this work is that the Finder intercepts calls to SystemTask, and only passes on the call of the application that is the "active~ or current CA 02223409 l997-l2-03 PCTIUS 96/09916 IPEA/US 18 J~IL 1997 "front-most" process. Therefore, when a patch to SystemTask is called, the system assumes that the front application called it. The system then checks the low level variable AppName to retrieve the name of the current front-most application.
In a windows or multi-tasking environment, several applications can be represented by windows which may overlap. A currently-active application is typically represented in a window which appears in front of the other windows, or is otherwise highlighted or altered to indicate that it is the currently-active _ program if, for example, the displayed window$ are not overlapping.
The routine begins when the system task is - 15 called (86). The system retrieves the front-most application name (88) and determines if the sample program is in front (90). The sample program is the software program being sampled by the user. The system determines if this is the top-most or front-most program displayed on a user's monitor. If it is the application in front, the system determines if sample time limit has expired (92); otherwise, the system determines if a distribution application is in front (94). A time limit provides for additional security by limiting how long a user may sample a particular application. If the time limit has not expired, the system sets a flag to enable the image driver (100) and calls the original system task (108). Otherwise, if the sample time limit has expired, the system terminates the sample application (98).
If as determined at step 94 the sample application is in front, the system sets a flag to enable the image driver (96); otherwise, a flag is set to disable the image driver ( 102). Next, the system determines if the sample application file is still open (104). If it is not, the system closes and unmounts the virtual volume ( 106) and calls the original SystemTask (108).
CA 02223409 l997-l2-03 W 0 96/41449 PCTrUSg~9516 The routine of monitoring which application is "in front" thus provides a security measure by preventing the unauthorized copying of an application while it is being sampled. This system for preventing unauthorized duplication of a particular software program among a plurality of active software programs executed on a computer typically includes the following features. It receives an indication that the computer is executing the particular software program, and monitors operation of the computer to determine which of the plurality of the active software programs is being currently executed. Execution of the particular software program is disabled when the monitoring determines that the particular software program is not the currently-active or top-most software program.
FIG. 7 is a flow chart of a background processing setup routine. In this routine, the system decrypts and installs a background processing code (110); initializes the global variables (112); installs a watchdog task (114~ (see FIG. 18); installs active process detection code (116) (see FIG. 12); sets up a sample counter (118) (see FIG. 17); sets up interprocess communication vectors (120); and installs an image driver (122) (see FIG. 13).
FIG. 8 is a flow chart of a check status of sample count files routine. The system preferably uses sample count files stored within the computer 18 as invisible files. These sample count files are preferably each identical and maintain the sample count.
Each file typically contains an identification of each application and the number of allowed samples for each of the applications. If the user attempts to tamper with a particular sample count file in order to obtain more samples, the system detects that tampering by comparing the tampered file with the other sample count files. In addition, the invisible files are preferably encrypted for additional security, such as using an XOR
WO96/41449 PCT~S96/~95l6 operation with a key and a bit shift of the sample counts.
In this routine, the system determines at steps 124, 128, and 132 if the sample count files one, two, and three, respectively, have been created. If the sample count files have not been created, the system creates the corresponding sample count files at steps 126, 130 and 134. While the system uses three sample count files, more or fewer files may be used.
FIG. 9 is a flow chart of a "do open" routine.
The system first retrieves the address of "OK to Read"
flag from a background code via interprocess communication (136). Next, the system retrieves the address of a sector decryption routine from the background code via interprocess communication (138) and sets standard open flags (140).
FIG. 10 is a flow chart of a "do prime"
routine. The system first determines if this is read call (142). This test makes the driver read only. If this is not a read call, the system returns an error (154). Otherwise, the system proceeds with the routine and retrieves a value of a flag in the background process (144). It is next determined if the flag value has been updated within the last two seconds (146), for example. A flag is stored in the background process that is constantly updated by the watchdog task. If the flag has not been updated in the last two seconds, for example, it means that either a valid application is not "in front" (the sample application or distribution application) as explained above, or that a user is using a debugger to examine the code which implements the system. If the flag value has been updated in the last two seconds, the system reads requested sectors from ~virtual" volume (150) and returns no error (152).
The system decrypts the sectors while reading them. The encryption/decryption of sector is explained with reference to FIGS. 16A and 16B. If the sectors of the application are compressed, the system also CA 02223409 l997-l2-03 WO 96/41449 PCT/U536J'~9916 decompresses the sectors while reading them. An example of an asymmetrical compression/decompression algorithm, which produces a relatively short decompression time in comparison to compression time, is Apple Computer, Inc.'s Cinepak compression scheme at a lossless level.
If the flag value has not been updated, the system determines if this is a directory or volume information block (148). If it is, the system executes step 150 and returns no error ( 152). Otherwise, the system returns an error ( 154).
FIG. 11 is a flow chart of an image driver routine. The image driver preferably includes the following functions: open call (156); prime call (160);
control call (164); status call (168); and close call (172). If any of these functions have been called, then the system performs the corresponding routine: do open (158); do prime (162); do control (166); do status (170); do close (174). The do prime call (162) iS
illustrated in FIG. 10. The other calls (158, 166, 170, 174) are well known in a Macintosh computer system.
FIG. 12 iS a flow chart of an install active process detection code routine. This routine involves performing a patch system task trap ( 176), which is illustrated in FIG. 6.
FIG. 13 is a flow chart of an install image driver routine. In this routine, the system decrypts a driver code from a disk into memory within the computer 18 (178). The image driver is encrypted for security purposes so that a user cannot view the driver. The encryption/decryption of the driver is typically accomplished using the technique explained with reference to FIGS. 16A and 16B. The system locks the driver code into memory (180). The system then opens the driver ( 182).
FIG. 14 iS a flow chart of an open driver routine. In this routine, the system sets up an interprocess communication vectors (184), which instructs the system where to locate global data.
W O 96141449 PCT~USg6~9~16 FIG. 15 is a flow chart of a sample count manager routine. This routine is executed when the user requests a sample (186). The system checks to determine if samples are available (188) by checking the sample count files within the database. If samples are available, the system mounts the virtual volume (192).
If the use is on-line, then the system downloads the software packages containing encrypted programs to be sampled and usage file and mounts the virtual volume (190). The packages are typically compressed for transmission using, for example, Apple Computer, Inc.'s Cinepak compression scheme at a lossless level, and are transmitted using TC/IP protocol.
The system then determines if the loaded image matches the database image (196) for security purposes.
If the image does not match, the database data is rectified to that of the image (198) and the virtual volume is closed and unmounted (194) in order to maintain the application in a locked state. Otherwise, the system checks the redundant sample count on the virtual volume to determine if samples are available and in particular if a sample count files have been tampered with (200). If no samples are available, the virtual volume is closed and unmounted (220). Otherwise, the system decrements the sample count and launches the application (204) so that the user may operate the application to be sampled.
FIG. 16A is a flow chart of a sector encryption/decryption routine. This routine performs encryption of the distributed digital information for security purposes in order to prevent unauthorized duplication of the information. In this routine, the system determines if encryption or decryption is required (206). The system then performs the appropriate decryption (208) or encryption (210) function. FIG. 16B is a flow chart of a preferred varying positional key encryption/decryption routine used with the routine of FIG. 16A. The routine in FIG.
WO96/41449 PCT~S96/09916 16B performs the actual encryption/decryption of data and is an example of how to encrypt/decrypt the encrypted packages 62 and 68 (see FIG. 4A) which contain the distributed software programs or digital information and usage files. Other encryption schemes are possible.
The significance of the encryption scheme is in providing protection of the distributed information so that one may not obtain an unauthorized copy of the information without considerable time, effort, and processing capability.
The encryption/decryption routine of FIG. 16B
uses a varying key based on byte position, also referred to as a positional variant. The system determines if sector encryption/decryption is required (201). If it is, the system decrypts the first 512 byte block (203) and then executes loops, as determined by steps 205, 207, 213, and 215, in order to encrypt/decrypt each byte in a series a 512 byte blocks. The encryption/
decryption of each byte involves first at step 209 a permutation to determine a key with the key =
log(position MODULO 512) X $23FEC392, and then at step 211 applying the key to the byte with an XOR operation.
FIG. 17 is a flow chart of a setup sample counter routine. The system checks the boot block flags (212) and checks status of sample count files (214).
This involves writing predetermined codes to spare boot blocks of the computer in order to mark the database to identify the execution of a software or digital information distribution system. Accordingly, these codes written to the boot blocks provide an indication that a distribution application has been run before on this particular computer.
This system for storing a code within an operating system of a computer in order to identify whether the computer has executed a particular software program typically includes the following features. It receives an indication that the computer has executed the software program, and searches a non-volatile memory r'CTIUS t 6 / ~ 9 9 16 in which the operating system for the computer is stored in order to locate spare memory locations within the non-volatile memory. A code is written to at least one of the spare memory locations, and the code provides an indication that the computer has executed the software program. The code is associated with the software program to provide the indication.
In the routine shown in FIG. 17, the system determines if the sample counter system has been set up before on this particular computer (216). If it has been set up before, the system determines if all three _ sample count files are new (218) and if they a-re, it executes the following steps: fill new files with the value "one" at each location (200); write file creation dates to boot blocks (224); and write file check sums to boot blocks (226). When the sample count files are initialized the first time the system is executed, the value "one" is written to the files in order to signal that the files are secure and the system can, therefore, write sample count values to the files. Otherwise, the system fills new files with the value "minus one" at each location within the boot blocks (222). The "minus one" value indicates to the system that the corresponding sample count file has been tampered with or is otherwise corrupted or not secure. Accordingly, the system checks the other sample count files in order to verify their security. If all sample count files have a value of "minus one," this condition indicates that all sample count files have been corrupted and the user is not allowed no more samples. If less than all sample count files have a value of "minus one," then the system can reconstruct the corrupted files using a value in the secure or non-corrupted sample count file. The system also preferably verifies the sample count information in the invisible files against the information in the usage file.
FIG. 18 is a flow chart of a watchdog task routine. This is a VBL task, meaning it runs every time dhtENl~ S.~
CA 02223409 l997-l2-03 W 096/41449 PCT~US96/09916 there is a vertical blanking interrupt. For most monitors, that is approximately 72 times per second.
The routine has three functions. It performs a check to determine if the sample application has timed out, and sets a flag accordingly. It tests to determine if it may allow the driver read, and updates a flag with the current time to be checked by the driver. It also encrypts and decrypts sample counts that are being written/to and read/from the sample count files. It performs this encryption in multiple phases, simulating an asynchronous process. What this does is make it very difficult for a user to determine where the encryption/decryption is being performed.
In the routine, the system checks for an application time out (228). It then determines if it is "OK" for the driver to read (230). If it is, it sets a flag to a current time (234). Otherwise, it sets a flag to zero (232). The system then determines if a sample count requires encryption (236). If it requires encryption, the system performs a phase of sample count encryption (238). Otherwise, the system determines if a sample count reads decryption ( 240), and if so, the system performs a phase of sample count decryption (242).
This phase encryption/decryption scheme is a subset of the sample count manage routine and works as follows. At various times, the distribution application needs to determine how many samples of a particular application remain. At these times, the distribution 30 application reads an encrypted string from the invisible files. It then takes this information, transfers the information into global memory, signals to the watchdog task that a count needs decryption, and then places itself into a seemingly endless loop. The watchdog 35 task, having been signaled to begin, decrypts the count in three phases to ensure that the full algorithm is never directly viewed by a user. On each pass, the watchdog task performs an XOR and bit rotation and then WO 96/41449 PCTrUS9G/~9516 increments the phase count. The next time the watchdog task executes, if there is still more work to be done, it executes another encryption phase. If not, it signals the application that encryption is now finished.
The distribution application then exits the infinite loop and memory contains the correct sample count.
FIG. 19 is a flow chart of a purchase routine for allowing users to purchase sampled software programs. This routine is executed when a user requests to purchase a program or digital information (243). The system can unlock software programs or digital information in response to a request to purchase the software program or digital information. The system can optionally verify purchase information, such as a credit card number, before executing an unlocking process.
The system typically checks if the application has previously been purchased (244). If it has been purchased previously, the system checks to determine if this purchase request is an archive install (248). If it is an archive install, the system installs the application (254). For a regular purchase, the system generates or retrieves a serial number or key code (246) used for calculating a password to unlock the program.
This serial number or key code is typically provided in a purchase dialog or window when the user selects the purchase key 4 8 (see FIG. 3). The purchase window also includes an area for a user to enter the password. The key code and corresponding password, as explained below, are preferably dynamically generated when the user opens the purchase window such that a new key code and password are generated each time the user opens the purchase window. In addition, the password preferably only exists in memory, and only as long as the user has a purchase dialog or window open. These features provide additional security by dynamically changing the key code and password.
If the use is on-line, the system preferably automatically registers the application with a vendor CA 02223409 l997-l2-03 W 0 96/41449 PCT~USg~5516 and then unlocks the application or digital information (250) through the on-line connection with the distribution center.
Otherwise, the system can manually register the application with the vendor and provide a user with the password for unlocking the application or digital information (252). The manual registration typically occurs with the user calling up a distribution center and providing them with the serial number or key code as provided in a purchase dialog and possibly other information such as a credit card number. The distribution center in response provides the user with a password used for unlocking the application, and the user may then manually enter the password in the 15 purchase window. Accordingly, steps 250 and 252 also involve generating the password from the serial number or key code. The serial number or key code provided by the user is processed using an identical decoding function, explained below, as on the user's machine, generating the same password that is stored in memory on the user's machine. The entered password is compared with the one stored in memory. If they match, the purchase is completed.
Accordingly, if the correct password is entered, either manually or automatically, the system proceeds to install the application or digital information (254). If the wrong password was entered, such as in the manual unlocking, then the system ~returns" and does not unlock the application or digital information.
The installation typically occurs by decrypting a copy of the application or digital information and copying the unlocked application or digital information to a hard drive or other storage medium on the user's computer. The decryption is typically accomplished by copying the application or digital information via a pipeline from its current location in memory to a new (non-reserved) portion of WO96/41449 PCT~S96/09916 the user's hard disk drive or other storage medium which is outside of the partition reserved by a software or digital information distribution system. While the application or digital information is copied to the non-reserved portion, it is typically decrypted by using thetechnique explained with reference to FIGS. 16A and 16B.
Accordingly, after this unlocking routine is complete, a locked copy of the application or digital information remains within the reserved partition and an unlocked copy of the application or digital information resides on the user's hard disk drive or some other storage medium. The unlocking and installation may occur simultaneously. In addition, while software programs typically require installation to run, other types of digital information may require only unlocking.
After the application is purchased, a user preferably has full use of the program or digital information. A vendor or distribution center may mail manuals or any other documentation for the purchased program to the user who purchased the program.
Alternatively, the manuals and documentation may be distributed with the program and maintained in a locked state with the program. When a user purchases the program, the manuals and documentation may then also be unlocked so that the user can view them electronically or produce a hard copy using a computer printer.
FIG. 20 is a flow chart of a process for a self-launching and on-line self-launching software or digital information distribution system. A self-launching system has the advantage of not requiring aseparate browser for distribution and/or sampling of applications or digital information. The operation of the system is thus essentially invisible to the user, since the system preferably "appears" to the user as an application or digital information and launches itself when a user selects the application or digital information.
WO96/41449 PCT/U~Gf~16 According, a self-launching system for demonstrating applications typically includes the following features. The system is attached to a software program such as in one file as described above.
The system maintains the software program in a locked state in order to prevent unauthorized duplication of the software program, such as with encryption and a package file system described above. When a user selects the software program, the system launches itself and can enable the software program for execution by the user and allow the user to subsequently sample the software program. The system maintains the software program in the locked state during the sampling of the software program in order to prevent unauthorized duplication of the software program, and selectively disables the sampling of the software program.-A self-launching system for distributing applications or digital information typically includes the following features. The system is attached to an application or digital information such as in one file as described above. The system maintains the application or digital information in a locked state in order to prevent unauthorized duplication, such as with encryption and a package file system described above.
When a user selects the application or digital information, the system launches itself and can unlock the application or digital information in response to a purchase request.
Self-launching and on-line self-launching software or digital information distribution systems preferably use the processing described above in addition to the steps shown in FIG. 20. In order to sample an application, a user in a self-launching system typically selects an application (256). This may occur by, for example, "double clicking" on an icon displayed on a display device and corresponding to the application. In the self-launching system, therefore, the applications typically appear to the user as W 096/41449 PCT/U~3G~'~3~16 executable programs even though they are locked and may only be sampled by the user or purchased upon providing the required information. After the user selects the application to sample, the code for the distribution application executes (258) . If the use is on-line, the software package described above is first downloaded (257) before executing. The software package is typically one file (see FIG. 4 A) which includes a distribution application and an encrypted package and is thus transmitted for on-line use as one file. The encryption is typically accomplished using the technique described with reference to FIGS. 16A and 16B. The encryption protects the software programs or digital information during transmission. This file is typically compression for transmission using, for example, Apple Computer, Inc.'s Cinepak compression scheme at a lossless level, and is transmitted using TC/IP protocol.
The system then, as described above, checks to determine if all samples have been used (260) . If samples are remaining, the system code mounts a data fork of file as the virtual volume (262) and decrements the usage count and the files in the virtual volume (264) . The system then proceeds with the processing described in the other flow charts provided in the present specification.
If the self-launching system involves distribution of digital information without allowing sampling, then the system typically checks to determine if the information has been purchased (259) . If is has been purchased, then the system executes step 262 and bypasses step 264, since samples are not available. If the information has not been purchased, then the system typically checks to determine if the user wants to purchase the information (261) . If the system receives a purchase request, then it executes a purchase routine 263 (see FIG. 19).
FIG. 21 is a flow chart of a process for generating a serial number which contains identification CA 02223409 l997-l2-03 W O 96/41449 PCT~US96/09916 of marketing information for software programs. The system retrieves the raw data from a sample count files (266), which includes an identification of how many times a user sampled each application. The system then calculates marketing statistics and formats such information into a series of bytes (268). This step may involve, for example, the following: determining the total number of samples used (270); determining how many times each application was sampled (272); determining a most frequently sampled application (274); determining a category of a most frequently sampled program (276);
determining which version of particular applications a user has sampled (277); or other statistics to be determined, for example, by a distributor (278). Other statistics may include, for example, statistics related to time duration of the samples, such as an average time duration of sampling, which may be obtained using a computer's internal clock and timing each sample.
Examples of categories of software programs include, but are not limited to: business software, games, financial management programs, and educational programs. A vendor or distributor may also create their own categories and electronically associate programs with those categories.
Gathering these statistics provides for many advantages and value in distributing programs to be sampled. For example, it allows vendors to identify programs which are not popular and replace them with programs which have a higher sales rate. It also allows vendors to identify the most popular programs and include more programs for sale in the same categories.
Identifying a category of a user's most frequently sampled program also allows vendors to market additional similar products to that particular user and thus increase the likelihood that the user will purchase more software from the vendor. For example, when the user calls the vendor to purchase a program, the vendor can quickly identify the most frequently sampled program category by decoding the code (serial number) of the WO96/41449 PCT~S96/09916 purchased program. The vendor could then immediately offer any additional programs for sale which are in the same category and perhaps "on sale" or subject to a discount.
Given the information provided by the sample count files, the information for the marketing statistics can be determined with simple calculations.
The sample count files contain an identification of each application and the number of samples rem~;n'ng for the corresponding application. Therefore, by knowing how many samples were originally available, the system can determine the number of samples used for each application by samples remaining from the original number of allowed samples. The system can add up the number of samples used to determine a total number of samples used. Other statistics can be calculated in a similar manner using the information in the sample count files and possibly other information such as categories of sampled applications.
A distributor may determine that other statistics are desired and the system would then execute additional steps as part of step 268, as mentioned above. The system determines if more statistics are required (279). The system continues to execute steps for determining statistics until such processing is complete. As the system gathers and calculates the marketing statistics, it typically concatenates the resulting bytes, resulting in a series of bytes with byte representing a statistic. The system electronically associates each byte position with a statistic so that, by knowing a particular byte position, the system can decode the byte and produce the resulting statistic. The system then converts the series of bytes determine that step 268 into an ASCII
serial number (280). Table l provides an example of a file for associating byte positions with statistics.
WO96/41449 PCT~S96/09916 Table l byte position statistic 5 l total number of samples 2 number of application #l samples 3 number of application #2 samples 4 most frequently sampled category . . . ...
l0 N other statistic Appendix A provides an example of a source code listing in C programming language for converting the series of bytes determined in the processing shown in FIG. 21, and optionally other information, into a key code and password for use in unlocking the application or digital information. The code shown in Appendix A
generates both a key code and password using the marketing information (series of bytes described above) and the current date and time. The code shown in Appendix A can thus also be used to decode the key code and extract the series of bytes containing the marketing information. The key code is displayed to the user and in the purchase window and is what the user provides to a distribution center to obtain the password. This password is then used to unlock the application or digital information, as described above.
FIG. 22 is a flow chart of a process for automatic sale of software programs. One or more software programs, each in a locked state such as with the techniques described above, are stored in a computer database or available on-line. When one wants to purchase one or more of the programs, the system in response to the purchase request unlocks a copy of the program and maintains a record of how many copies were sold. An example of a use for this system is where a W096/41449 PCT~S96/09916 company routinely purchases additional copies of software programs such as when new employees are hired.
Accordingly, this system for automatic sales of software programs typically includes the following features. It accesses a software program within a computer database and maintains the software program in a locked state in order to prevent unauthorized duplication of the software program. In response to a request to purchase the software program, the system unlocks a copy of the software program and distributes the unlocked copy. The system also records how many copies of the software program have been distributed in response to the requests to purchase the software program.
As shown in FIG. 22, the system typically displays an indication of locked applications available for purchase by a user (292). If the use is on-line, the system downloads encrypted software packages containing programs and usage file (293). The encryption is typically accomplished using the technique described with reference to FIGS. 16A and 16B. The packages are typically compressed for transmission using, for example, Apple Computer, Inc.'s Cinepak compression scheme at a lossless level, and are transmitted using TC/IP protocol. If a user requests to sample a particular application (294), the system executes sample routines (296). The sample routines may be, for example, the routines described in the present specification. If the system receives a request to purchase an application (298), it preferably performs the following steps. The application is registered with a vendor and unlocked (300). A serial number is then optionally assigned to the purchased application (302).
The application is distributed and installed (304).
Then the system updates a sales record and issues an invoice (306) in order to record the application purchased and how many copies have been purchased. The WO96/41449 PCT~S96/09916 step 300 may be implemented as described in the other routines in the present specification.
While the present invention has been described in connection with a preferred embodiment thereof, it will be understood that many modifications will be readily apparent to those skilled in the art, and this application is intended to cover any adaptations or variations thereof. It is manifestly intended that this invention be limited only by the claims and equivalents thereof.
CA 02223409 l997-l2-03 WO 96/41449 PCTrUS96/~916 APPENDIX A
void CDolphinApp::DoPurchase() {
CSampleApp *theApp;
const short okItem = 1;
const short cancelItem = 2;
unsigned long templ = qd.randSeed;
unsigned long temp3;
GetDateTime(&temp3);
temp3 = temp3 & Ox00000065;
temp3 = temp3 >~ 2;
unsigned long tempO = *((long*~oxol46) temp3 = temp3 & Ox2F;
// ROL.L temp3,tempO
long a = tempO << temp3;
long b = tempO ~ (32 - temp3);
tempO = a ¦ b;
GetDateTime(&temp3);
templ = temp3 A templ;
a = temp3 << 7;
b = temp3 ~ (32 - 7);
tempO = a ¦ b;
temp3 = tempO ~ temp3;
gd.randSeed = tempO;
temp3 = temp3 & OxOOOOOOOE;
long keyCode = O;
for (short r = O; r < temp3; r++) keyCode = Random();
CStr255 usageCode;
unsigned long installedDate = gUsageInfo.GetInstalledDate ("Dolphin Prefere installedDate -= OxA81B3480;
installedDate = installedDate / Ox00093A80;
CStr255 instWkStr;
CodeNumber(installedDate,2,instWkStr);
long numOfProgsSampled = gUsageInfo.GetTotalAppsSampled () CStr255 numProgsSampledStr;
CodeNumber(numOfProgsSampled,2,numProgsSampledStr);
TopSampleA top5;
gUsageInfo.GetTop5SampledApps (top5);
CA 02223409 l997-l2-03 CStr255 numlAppStr;
CStr255 num2AppStr;
CodeNumber(top5[0],2,numlAppStr);
CodeNumber(top5 [1],2,num2AppStr);
long totalSamples = gUsageInfo.GetTotalNumOfSamples();
CStr255 totalSamplesStr;
CodeNumber(totalSamples,2,totalSamplesStr);
usageCode = instWkStr +
numProgsSampledStr +
numlAppStr +
num2AppStr +
totalSamplesStr;
}
CStr255 programNumStr;
CodeNumber (fSelectedAppID, 3, pLoyLd~ ~tr);
CStr255 keyCodeStr;
2 0 CodeNumber (keyCode, 4, keyCodeStr);
CStr255 targetPassword = deecode (keyCodeStr);
keyCodeStr = pLoyLdl-,NulllStr + CStr255("-") + keyCodeStr;
if ((itemHit == okItem) &&
(IUEqualString(password,purchaseBackDoor) == 0)) theApp-~SetToPurchased();
CRect upperLeftRect(0,0,150,60);
3 0 InvalRect (upperLeftRect);
InstallApp ();
}
if ((item~it ==okItem) &&
(IUEqualString(password,unPurchaseBackDoor) == 0 3 5 theApp-~SetToUnPurchased();
CRect upperLeftRect(0,0,150,60);
InvalRect(upperLeftRect);
}
4 0 } else {
SysBeep (l);
SysBeep (l);
}
}
void CodeNumber(long number, short digits, CStr255& theString) {
long temp2;
theString[0] = digits;
for (short index = digits; index ~ 0; index--) {
temp2 = number;
temp2 = temp2 & 0x000000lF;
DISTRIBUTION AND MAKKh~lN~ SYSTEM
FIF~T~n OF T~ INV~NTION
5The present invention relates to a system and method for gathering data related to usage of software programs sampled by a potential purchaser or other user of the programs.
RACKGROUN~ OF THF INVFNTION
Customers or potential purchasers of software programs often desire to test the programs before determining whether or not to purchase them. This may occur because written literature does not adequately provide the customer with a feel for the functionality of the software program when in operation. The written literature simply describes the program, and customers often want to actually work with the software program in order to determine if they want to buy the program.
Some software vendors provide demonstration programs of their software programs for sale. These demonstration programs typically are not the fully operating version of the software program. The demonstration program usually contains only some of the functionality of the full software program in order to provide the customer with a feel for the functionality of the program. However, since the demonstration version normally is not a fully operating version of the program, it does not provide a customer with a complete picture of the program's functionality. Therefore, demonstration versions are limited in how they may assist a customer in deciding whether to purchase a particular software program.
Recently, some software vendors are providing fully operating versions of software programs which a customer may sample. These software programs are intended to be securely stored on a particular storage medium. Therefore, when a customer samples a fully CA 02223409 l997-l2-03 WO 96/41449 PCT/US~GJ'~9916 operating version of a program, the program being sampled is securely maintained by another program which seeks to prevent the customer from obtaining a free copy of the sampled program.
These software vendors typically distribute the programs to be sampled on some type of transportable storage medium. For example, a software vendor may provide a floppy diskette on which is contained the program to be sampled. The diskette may be locked through changes to the physical storage medium such that the customer may not obtain a free copy of the program.
Other software vendors provide a CD-ROM which stores a large number of programs which may be sampled. Such a CD-ROM typically contains a program which manages and in effect supervises the sampling of the programs such that a customer may not obtain copies of the programs without first purchasing them and obtaining particular unlocking codes.
These distribution systems for sampling fully operating versions of programs, however, are generally limited in that they do not provide for on-line distribution. These systems typically distribute the programs on some type of transportable storage medium, such as a CD-ROM or hard disk drive sold with a computer. This type of distribution can be more burdensome to the computer user, because an on-line distribution channel is more easily accessible, since the computer users need simply "dial up" a network or bulletin board.
These systems for providing the sampling of fully operating versions of programs are also limited in the security provided to the programs being sampled.
For example, they typically prevent unauthorized copying of programs by dividing the program or removing portions of the program such that a secure ~key" is required to reassemble the program and thus operate it. These methods, however, require that one tamper with the program, which can make the program unstable. In WO96/41449 PCT/U~5 ~9316 addition, these methods typically do not work with all applications. For example, some applications use a checksum program to prevent damage from computer viruses. These distribution methods change the format of the program, which can result in the checksum virus check incorrectly returning an error or message that the program is corrupted.
SUMM~Y OF T~ v~ lON
One aspect of the is a system and method for demonstrating software programs to a potential purchaser of the programs and for gathering marketing information related to the demonstration of the programs. The system receives a plurality of software programs to be demonstrated and maintains each of the software programs in a locked state in order to prevent unauthorized duplication of the software programs.
Any of the software programs are enabled for execution upon selection by a user, and the user is allowed to subsequently operate or sample the selected software program. The system maintains the selected software program in the locked state during the sampling in order to prevent unauthorized duplication of the selected software program. The sampling of the selected software program is selectively disabled, such as when the user completes the sampling or if the system detects that the user is attempting to copy the sampled application.
In addition, a code is generated that identifies a particular software program in the plurality of software programs and contains information relating to sampling of the particular software program by the user, such as which applications were sampled and how many times they were sampled.
Another aspect of the invention is an on-line system and method for demonstrating software programs to a potential purchaser of the programs. The system receives from an on-line system a software program to be CA 02223409 l997-l2-03 WO 96/41449 PCT~US96/09916 demonstrated, and maintains the software program in a locked state in order to prevent unauthorized duplication of the software program.
The software program is enabled for execution upon selection by a user, and the user is allowed to subsequently operate or sample the software program.
The system maintains the software program in the locked state during the sampling in order to prevent unauthorized duplication of the software program. The sampling of the software program is selectively disabled, such as when the user completes the sampling or if the system detects that the user is attempting to copy the sampled application.
A further aspect of the invention is a self-launching system associated with a software program, andmethod for implementing a self-launching system, for demonstrating the software program to a potential purchaser of the program. The self-launching system is attached to a software program. The system maintains the software program in a locked state in order to prevent unauthorized duplication of the software program.
The self-launching system also includes the ability to launch itself when a user selects the software program. Upon launching itself, the system enables the software program for execution upon selection by the user, and allows the user to subsequently sample the software program. The system maintains the software program in the locked state during the sampling in order to prevent unauthorized duplication of the software program. The sampling of the software program is selectively disabled, such as when the user completes the sampling or if the system detects that the user is attempting to copy the sampled application.
An additional aspect of the invention is a self-launching system associated with a software program or other digital information, and method for CA 02223409 l997-l2-03 implementing such a system, for distributing the software program or other digital information to a potential purchaser of the program. The self-launching system is attached to a software program or other digital information. The system maintains the software program or other digital information in a locked state in order to prevent unauthorized copying of the software program or other digital information.
The self-launching system also includes the ability to launch itself when a user selects the software program or other digital information. Upon launching itself, the system unlocks the software program or other digital information in response to a request to purchase the software program or other digital information.
Still another aspect of the invention is a system and method for storing a code within an operating system of a computer in order to identify whether the computer has executed a particular software program.
The system receives an indication that the computer has executed the software program, and searches a non-volatile memory in which the operating system for the computer is stored in order to locate spare memory locations. The system writes a code to at least one of the spare memory locations. The code provides an indication that the computer has executed the software program. The system associates the code with the software program in order to provide the indication that the computer has previously executed the program.
An even further aspect of the invention is a system and method for preventing unauthorized duplication of a particular software program among a plurality of active software programs executed on a computer. The system receives an indication that the computer is executing the particular software program, and then monitors operation of the computer to determine which of the plurality of the active software programs is being currently executed. When the system determines W 0 96/41449 PCT/U~36/~'3316 through the monitoring that the particular software program is not the currently executed software program, it disables execution of the particular software program.
An additional aspect of the invention is a computer-based system for automatic sales of software programs. The system accesses a software program within a computer database and maintains the software program in a locked state in order to prevent unauthorized duplication of the software program. In response to a request to purchase the software program, the system unlocks a copy of the software program and distributes the unlocked copy. The system records how many copies of the software program have been distributed in response to the purchase requests.
BRI~F DF~CRIPTION OF T~F DRAWINGS
FIG. 1 is a diagram of the conceptual operation of a software or digital information distribution system.
FIG. 2 is a block diagram of hardware components for implementing a software or digital information distribution system.
FIG. 3 is a user interface for a software or digital information distribution system illustrating examples of programs available to be sampled and/or purchased.
FIG. 4A is a diagram of software program files used by a software or digital information distribution system.
FIGS. 4B and 4C are diagrams of a package file system for use in maintaining software programs or digital information in a locked state.
FIG. 5 is a diagram of background processes used by a software or digital information distribution system.
FIG. 6 is a flow chart of a preferred active process detection routine.
WO96/41449 PCT~S96/09916 FIG. 7 is a flow chart of a preferred background processing setup routine.
FIG. 8 is a flow chart of a preferred check status of sample count files routine.
5FIG. 9 is a flow chart of a preferred "do open" routine.
FIG. 10 is a flow chart of a preferred "do prime" routine.
FIG. 11 is a flow chart of a preferred image driver routine.
FIG. 12 is a flow chart of a preferred install active process detection code routine.
FIG. 13 is a flow chart of a preferred install image driver routine.
lSFIG. 14 is a flow chart of a preferred open driver routine.
FIG. 15 is a flow chart of a preferred sample count manager routine.
FIG. 16A is a flow chart of a preferred sector encryption/decryption routine.
FIG. 16B is a flow chart of a preferred varying positional key encryption/decryption routine used with the routine of FIG. 16A.
FIG. 17 is a flow chart of a preferred setup sample counter routine.
FIG. 18 is a flow chart of a preferred watchdog task routine.
FIG. 19 is a flow chart of a preferred purchase routine for allowing users to purchase sampled software programs.
FIG. 20 is a flow chart of a preferred process for a self-launching and on-line self-launching software or digital information distribution system.
FIG. 21 is a flow chart of a preferred process for generating a serial number which contains identification of marketing information for sampled software programs.
WO 96/41449 PCT~S96/09916 FIG. 22 is a flow chart of a preferred process for automatic sale of software programs.
DF~TATTl~n DFSCRIPTION
FIG. 1 is a conceptual diagram of the operation of a software or digital information distribution system. A user or customer 10 may sample a software program 12, which typically involves working with a fully operating version of the software program 10 12. The system preferably maintains a secure interface or protective envelope 14 around the software program 12 such that the user 10 may not obtain a copy of the software program without first purchasing it. The system preferably maintains the sampled program in a 15 locked state during the sampling of the program in order to prevent unauthorized duplication of the program, for example, during the sampling. The system selectively disables the sampling of the selected software program, such as when the user completes the sampling or tampers 20 with the program during the sampling. The use of a secure interface or protective envelope 14 provides the advantage of not tampering with the program for security purposes. This type of scheme for maintaining a program in a locked state is described below. Other methods for 25 maintaining software programs in a locked state to prevent unauthorized copying of the program are possible, such as is disclosed in U.S. Patent Nos.
4,658, 093; 4,740, 890; 4,999, 806; and 5, 341, 429.
If the user 10 purchases the software program 12, then the system copies an unlocked copy of the software program 16 to a storage medium where the user may access and continue to use the program. "Software program," "program," and "application,~' are used interchangeably herein.
3 5 The present invention can also distribute digital information (12), as indicated in FIG . 1. The present invention views the distributed entity as "bits," whether it is a software program which includes WO96/41449 PCT~S96/09916 functionality for controlling the operation of a computer, or simply other types of information in digital form. Therefore, the principles of the present invention used for distribution of information apply to digital information generally, software programs being a type of digital information. Digital information includes information capable of being represented in digital form. Digital information thus includes software programs and also includes intellectual property such as data representing creative or artist expression. Other examples of digital information include: textual works such as books and articles;
music; video; music video; fonts; graphics; and clip art.
In distributing digital information, a user may have the option to sample the information. For example, when distributing locked movies in digital form, a user may be allowed to view the first few minutes of the movie. For distributing music, a user may be allowed to sample a representative portion of the music. If the digital information is a software program, the user may be allowed to sample the program, as mentioned above.
The digital information may also be distributed without sample capability. For example, a publisher may distribute a CD-ROM having several locked ~white papers" or technical works. The system can, for example, only display titles or abstracts to a user for purposes of allowing the user to decide which if any textual works to purchase. When a user requests to purchase one or more of the papers, the system unlocks the paper and distributes it to the user. This distribution scheme thus provides the advantage of allowing one to purchase individual textual works in a collection without having purchase the entire compilation.
The system, therefore, maintains the digital information in a locked state by using the secure WO96/41449 PCT/U~3~95l6 interface or protective envelope 14. When a user requests to purchase the information and provides any required information such as a credit card number, the system distributes an unlocked copy (16) of the digital information to the user.
FIG. 2 is a diagram of typical hardware components for implementing a software or digital information distribution system. The system includes a computer 18 which is a typical digital computer such as a personal computer. The computer 18 includes a microprocessor 20 for executing software programs. The microprocessor 20 is interfaced with a read only memory 22 and random access memory 24. The computer 18 is interfaced with an input device 26 for entering comm~n~.
or information into the computer 18. The input device 26 may be implemented with, for example, a keyboard, touch screen, light pen, "mouse" or other cursor control device such as a trackball, or other device for entering information or commands into the computer 18. The computer 18 is typically interfaced with a printer 28, which may be implemented with a typical computer printer for generating a hard copy of the information stored within the computer 18. The computer 18 is also typically interfaced with a display device 30, which may be implemented with a typical color or monochrome computer monitor. A preferred hardware platform for implementing the present invention is a Macintosh computer, developed and sold by Apple Computer, Inc.
The computer 18 is also preferably interfaced to devices from which it may receive software programs to be sampled optionally along with a software program for managing the sampling of additional software programs. These external devices may include a digital audiotape drive 32, disk drive 34, hard disk drive 36, CD-ROM drive 38, or an on-line system 42 interfaced through a modem 40. The on-line system 42 may be interfaced to existing networks or on-line services such as, for example, the Internet, America OnLine , and WO96/41449 PCT~S96/09916 .
Prodlgy . Computer users may download 1nformatlon from networks such as the Internet.
FIG. 3 is a user interface of a software or digital information distribution system operating within the computer 18 by the microprocessor 20. User interface 50 displays in window 44 a plurality of programs which a user may sample and/or purchase.
Alternatively, window 44 can display an identification of digital information available for purchase. In order to sample a particular program, a user would select one of the plurality of programs in window 44 and then select icon 46. In addition, the system allows a user to select other information identified in window 52, and that information is displayed in window 51, such as:
program information; system re~uirements; information about "getting started" with a particular application;
publisher information; licensing agreement; and packaging photos.
If the user desires to purchase one of the programs, a user would select the purchase icon 48 and optionally the install icon 47 in order to have the program automatically installed. When a user samples a particular program, the system preferably displays the number of samples remaining at location 49 and optionally additional information such as the version of the sampled program. As explained below, the system can thus control how many samples are available to the user.
FIG. 3 is one example of user interfaces for a software or digital information distribution system. Other user interfaces or ways of allowing a user to interact with the system are possible for such a system.
FIG. 4A is a diagram of files used by a software or digital information distribution system. An example of a software or digital information distribution system is also referred to as a "distribution application" in the present specification.
The system typically uses an image driver 56 and invisible files 60. FIG. 4A also illustrates how a CA 02223409 l997-l2-03 W O 96/41449 PCTfUS96/09916 software or digital information distribution system may be implemented in a separate "stand-alone" version and a self-launching version. In one embodiment, the system 58 is a separate software program which interfaces an encrypted package 62 containing a usage file 64 and a program or digital information 66 to be distributed and/or sampled. The usage file 64 typically contains a separate redundant copy of how the program or digital information is to be used; for example, how many samples are available. This is in addition to the invisible files, which store encrypted copies of how many samples are available, as explained below. Accordingly, the usage file 64 provides another level of protection in the event that a user tampers with or otherwise alters the sample count information in the invisible files.
The software program or digital information is preferably encrypted, as explained below, in order to prevent a user from obtaining a "free" copy of the information.
In another embodiment, a self-launching system implementing a software or digital information distribution system 72 iS attached to a usage file 70 and program or digital information 74 to be distributed and/or sampled. In this embodiment, distribution application is attached to each program or information to be distributed and/or sampled and its operation is thus essentially invisible to the user. Therefore, instead of requiring a user to install a software or digital information distribution system and then sample other software programs, a user may simply download each program to be sampled and/or purchased. Each of those packages contains a distribution application for controlling the sampling or distribution of software programs or digital information along with such programs or information.
The distribution application 72 iS typically attached to the encrypted package by joining the distribution application stored in a resource fork and WO96/41449 PCT~S96~5l6 the encrypted package stored in the data fork into one file 71. The operation of the resource fork for storing structured data and the data fork for storing random access data in a Macintosh computer system is well known. Therefore, the file 71 includes the distribution application 72 "wrapped around" the encrypted package 68 which includes an encrypted application or digital information 74 along with the encrypted usage file 70.
The distribution application 72 also contains the invisible files. The package 68 is typically encrypted in the same manner as package 62.
As mentioned above, applications used by a software or digital information distribution system are maintained in a locked state. This locked state is used to prevent unauthorized copying of the program both while it is stored and when a user samples it. The applications to be sampled are typically in a form only usable by a software or digital information distribution system in order to ensure security. Encryption as part of a locked state is typically accomplished by exclusive-ORing ("XORing") each byte of the application with a positional variant, as is explained with reference to FIGS. 16A and 16B. In addition, a package file system is also typically used as a part of a locked state to ensure security of the applications in a locked state.
This package file system is illustrated in FIGS. 4B and 4C. As shown in FIG. 4B, a package file in a Macintosh computer system works much like a random access memory (RAM) disk except that it is in non-volatile memory. An image file 77 which is the desired size of a "virtual volume" created by a software or digital information distribution system is allocated on a hard drive 75 or other non-volatile storage medium.
Locked applications or digital information are stored within this partition. In a self-launching distribution application, the distribution application and image file WO96/41449 PCT~S9~95l6 appear as one file 67. A distribution application file 73 is also stored on the storage medium 75.
As shown in FIG. 4C, the image file 77, or in the self-launching case the distribution application/image file 67, is internally given the same structure as a floppy disk. A distribution application 69 then informs the operating system of the corresponding computer that a "floppy disk" 79 is actually mounted. The operating system of a computer system 81 sends read/write requests 85 to the virtual volume 79. Instead of writing to a physical media, the driver of the computer's operating system writes to the virtual volume 79. The image driver 83 of the distribution application 69 performs reading and writing to the image files 77 and 67. This technique is also known as a "soft partition," because the hard drive on which the image file is located has been effectively partitioned via software. Accordingly, a distribution application 69 can reserve this virtual volume in order to control reading and writing to this partition (the physical media) and thus prevent unauthorized copying of applications or digital information in this partition.
FIG. 5 is a diagram of background processes used by a software or digital information distribution system implemented within the computer 18 and executed by the microprocessor 20. The background processes preferably include an active process detection 76, image driver 78, sample count manager 80, sector encryption/decryption 82, and watchdog task 84, all of which are described below.
FIG. 6 is a flow chart of an active process detection routine. On an exemplary embodiment on a Macintosh computer, this routine is implemented by a patch to the system trap called SystemTask. This trap is called consistently by all applications many times a second. What makes this work is that the Finder intercepts calls to SystemTask, and only passes on the call of the application that is the "active~ or current CA 02223409 l997-l2-03 PCTIUS 96/09916 IPEA/US 18 J~IL 1997 "front-most" process. Therefore, when a patch to SystemTask is called, the system assumes that the front application called it. The system then checks the low level variable AppName to retrieve the name of the current front-most application.
In a windows or multi-tasking environment, several applications can be represented by windows which may overlap. A currently-active application is typically represented in a window which appears in front of the other windows, or is otherwise highlighted or altered to indicate that it is the currently-active _ program if, for example, the displayed window$ are not overlapping.
The routine begins when the system task is - 15 called (86). The system retrieves the front-most application name (88) and determines if the sample program is in front (90). The sample program is the software program being sampled by the user. The system determines if this is the top-most or front-most program displayed on a user's monitor. If it is the application in front, the system determines if sample time limit has expired (92); otherwise, the system determines if a distribution application is in front (94). A time limit provides for additional security by limiting how long a user may sample a particular application. If the time limit has not expired, the system sets a flag to enable the image driver (100) and calls the original system task (108). Otherwise, if the sample time limit has expired, the system terminates the sample application (98).
If as determined at step 94 the sample application is in front, the system sets a flag to enable the image driver (96); otherwise, a flag is set to disable the image driver ( 102). Next, the system determines if the sample application file is still open (104). If it is not, the system closes and unmounts the virtual volume ( 106) and calls the original SystemTask (108).
CA 02223409 l997-l2-03 W 0 96/41449 PCTrUSg~9516 The routine of monitoring which application is "in front" thus provides a security measure by preventing the unauthorized copying of an application while it is being sampled. This system for preventing unauthorized duplication of a particular software program among a plurality of active software programs executed on a computer typically includes the following features. It receives an indication that the computer is executing the particular software program, and monitors operation of the computer to determine which of the plurality of the active software programs is being currently executed. Execution of the particular software program is disabled when the monitoring determines that the particular software program is not the currently-active or top-most software program.
FIG. 7 is a flow chart of a background processing setup routine. In this routine, the system decrypts and installs a background processing code (110); initializes the global variables (112); installs a watchdog task (114~ (see FIG. 18); installs active process detection code (116) (see FIG. 12); sets up a sample counter (118) (see FIG. 17); sets up interprocess communication vectors (120); and installs an image driver (122) (see FIG. 13).
FIG. 8 is a flow chart of a check status of sample count files routine. The system preferably uses sample count files stored within the computer 18 as invisible files. These sample count files are preferably each identical and maintain the sample count.
Each file typically contains an identification of each application and the number of allowed samples for each of the applications. If the user attempts to tamper with a particular sample count file in order to obtain more samples, the system detects that tampering by comparing the tampered file with the other sample count files. In addition, the invisible files are preferably encrypted for additional security, such as using an XOR
WO96/41449 PCT~S96/~95l6 operation with a key and a bit shift of the sample counts.
In this routine, the system determines at steps 124, 128, and 132 if the sample count files one, two, and three, respectively, have been created. If the sample count files have not been created, the system creates the corresponding sample count files at steps 126, 130 and 134. While the system uses three sample count files, more or fewer files may be used.
FIG. 9 is a flow chart of a "do open" routine.
The system first retrieves the address of "OK to Read"
flag from a background code via interprocess communication (136). Next, the system retrieves the address of a sector decryption routine from the background code via interprocess communication (138) and sets standard open flags (140).
FIG. 10 is a flow chart of a "do prime"
routine. The system first determines if this is read call (142). This test makes the driver read only. If this is not a read call, the system returns an error (154). Otherwise, the system proceeds with the routine and retrieves a value of a flag in the background process (144). It is next determined if the flag value has been updated within the last two seconds (146), for example. A flag is stored in the background process that is constantly updated by the watchdog task. If the flag has not been updated in the last two seconds, for example, it means that either a valid application is not "in front" (the sample application or distribution application) as explained above, or that a user is using a debugger to examine the code which implements the system. If the flag value has been updated in the last two seconds, the system reads requested sectors from ~virtual" volume (150) and returns no error (152).
The system decrypts the sectors while reading them. The encryption/decryption of sector is explained with reference to FIGS. 16A and 16B. If the sectors of the application are compressed, the system also CA 02223409 l997-l2-03 WO 96/41449 PCT/U536J'~9916 decompresses the sectors while reading them. An example of an asymmetrical compression/decompression algorithm, which produces a relatively short decompression time in comparison to compression time, is Apple Computer, Inc.'s Cinepak compression scheme at a lossless level.
If the flag value has not been updated, the system determines if this is a directory or volume information block (148). If it is, the system executes step 150 and returns no error ( 152). Otherwise, the system returns an error ( 154).
FIG. 11 is a flow chart of an image driver routine. The image driver preferably includes the following functions: open call (156); prime call (160);
control call (164); status call (168); and close call (172). If any of these functions have been called, then the system performs the corresponding routine: do open (158); do prime (162); do control (166); do status (170); do close (174). The do prime call (162) iS
illustrated in FIG. 10. The other calls (158, 166, 170, 174) are well known in a Macintosh computer system.
FIG. 12 iS a flow chart of an install active process detection code routine. This routine involves performing a patch system task trap ( 176), which is illustrated in FIG. 6.
FIG. 13 is a flow chart of an install image driver routine. In this routine, the system decrypts a driver code from a disk into memory within the computer 18 (178). The image driver is encrypted for security purposes so that a user cannot view the driver. The encryption/decryption of the driver is typically accomplished using the technique explained with reference to FIGS. 16A and 16B. The system locks the driver code into memory (180). The system then opens the driver ( 182).
FIG. 14 iS a flow chart of an open driver routine. In this routine, the system sets up an interprocess communication vectors (184), which instructs the system where to locate global data.
W O 96141449 PCT~USg6~9~16 FIG. 15 is a flow chart of a sample count manager routine. This routine is executed when the user requests a sample (186). The system checks to determine if samples are available (188) by checking the sample count files within the database. If samples are available, the system mounts the virtual volume (192).
If the use is on-line, then the system downloads the software packages containing encrypted programs to be sampled and usage file and mounts the virtual volume (190). The packages are typically compressed for transmission using, for example, Apple Computer, Inc.'s Cinepak compression scheme at a lossless level, and are transmitted using TC/IP protocol.
The system then determines if the loaded image matches the database image (196) for security purposes.
If the image does not match, the database data is rectified to that of the image (198) and the virtual volume is closed and unmounted (194) in order to maintain the application in a locked state. Otherwise, the system checks the redundant sample count on the virtual volume to determine if samples are available and in particular if a sample count files have been tampered with (200). If no samples are available, the virtual volume is closed and unmounted (220). Otherwise, the system decrements the sample count and launches the application (204) so that the user may operate the application to be sampled.
FIG. 16A is a flow chart of a sector encryption/decryption routine. This routine performs encryption of the distributed digital information for security purposes in order to prevent unauthorized duplication of the information. In this routine, the system determines if encryption or decryption is required (206). The system then performs the appropriate decryption (208) or encryption (210) function. FIG. 16B is a flow chart of a preferred varying positional key encryption/decryption routine used with the routine of FIG. 16A. The routine in FIG.
WO96/41449 PCT~S96/09916 16B performs the actual encryption/decryption of data and is an example of how to encrypt/decrypt the encrypted packages 62 and 68 (see FIG. 4A) which contain the distributed software programs or digital information and usage files. Other encryption schemes are possible.
The significance of the encryption scheme is in providing protection of the distributed information so that one may not obtain an unauthorized copy of the information without considerable time, effort, and processing capability.
The encryption/decryption routine of FIG. 16B
uses a varying key based on byte position, also referred to as a positional variant. The system determines if sector encryption/decryption is required (201). If it is, the system decrypts the first 512 byte block (203) and then executes loops, as determined by steps 205, 207, 213, and 215, in order to encrypt/decrypt each byte in a series a 512 byte blocks. The encryption/
decryption of each byte involves first at step 209 a permutation to determine a key with the key =
log(position MODULO 512) X $23FEC392, and then at step 211 applying the key to the byte with an XOR operation.
FIG. 17 is a flow chart of a setup sample counter routine. The system checks the boot block flags (212) and checks status of sample count files (214).
This involves writing predetermined codes to spare boot blocks of the computer in order to mark the database to identify the execution of a software or digital information distribution system. Accordingly, these codes written to the boot blocks provide an indication that a distribution application has been run before on this particular computer.
This system for storing a code within an operating system of a computer in order to identify whether the computer has executed a particular software program typically includes the following features. It receives an indication that the computer has executed the software program, and searches a non-volatile memory r'CTIUS t 6 / ~ 9 9 16 in which the operating system for the computer is stored in order to locate spare memory locations within the non-volatile memory. A code is written to at least one of the spare memory locations, and the code provides an indication that the computer has executed the software program. The code is associated with the software program to provide the indication.
In the routine shown in FIG. 17, the system determines if the sample counter system has been set up before on this particular computer (216). If it has been set up before, the system determines if all three _ sample count files are new (218) and if they a-re, it executes the following steps: fill new files with the value "one" at each location (200); write file creation dates to boot blocks (224); and write file check sums to boot blocks (226). When the sample count files are initialized the first time the system is executed, the value "one" is written to the files in order to signal that the files are secure and the system can, therefore, write sample count values to the files. Otherwise, the system fills new files with the value "minus one" at each location within the boot blocks (222). The "minus one" value indicates to the system that the corresponding sample count file has been tampered with or is otherwise corrupted or not secure. Accordingly, the system checks the other sample count files in order to verify their security. If all sample count files have a value of "minus one," this condition indicates that all sample count files have been corrupted and the user is not allowed no more samples. If less than all sample count files have a value of "minus one," then the system can reconstruct the corrupted files using a value in the secure or non-corrupted sample count file. The system also preferably verifies the sample count information in the invisible files against the information in the usage file.
FIG. 18 is a flow chart of a watchdog task routine. This is a VBL task, meaning it runs every time dhtENl~ S.~
CA 02223409 l997-l2-03 W 096/41449 PCT~US96/09916 there is a vertical blanking interrupt. For most monitors, that is approximately 72 times per second.
The routine has three functions. It performs a check to determine if the sample application has timed out, and sets a flag accordingly. It tests to determine if it may allow the driver read, and updates a flag with the current time to be checked by the driver. It also encrypts and decrypts sample counts that are being written/to and read/from the sample count files. It performs this encryption in multiple phases, simulating an asynchronous process. What this does is make it very difficult for a user to determine where the encryption/decryption is being performed.
In the routine, the system checks for an application time out (228). It then determines if it is "OK" for the driver to read (230). If it is, it sets a flag to a current time (234). Otherwise, it sets a flag to zero (232). The system then determines if a sample count requires encryption (236). If it requires encryption, the system performs a phase of sample count encryption (238). Otherwise, the system determines if a sample count reads decryption ( 240), and if so, the system performs a phase of sample count decryption (242).
This phase encryption/decryption scheme is a subset of the sample count manage routine and works as follows. At various times, the distribution application needs to determine how many samples of a particular application remain. At these times, the distribution 30 application reads an encrypted string from the invisible files. It then takes this information, transfers the information into global memory, signals to the watchdog task that a count needs decryption, and then places itself into a seemingly endless loop. The watchdog 35 task, having been signaled to begin, decrypts the count in three phases to ensure that the full algorithm is never directly viewed by a user. On each pass, the watchdog task performs an XOR and bit rotation and then WO 96/41449 PCTrUS9G/~9516 increments the phase count. The next time the watchdog task executes, if there is still more work to be done, it executes another encryption phase. If not, it signals the application that encryption is now finished.
The distribution application then exits the infinite loop and memory contains the correct sample count.
FIG. 19 is a flow chart of a purchase routine for allowing users to purchase sampled software programs. This routine is executed when a user requests to purchase a program or digital information (243). The system can unlock software programs or digital information in response to a request to purchase the software program or digital information. The system can optionally verify purchase information, such as a credit card number, before executing an unlocking process.
The system typically checks if the application has previously been purchased (244). If it has been purchased previously, the system checks to determine if this purchase request is an archive install (248). If it is an archive install, the system installs the application (254). For a regular purchase, the system generates or retrieves a serial number or key code (246) used for calculating a password to unlock the program.
This serial number or key code is typically provided in a purchase dialog or window when the user selects the purchase key 4 8 (see FIG. 3). The purchase window also includes an area for a user to enter the password. The key code and corresponding password, as explained below, are preferably dynamically generated when the user opens the purchase window such that a new key code and password are generated each time the user opens the purchase window. In addition, the password preferably only exists in memory, and only as long as the user has a purchase dialog or window open. These features provide additional security by dynamically changing the key code and password.
If the use is on-line, the system preferably automatically registers the application with a vendor CA 02223409 l997-l2-03 W 0 96/41449 PCT~USg~5516 and then unlocks the application or digital information (250) through the on-line connection with the distribution center.
Otherwise, the system can manually register the application with the vendor and provide a user with the password for unlocking the application or digital information (252). The manual registration typically occurs with the user calling up a distribution center and providing them with the serial number or key code as provided in a purchase dialog and possibly other information such as a credit card number. The distribution center in response provides the user with a password used for unlocking the application, and the user may then manually enter the password in the 15 purchase window. Accordingly, steps 250 and 252 also involve generating the password from the serial number or key code. The serial number or key code provided by the user is processed using an identical decoding function, explained below, as on the user's machine, generating the same password that is stored in memory on the user's machine. The entered password is compared with the one stored in memory. If they match, the purchase is completed.
Accordingly, if the correct password is entered, either manually or automatically, the system proceeds to install the application or digital information (254). If the wrong password was entered, such as in the manual unlocking, then the system ~returns" and does not unlock the application or digital information.
The installation typically occurs by decrypting a copy of the application or digital information and copying the unlocked application or digital information to a hard drive or other storage medium on the user's computer. The decryption is typically accomplished by copying the application or digital information via a pipeline from its current location in memory to a new (non-reserved) portion of WO96/41449 PCT~S96/09916 the user's hard disk drive or other storage medium which is outside of the partition reserved by a software or digital information distribution system. While the application or digital information is copied to the non-reserved portion, it is typically decrypted by using thetechnique explained with reference to FIGS. 16A and 16B.
Accordingly, after this unlocking routine is complete, a locked copy of the application or digital information remains within the reserved partition and an unlocked copy of the application or digital information resides on the user's hard disk drive or some other storage medium. The unlocking and installation may occur simultaneously. In addition, while software programs typically require installation to run, other types of digital information may require only unlocking.
After the application is purchased, a user preferably has full use of the program or digital information. A vendor or distribution center may mail manuals or any other documentation for the purchased program to the user who purchased the program.
Alternatively, the manuals and documentation may be distributed with the program and maintained in a locked state with the program. When a user purchases the program, the manuals and documentation may then also be unlocked so that the user can view them electronically or produce a hard copy using a computer printer.
FIG. 20 is a flow chart of a process for a self-launching and on-line self-launching software or digital information distribution system. A self-launching system has the advantage of not requiring aseparate browser for distribution and/or sampling of applications or digital information. The operation of the system is thus essentially invisible to the user, since the system preferably "appears" to the user as an application or digital information and launches itself when a user selects the application or digital information.
WO96/41449 PCT/U~Gf~16 According, a self-launching system for demonstrating applications typically includes the following features. The system is attached to a software program such as in one file as described above.
The system maintains the software program in a locked state in order to prevent unauthorized duplication of the software program, such as with encryption and a package file system described above. When a user selects the software program, the system launches itself and can enable the software program for execution by the user and allow the user to subsequently sample the software program. The system maintains the software program in the locked state during the sampling of the software program in order to prevent unauthorized duplication of the software program, and selectively disables the sampling of the software program.-A self-launching system for distributing applications or digital information typically includes the following features. The system is attached to an application or digital information such as in one file as described above. The system maintains the application or digital information in a locked state in order to prevent unauthorized duplication, such as with encryption and a package file system described above.
When a user selects the application or digital information, the system launches itself and can unlock the application or digital information in response to a purchase request.
Self-launching and on-line self-launching software or digital information distribution systems preferably use the processing described above in addition to the steps shown in FIG. 20. In order to sample an application, a user in a self-launching system typically selects an application (256). This may occur by, for example, "double clicking" on an icon displayed on a display device and corresponding to the application. In the self-launching system, therefore, the applications typically appear to the user as W 096/41449 PCT/U~3G~'~3~16 executable programs even though they are locked and may only be sampled by the user or purchased upon providing the required information. After the user selects the application to sample, the code for the distribution application executes (258) . If the use is on-line, the software package described above is first downloaded (257) before executing. The software package is typically one file (see FIG. 4 A) which includes a distribution application and an encrypted package and is thus transmitted for on-line use as one file. The encryption is typically accomplished using the technique described with reference to FIGS. 16A and 16B. The encryption protects the software programs or digital information during transmission. This file is typically compression for transmission using, for example, Apple Computer, Inc.'s Cinepak compression scheme at a lossless level, and is transmitted using TC/IP protocol.
The system then, as described above, checks to determine if all samples have been used (260) . If samples are remaining, the system code mounts a data fork of file as the virtual volume (262) and decrements the usage count and the files in the virtual volume (264) . The system then proceeds with the processing described in the other flow charts provided in the present specification.
If the self-launching system involves distribution of digital information without allowing sampling, then the system typically checks to determine if the information has been purchased (259) . If is has been purchased, then the system executes step 262 and bypasses step 264, since samples are not available. If the information has not been purchased, then the system typically checks to determine if the user wants to purchase the information (261) . If the system receives a purchase request, then it executes a purchase routine 263 (see FIG. 19).
FIG. 21 is a flow chart of a process for generating a serial number which contains identification CA 02223409 l997-l2-03 W O 96/41449 PCT~US96/09916 of marketing information for software programs. The system retrieves the raw data from a sample count files (266), which includes an identification of how many times a user sampled each application. The system then calculates marketing statistics and formats such information into a series of bytes (268). This step may involve, for example, the following: determining the total number of samples used (270); determining how many times each application was sampled (272); determining a most frequently sampled application (274); determining a category of a most frequently sampled program (276);
determining which version of particular applications a user has sampled (277); or other statistics to be determined, for example, by a distributor (278). Other statistics may include, for example, statistics related to time duration of the samples, such as an average time duration of sampling, which may be obtained using a computer's internal clock and timing each sample.
Examples of categories of software programs include, but are not limited to: business software, games, financial management programs, and educational programs. A vendor or distributor may also create their own categories and electronically associate programs with those categories.
Gathering these statistics provides for many advantages and value in distributing programs to be sampled. For example, it allows vendors to identify programs which are not popular and replace them with programs which have a higher sales rate. It also allows vendors to identify the most popular programs and include more programs for sale in the same categories.
Identifying a category of a user's most frequently sampled program also allows vendors to market additional similar products to that particular user and thus increase the likelihood that the user will purchase more software from the vendor. For example, when the user calls the vendor to purchase a program, the vendor can quickly identify the most frequently sampled program category by decoding the code (serial number) of the WO96/41449 PCT~S96/09916 purchased program. The vendor could then immediately offer any additional programs for sale which are in the same category and perhaps "on sale" or subject to a discount.
Given the information provided by the sample count files, the information for the marketing statistics can be determined with simple calculations.
The sample count files contain an identification of each application and the number of samples rem~;n'ng for the corresponding application. Therefore, by knowing how many samples were originally available, the system can determine the number of samples used for each application by samples remaining from the original number of allowed samples. The system can add up the number of samples used to determine a total number of samples used. Other statistics can be calculated in a similar manner using the information in the sample count files and possibly other information such as categories of sampled applications.
A distributor may determine that other statistics are desired and the system would then execute additional steps as part of step 268, as mentioned above. The system determines if more statistics are required (279). The system continues to execute steps for determining statistics until such processing is complete. As the system gathers and calculates the marketing statistics, it typically concatenates the resulting bytes, resulting in a series of bytes with byte representing a statistic. The system electronically associates each byte position with a statistic so that, by knowing a particular byte position, the system can decode the byte and produce the resulting statistic. The system then converts the series of bytes determine that step 268 into an ASCII
serial number (280). Table l provides an example of a file for associating byte positions with statistics.
WO96/41449 PCT~S96/09916 Table l byte position statistic 5 l total number of samples 2 number of application #l samples 3 number of application #2 samples 4 most frequently sampled category . . . ...
l0 N other statistic Appendix A provides an example of a source code listing in C programming language for converting the series of bytes determined in the processing shown in FIG. 21, and optionally other information, into a key code and password for use in unlocking the application or digital information. The code shown in Appendix A
generates both a key code and password using the marketing information (series of bytes described above) and the current date and time. The code shown in Appendix A can thus also be used to decode the key code and extract the series of bytes containing the marketing information. The key code is displayed to the user and in the purchase window and is what the user provides to a distribution center to obtain the password. This password is then used to unlock the application or digital information, as described above.
FIG. 22 is a flow chart of a process for automatic sale of software programs. One or more software programs, each in a locked state such as with the techniques described above, are stored in a computer database or available on-line. When one wants to purchase one or more of the programs, the system in response to the purchase request unlocks a copy of the program and maintains a record of how many copies were sold. An example of a use for this system is where a W096/41449 PCT~S96/09916 company routinely purchases additional copies of software programs such as when new employees are hired.
Accordingly, this system for automatic sales of software programs typically includes the following features. It accesses a software program within a computer database and maintains the software program in a locked state in order to prevent unauthorized duplication of the software program. In response to a request to purchase the software program, the system unlocks a copy of the software program and distributes the unlocked copy. The system also records how many copies of the software program have been distributed in response to the requests to purchase the software program.
As shown in FIG. 22, the system typically displays an indication of locked applications available for purchase by a user (292). If the use is on-line, the system downloads encrypted software packages containing programs and usage file (293). The encryption is typically accomplished using the technique described with reference to FIGS. 16A and 16B. The packages are typically compressed for transmission using, for example, Apple Computer, Inc.'s Cinepak compression scheme at a lossless level, and are transmitted using TC/IP protocol. If a user requests to sample a particular application (294), the system executes sample routines (296). The sample routines may be, for example, the routines described in the present specification. If the system receives a request to purchase an application (298), it preferably performs the following steps. The application is registered with a vendor and unlocked (300). A serial number is then optionally assigned to the purchased application (302).
The application is distributed and installed (304).
Then the system updates a sales record and issues an invoice (306) in order to record the application purchased and how many copies have been purchased. The WO96/41449 PCT~S96/09916 step 300 may be implemented as described in the other routines in the present specification.
While the present invention has been described in connection with a preferred embodiment thereof, it will be understood that many modifications will be readily apparent to those skilled in the art, and this application is intended to cover any adaptations or variations thereof. It is manifestly intended that this invention be limited only by the claims and equivalents thereof.
CA 02223409 l997-l2-03 WO 96/41449 PCTrUS96/~916 APPENDIX A
void CDolphinApp::DoPurchase() {
CSampleApp *theApp;
const short okItem = 1;
const short cancelItem = 2;
unsigned long templ = qd.randSeed;
unsigned long temp3;
GetDateTime(&temp3);
temp3 = temp3 & Ox00000065;
temp3 = temp3 >~ 2;
unsigned long tempO = *((long*~oxol46) temp3 = temp3 & Ox2F;
// ROL.L temp3,tempO
long a = tempO << temp3;
long b = tempO ~ (32 - temp3);
tempO = a ¦ b;
GetDateTime(&temp3);
templ = temp3 A templ;
a = temp3 << 7;
b = temp3 ~ (32 - 7);
tempO = a ¦ b;
temp3 = tempO ~ temp3;
gd.randSeed = tempO;
temp3 = temp3 & OxOOOOOOOE;
long keyCode = O;
for (short r = O; r < temp3; r++) keyCode = Random();
CStr255 usageCode;
unsigned long installedDate = gUsageInfo.GetInstalledDate ("Dolphin Prefere installedDate -= OxA81B3480;
installedDate = installedDate / Ox00093A80;
CStr255 instWkStr;
CodeNumber(installedDate,2,instWkStr);
long numOfProgsSampled = gUsageInfo.GetTotalAppsSampled () CStr255 numProgsSampledStr;
CodeNumber(numOfProgsSampled,2,numProgsSampledStr);
TopSampleA top5;
gUsageInfo.GetTop5SampledApps (top5);
CA 02223409 l997-l2-03 CStr255 numlAppStr;
CStr255 num2AppStr;
CodeNumber(top5[0],2,numlAppStr);
CodeNumber(top5 [1],2,num2AppStr);
long totalSamples = gUsageInfo.GetTotalNumOfSamples();
CStr255 totalSamplesStr;
CodeNumber(totalSamples,2,totalSamplesStr);
usageCode = instWkStr +
numProgsSampledStr +
numlAppStr +
num2AppStr +
totalSamplesStr;
}
CStr255 programNumStr;
CodeNumber (fSelectedAppID, 3, pLoyLd~ ~tr);
CStr255 keyCodeStr;
2 0 CodeNumber (keyCode, 4, keyCodeStr);
CStr255 targetPassword = deecode (keyCodeStr);
keyCodeStr = pLoyLdl-,NulllStr + CStr255("-") + keyCodeStr;
if ((itemHit == okItem) &&
(IUEqualString(password,purchaseBackDoor) == 0)) theApp-~SetToPurchased();
CRect upperLeftRect(0,0,150,60);
3 0 InvalRect (upperLeftRect);
InstallApp ();
}
if ((item~it ==okItem) &&
(IUEqualString(password,unPurchaseBackDoor) == 0 3 5 theApp-~SetToUnPurchased();
CRect upperLeftRect(0,0,150,60);
InvalRect(upperLeftRect);
}
4 0 } else {
SysBeep (l);
SysBeep (l);
}
}
void CodeNumber(long number, short digits, CStr255& theString) {
long temp2;
theString[0] = digits;
for (short index = digits; index ~ 0; index--) {
temp2 = number;
temp2 = temp2 & 0x000000lF;
5 5 temp2 += 65;
if (temp2 ~= 'Z') temp2 -= 41;
CA 02223409 l997-l2-03 WO 96/41449 PCT/U'~6~5916 theString[index] = temp2;
number = number ~ 5;
}
if (number ~ 0) theString[l] = 42;
}
CStr255 deecode(const CStr255& input) }
char output[7];
char stg[2]
int msg_numberi int bl, Bl, xx, len, retcode;
long code, bin;
len = input.Length ();
code = 0;
for (xx = 1; xx c 5; xx++) {
Bl = 0;
sprintf(stg, "~d", input[xx] );
bl=atoi( stg );
if (bl ~ 64 && bl < 91) Bl = bl - 65;
if (bl ~ 49 && bl c 56) Bl = bl - 24;
switch (xx) {
case l:
code+= Bl * 32768;
break;
case 2:
code+= Bl * 1024;
break;
case 3:
code+= Bl * 32;
break;
case 4:
code+= Bl;
break;
default:
break;
}
}
code = (code ~ 43605) * 1523;
for (xx = o; xx < 6; xx++) {
switch (xx) {
case 0:
bin = 33554432;
break;
CA 02223409 l997-l2-03 W O 96/41449 PCT~US96/09916 case 1:
bin = 1048576;
break;
case 2:
bin = 32768;
break;
case 3:
bin - 1024;
break;
case 4:
bin = 32;
break;
case 5:
bin = l;
break;
default:
break;
{
if (code >= bin) Bl = code / bin;
code-=Bl ~ bin;
if (Bl + 65 ~= 90) {
bl = Bl + 65 }
else {
bl = Bl + 24i }
}
else {
bl = 65;
}
sprintf(&output[xx], "~c", bl);
output[6] = '\0';
}
return(CStr255(output));
}
#pragma segment Main long intcode(const CStr255& input) {
char stg[2];
int msg_number;
long bl, Bl, xx, len, retcode, code;
len = input.Length();
code = 0;
for (xx = o; xx c 4; xx++) {
Bl = o;
W O 96/41449 PCT~US9G/f~9916 sprintf(stg, "~d", input[xx] );
bl=atoi( stg );
if(bl > 64 && bl < 91) Bl = bl - 65;
if (bl > 49 && bl c 56) Bl = bl - 24;
switch (xx) {
case 0:
code+= Bl * 32768;
break;
case 1:
code+= Bl * 1024;
break;
case 2:
code+= Bl * 32;
break;
case 3:
code += Bl;
break;
default:
break;
}
}
return(code)) ;
}
if (temp2 ~= 'Z') temp2 -= 41;
CA 02223409 l997-l2-03 WO 96/41449 PCT/U'~6~5916 theString[index] = temp2;
number = number ~ 5;
}
if (number ~ 0) theString[l] = 42;
}
CStr255 deecode(const CStr255& input) }
char output[7];
char stg[2]
int msg_numberi int bl, Bl, xx, len, retcode;
long code, bin;
len = input.Length ();
code = 0;
for (xx = 1; xx c 5; xx++) {
Bl = 0;
sprintf(stg, "~d", input[xx] );
bl=atoi( stg );
if (bl ~ 64 && bl < 91) Bl = bl - 65;
if (bl ~ 49 && bl c 56) Bl = bl - 24;
switch (xx) {
case l:
code+= Bl * 32768;
break;
case 2:
code+= Bl * 1024;
break;
case 3:
code+= Bl * 32;
break;
case 4:
code+= Bl;
break;
default:
break;
}
}
code = (code ~ 43605) * 1523;
for (xx = o; xx < 6; xx++) {
switch (xx) {
case 0:
bin = 33554432;
break;
CA 02223409 l997-l2-03 W O 96/41449 PCT~US96/09916 case 1:
bin = 1048576;
break;
case 2:
bin = 32768;
break;
case 3:
bin - 1024;
break;
case 4:
bin = 32;
break;
case 5:
bin = l;
break;
default:
break;
{
if (code >= bin) Bl = code / bin;
code-=Bl ~ bin;
if (Bl + 65 ~= 90) {
bl = Bl + 65 }
else {
bl = Bl + 24i }
}
else {
bl = 65;
}
sprintf(&output[xx], "~c", bl);
output[6] = '\0';
}
return(CStr255(output));
}
#pragma segment Main long intcode(const CStr255& input) {
char stg[2];
int msg_number;
long bl, Bl, xx, len, retcode, code;
len = input.Length();
code = 0;
for (xx = o; xx c 4; xx++) {
Bl = o;
W O 96/41449 PCT~US9G/f~9916 sprintf(stg, "~d", input[xx] );
bl=atoi( stg );
if(bl > 64 && bl < 91) Bl = bl - 65;
if (bl > 49 && bl c 56) Bl = bl - 24;
switch (xx) {
case 0:
code+= Bl * 32768;
break;
case 1:
code+= Bl * 1024;
break;
case 2:
code+= Bl * 32;
break;
case 3:
code += Bl;
break;
default:
break;
}
}
return(code)) ;
}
Claims (143)
1. A system for demonstrating software programs to a potential purchaser of the programs and for gathering marketing information related to the demonstration of the programs, comprising:
receive means for receiving a plurality of software programs to be demonstrated;
protection means for maintaining each of the software programs in a locked state in order to prevent unauthorized duplication of the software programs, the protection means including:
an image file having an internal configuration of a specially formatted disk, at least one of the software programs being stored in the image file; and an image driver configured to prevent unauthorized access to the software program in the image file;
sample means for enabling any of the software programs for execution upon selection by a user, for allowing the user to subsequently sample the selected software program, for maintaining the selected software program in the locked state during the sampling of the selected software program in order to prevent unauthorized duplication of the selected software program, and for selectively disabling the sampling of the selected software program, the sample means using the image driver to control authorized access to the selected software program in the image file; and monitoring means for generating a code that identifies a particular software program in the plurality of software programs and contains information relating to sampling of the particular software program by the user.
receive means for receiving a plurality of software programs to be demonstrated;
protection means for maintaining each of the software programs in a locked state in order to prevent unauthorized duplication of the software programs, the protection means including:
an image file having an internal configuration of a specially formatted disk, at least one of the software programs being stored in the image file; and an image driver configured to prevent unauthorized access to the software program in the image file;
sample means for enabling any of the software programs for execution upon selection by a user, for allowing the user to subsequently sample the selected software program, for maintaining the selected software program in the locked state during the sampling of the selected software program in order to prevent unauthorized duplication of the selected software program, and for selectively disabling the sampling of the selected software program, the sample means using the image driver to control authorized access to the selected software program in the image file; and monitoring means for generating a code that identifies a particular software program in the plurality of software programs and contains information relating to sampling of the particular software program by the user.
2. The system of claim 1 wherein the monitoring means comprises means for including in the code information identifying which of the software programs the user sampled.
3. The system of claim 2 wherein the monitoring means comprises means for including in the code information identifying how many times the user sampled each of the software programs.
4. The system of claim 1 wherein the monitoring means comprises means for including in the code information identifying a category of the software program most frequently sampled by the user.
5. The system of claim 1 wherein the sample means further comprises means for preventing the enabling of the software program when the user has already sampled the software program a predetermined number of times.
6. The system of claim 1 wherein the sample means further comprises means for detecting if the software program is being copied during the sampling of the software program and for disabling the software program in response to the detecting.
7. The system of claim 1 wherein the sample means comprises means for limiting how many times the software program can be sampled and for displaying an indication of a number of samples remaining.
8. The system of claim 1 wherein the disable means comprises means for disabling the software program if the user has sampled the software program for a predetermined amount of time.
9. The system of claim 1 wherein:
the receive means comprises means for receiving the software program in an encrypted state; and the sample means comprises means for decrypting the encrypted software program.
the receive means comprises means for receiving the software program in an encrypted state; and the sample means comprises means for decrypting the encrypted software program.
10. The system of claim 1 wherein the sample means comprises means for displaying an icon which identifies the software program.
11. The system of claim 1 wherein the receive means comprises means for receiving the software program from a non-volatile storage medium.
12. The system of claim 1, further comprising means for unlocking the software program in response to a request to purchase the software program.
13. A system for demonstrating software programs to a potential purchaser of the programs on a user-selected computer and for gathering marketing information related to the demonstration of the programs, the user-selected computer being any computer on which the software program may be used if the software program is purchased by the potential purchaser, the system comprising:
receive means for receiving a plurality of software programs to be demonstrated;
protection means for maintaining each of the software programs in a locked state in order to prevent unauthorized duplication of the software programs;
sample means for enabling any of the software programs for execution upon selection by a user on the user-selected computer, for allowing the user to subsequently sample the selected software program, for maintaining the selected software program in the locked state during the sampling of the selected software program in order to prevent unauthorized duplication of the selected software program, and for selectively disabling the sampling of the selected software program;
and monitoring means for generating a code for use in unlocking the software programs and for including in the code an identification of which of the software programs was sampled by the user and how many times each of the software programs was sampled by the user.
receive means for receiving a plurality of software programs to be demonstrated;
protection means for maintaining each of the software programs in a locked state in order to prevent unauthorized duplication of the software programs;
sample means for enabling any of the software programs for execution upon selection by a user on the user-selected computer, for allowing the user to subsequently sample the selected software program, for maintaining the selected software program in the locked state during the sampling of the selected software program in order to prevent unauthorized duplication of the selected software program, and for selectively disabling the sampling of the selected software program;
and monitoring means for generating a code for use in unlocking the software programs and for including in the code an identification of which of the software programs was sampled by the user and how many times each of the software programs was sampled by the user.
14. A computerized method for demonstrating software programs to a potential purchaser of the programs and for gathering marketing information related to the demonstration of the programs, comprising the steps executed by a computer of:
receiving a plurality of software programs to be demonstrated;
maintaining each of the software programs in a locked state in order to prevent unauthorized duplication of the software programs, the maintaining step using an image file having an internal configuration of a specially formatted disk with at least one of the software programs being stored in the image file, the maintaining step using an image driver configured to prevent unauthorized access to the software program in the image file;
enabling any of the software programs in the image file for execution upon selection by a user, the enabling step using the image driver configured to control authorized access to the image file, allowing the user to subsequently sample the selected software program, maintaining the selected software program in the locked state during the sampling of the selected software program in order to prevent unauthorized duplication of the selected software program, and selectively disabling the sampling of the selected software program; and generating a code that identifies a particular software program in the plurality of software programs and contains information relating to sampling of the particular software program by the user.
receiving a plurality of software programs to be demonstrated;
maintaining each of the software programs in a locked state in order to prevent unauthorized duplication of the software programs, the maintaining step using an image file having an internal configuration of a specially formatted disk with at least one of the software programs being stored in the image file, the maintaining step using an image driver configured to prevent unauthorized access to the software program in the image file;
enabling any of the software programs in the image file for execution upon selection by a user, the enabling step using the image driver configured to control authorized access to the image file, allowing the user to subsequently sample the selected software program, maintaining the selected software program in the locked state during the sampling of the selected software program in order to prevent unauthorized duplication of the selected software program, and selectively disabling the sampling of the selected software program; and generating a code that identifies a particular software program in the plurality of software programs and contains information relating to sampling of the particular software program by the user.
15. The method of claim 14 wherein the monitoring step comprises the step of including in the code information identifying which of the software programs the user sampled.
16. The method of claim 15 wherein the monitoring step comprises the step of including in the code information identifying how many times the user sampled each of the software programs.
17. The method of claim 14 wherein the monitoring step comprises the step of including in the code information identifying a category of the software program most frequently sampled by the user.
18. The method of claim 14 wherein the enabling step further comprises the step executed by the computer of preventing the enabling of the software program when the user has already sampled the software program a predetermined number of times.
19. The method of claim 14 wherein the disabling step further comprises the steps executed by the computer of detecting if the software program is being copied during the sampling of the software program and disabling the software program in response to the detecting.
20. The method of claim 14 wherein the enabling step comprises the steps of limiting how many times the software program can be sampled and displaying an indication of a number of samples remaining.
21. The method of claim 14 wherein the disabling step comprises the step of disabling the software program if the user has sampled the software program for a predetermined amount of time.
22. The method of claim 14 wherein:
the receiving step comprises the step of receiving the software program in an encrypted state; and the enabling step comprises the step of decrypting the encrypted software program.
the receiving step comprises the step of receiving the software program in an encrypted state; and the enabling step comprises the step of decrypting the encrypted software program.
23. The method of claim 14 wherein the enabling step comprises the step of displaying an icon which identifies the software program.
24. The method of claim 14 wherein the receiving step comprises the step of receiving the software program from a non-volatile storage medium.
25. The method of claim 14, further comprising the step of unlocking the software program in response to a request to purchase the software program.
26. A computer program product, comprising:
a computer usable medium having computer readable program code means embodied therein for causing a user-selected computer to demonstrate software programs to a potential purchaser of the programs on the user-selected computer and to gather marketing information related to the demonstration of the programs, the user-selected computer being any computer on which the software program may be used if the software program is purchased by the potential purchaser, the computer readable program code means in the computer program product comprising:
receive means for causing the computer to receive a plurality of software programs to be demonstrated;
protection means for causing the computer to maintain each of the software programs in a locked state in order to prevent unauthorized duplication of the software programs; and sample means for causing the user-selected computer to enable any of the software programs for execution upon selection by a user, allow the user to subsequently sample the selected software program, maintain the selected software program in the locked state during the sampling of the selected software program in order to prevent unauthorized duplication of the selected software program, and selectively disable the sampling of the selected software program; and monitoring means for causing the user-selected computer to generate a code that identifies a particular software program in the plurality of software programs and contains information relating to sampling of the particular software program by the user.
a computer usable medium having computer readable program code means embodied therein for causing a user-selected computer to demonstrate software programs to a potential purchaser of the programs on the user-selected computer and to gather marketing information related to the demonstration of the programs, the user-selected computer being any computer on which the software program may be used if the software program is purchased by the potential purchaser, the computer readable program code means in the computer program product comprising:
receive means for causing the computer to receive a plurality of software programs to be demonstrated;
protection means for causing the computer to maintain each of the software programs in a locked state in order to prevent unauthorized duplication of the software programs; and sample means for causing the user-selected computer to enable any of the software programs for execution upon selection by a user, allow the user to subsequently sample the selected software program, maintain the selected software program in the locked state during the sampling of the selected software program in order to prevent unauthorized duplication of the selected software program, and selectively disable the sampling of the selected software program; and monitoring means for causing the user-selected computer to generate a code that identifies a particular software program in the plurality of software programs and contains information relating to sampling of the particular software program by the user.
27. An on-line system for demonstrating software programs to a potential purchaser of the programs, comprising:
receive means for receiving from an electronically accessible system a software program to be demonstrated;
protection means for maintaining the software program in a locked state in order to prevent unauthorized duplication of the software program, the protection means comprising:
an image file loaded in a computer-readable medium and having an internal configuration of a specially formatted disk with the software program being stored therein; and an image driver configured to prevent unauthorized access to the software program in the image file; and sample means for enabling the software program for execution upon selection by a user, for allowing the user to subsequently sample the software program, for maintaining the software program in the locked state during the sampling of the software program in order to prevent unauthorized duplication of the software program, and for selectively disabling the sampling of the software program.
receive means for receiving from an electronically accessible system a software program to be demonstrated;
protection means for maintaining the software program in a locked state in order to prevent unauthorized duplication of the software program, the protection means comprising:
an image file loaded in a computer-readable medium and having an internal configuration of a specially formatted disk with the software program being stored therein; and an image driver configured to prevent unauthorized access to the software program in the image file; and sample means for enabling the software program for execution upon selection by a user, for allowing the user to subsequently sample the software program, for maintaining the software program in the locked state during the sampling of the software program in order to prevent unauthorized duplication of the software program, and for selectively disabling the sampling of the software program.
28. The system of claim 27 wherein the sample means further comprises means for preventing the enabling of -the software program when the user has already sampled the software program a predetermined number of times.
29. The system of claim 27 wherein the sample means further comprises means for detecting if the software program is being copied during the sampling of the software program and for disabling the software program in response to the detecting.
30. The system of claim 27 wherein the sample means comprises means for limiting how many times the software program can be sampled and for displaying an indication of a number of samples remaining.
31. The system of claim 27 wherein the disable means comprises means for disabling the software program if the user has sampled the software program for a predetermined amount of time.
32. The system of claim 27 wherein:
the receive means comprises means for receiving the software program in an encrypted state; and the sample means comprises means for decrypting the encrypted software program.
the receive means comprises means for receiving the software program in an encrypted state; and the sample means comprises means for decrypting the encrypted software program.
33. The system of claim 27, further comprising means for generating a code identifying the software program.
34. The system of claim 27 wherein the sample means comprises means for displaying an icon which identifies the software program.
35. A computerized on-line method for demonstrating software programs to a potential purchaser of the programs, comprising the steps executed by a computer of:
receiving from an electronically accessible system a software program to be demonstrated.
maintaining the software program in a locked state in order to prevent unauthorized duplication of the software program, the maintaining step using an image file having an internal configuration of a specially formatted disk with the software program stored therein, the maintaining step using an image driver configured to prevent unauthorized access to the software program in the image file; and enabling the software program for execution upon selection by a user, allowing the user to subsequently sample the software program, maintaining the software program in the locked state during the sampling of the software program in order to prevent unauthorized duplication of the software program, and selectively disabling the sampling of the software program.
receiving from an electronically accessible system a software program to be demonstrated.
maintaining the software program in a locked state in order to prevent unauthorized duplication of the software program, the maintaining step using an image file having an internal configuration of a specially formatted disk with the software program stored therein, the maintaining step using an image driver configured to prevent unauthorized access to the software program in the image file; and enabling the software program for execution upon selection by a user, allowing the user to subsequently sample the software program, maintaining the software program in the locked state during the sampling of the software program in order to prevent unauthorized duplication of the software program, and selectively disabling the sampling of the software program.
36. The method of claim 35 wherein the enabling step further comprises the step executed by the computer of preventing the enabling of the software program when the user has already sampled the software program a predetermined number of times.
37. The method of claim 35 wherein the disabling step further comprises the steps executed by the computer of detecting if the software program is being copied during the sampling of the software program and disabling the software program in response to the detecting.
38. The method of claim 35 wherein the enabling step comprises the steps of limiting how many times the software program can be sampled and displaying an indication of a number of samples remaining.
39. The method of claim 35 wherein the disabling step comprises the step of disabling the software program if the user has sampled the software program for a predetermined amount of time.
40. The method of claim 35 wherein:
the receiving step comprises means the step of receiving the software program in an encrypted state;
and the enabling step comprises the step of decrypting the encrypted software program.
the receiving step comprises means the step of receiving the software program in an encrypted state;
and the enabling step comprises the step of decrypting the encrypted software program.
41. The method of claim 35, further comprising the step executed by the computer of generating a code identifying software program.
42. The method of claim 35 wherein the enabling step comprises the step of displaying an icon which identifies the software program.
43. A computer program product, comprising:
a computer usable medium having computer readable program code means embodied therein for causing a use-selected computer to demonstrate on-line software programs to a potential purchaser of the programs on the user-selected computer, the user-selected computer being any computer on which the software program may be used if the software program is purchased by the potential purchaser, the computer readable program code means in the computer program product comprising:
receive means for causing the user-selected computer to receive from an electronically accessible system a software program to be demonstrated;
protection means for causing the user-selected computer to maintain the software program in a locked state in order to prevent unauthorized duplication of the software program; and sample means for causing the user-selected computer to enable the software program for execution upon selection by a user, allow the user to subsequently sample the software program, maintain the software program in the locked state during the sampling of the software program in order to prevent unauthorized duplication of the software program, and selectively disable the sampling of the software program.
a computer usable medium having computer readable program code means embodied therein for causing a use-selected computer to demonstrate on-line software programs to a potential purchaser of the programs on the user-selected computer, the user-selected computer being any computer on which the software program may be used if the software program is purchased by the potential purchaser, the computer readable program code means in the computer program product comprising:
receive means for causing the user-selected computer to receive from an electronically accessible system a software program to be demonstrated;
protection means for causing the user-selected computer to maintain the software program in a locked state in order to prevent unauthorized duplication of the software program; and sample means for causing the user-selected computer to enable the software program for execution upon selection by a user, allow the user to subsequently sample the software program, maintain the software program in the locked state during the sampling of the software program in order to prevent unauthorized duplication of the software program, and selectively disable the sampling of the software program.
44. A computer system for demonstrating a software program on the computer system to a potential purchaser of the software program, wherein the software program is provided to the computer system in a locked state, the computer system comprising:
controlling means attached to the software program and stored in a computer-readable medium for controlling, on the computer system, demonstration of the software program during a predetermined trial usage period;
protection means for maintaining the software program in the locked state in order to prevent unauthorized duplication of the software program, the protection means comprising:
an image file loaded in a computer-readable medium and having an internal configuration of a specially formatted disk, the software program being stored in the image file; and an image driver configured to control access to the software program in the image file;
the controlling means including activation means for launching the controlling means when a user selects the software program, the activation means comprising: sample means for enabling the software program for execution upon selection by the user, for allowing the user to subsequently sample the software program during the predetermined trial usage period, for maintaining the software program in the locked state during the sampling of the software program in order to prevent unauthorized duplication of the software program, and for selectively disabling the sampling of the software program; and means for enabling, on the computer system, permanent use of the software program if the user purchases the software program.
controlling means attached to the software program and stored in a computer-readable medium for controlling, on the computer system, demonstration of the software program during a predetermined trial usage period;
protection means for maintaining the software program in the locked state in order to prevent unauthorized duplication of the software program, the protection means comprising:
an image file loaded in a computer-readable medium and having an internal configuration of a specially formatted disk, the software program being stored in the image file; and an image driver configured to control access to the software program in the image file;
the controlling means including activation means for launching the controlling means when a user selects the software program, the activation means comprising: sample means for enabling the software program for execution upon selection by the user, for allowing the user to subsequently sample the software program during the predetermined trial usage period, for maintaining the software program in the locked state during the sampling of the software program in order to prevent unauthorized duplication of the software program, and for selectively disabling the sampling of the software program; and means for enabling, on the computer system, permanent use of the software program if the user purchases the software program.
45. The system of claim 44 wherein the sample means further comprises means for preventing the enabling of the software program when the predetermined trial usage period has expired, wherein the predetermined trial usage period expires when the user has already sampled the software program a predetermined number of times.
46. The system of claim 44 wherein the sample means further comprises means for detecting if the software program is being copied during the sampling of the software program and for disabling the software program in response to the detecting.
47. The system of claim 44 wherein the predetermined trial usage period defines a predetermined number of times the software program can be sampled by the user, the sample means comprising means for limiting the sampling of the software program to the predetermined trial usage period and for displaying an indication of a number of samples remaining.
48. The system of claim 44 wherein the disable means comprises means for disabling the software program if the predetermined trial usage period has expired, wherein the predetermined trial usage period expires when the user has sampled the software program for a predetermined amount of time.
49. The system of claim 44, further comprising means for generating a code identifying the software program.
50. The system of claim 44 wherein the sample means comprises means for displaying an icon which identifies the software program.
51. The system of claim 44, further comprising means for receiving the software program and the attached controlling means from an on-line system.
52. A computerized method for demonstrating a software program on a computer to a potential purchaser of the software program, wherein the software program is provided to the computer in a locked state, the computerized method comprising the steps, executed by the computer, of:
providing a self-launching software demonstration system attached to the software program;
maintaining the software program in the locked state in order to prevent unauthorized duplication of the software program, the maintaining step using an image file having an internal configuration of a specially formatted disk with the software program stored therein, the maintaining step using an image driver configured to control access to the software program in the image file; and launching the self-launching software demonstration system when a user selects the software program, comprising the steps of:
enabling the software program for execution upon selection by the user;
allowing the user to subsequently sample the software program;
maintaining the software program in the locked state during the sampling of the software program in order to prevent unauthorized duplication of the software program; and selectively disabling the sampling of the software program.
providing a self-launching software demonstration system attached to the software program;
maintaining the software program in the locked state in order to prevent unauthorized duplication of the software program, the maintaining step using an image file having an internal configuration of a specially formatted disk with the software program stored therein, the maintaining step using an image driver configured to control access to the software program in the image file; and launching the self-launching software demonstration system when a user selects the software program, comprising the steps of:
enabling the software program for execution upon selection by the user;
allowing the user to subsequently sample the software program;
maintaining the software program in the locked state during the sampling of the software program in order to prevent unauthorized duplication of the software program; and selectively disabling the sampling of the software program.
53. The method of claim 52 wherein the enabling step further comprises the step executed by the computer of preventing the enabling of the software program when the predetermined trial usage period has expired, wherein the predetermined trial usage period expires when the user has already sampled the software program a predetermined number of times.
54. The method of claim 52 wherein the disabling step further comprises the steps executed by the computer of detecting if the software program is being copied during the sampling of the software program and disabling the software program in response to the detecting.
55. The method of claim 52 wherein the predetermined trial usage period defines a predetermined number of times the software program can be sampled by the user, the enabling step comprising the steps of limiting the sampling of the software program to the predetermined trial usage period and displaying an indication of a number of samples remaining.
56. The method of claim 52 wherein the disabling step comprises the step of disabling the software program if the predetermined trial usage period has expired, wherein the predetermined trial usage period expires when the user has sampled the software program for a predetermined amount of time.
57. The method of claim 52, further comprising the step executed by the computer of generating a code identifying the software program.
58. The method of claim 52 wherein the enabling step comprises the step of displaying an icon which identifies the software program.
59. The method of claim 52, further comprising the step of receiving the software program and the attached self-launching software demonstration system from an on-line system.
60. A computer program product for demonstrating a software program on a computer to a potential purchaser of the software program, wherein the software program is provided to the computer in a locked state, the computer program product comprising:
a computer usable medium having computer readable program code means embodied therein for causing the computer to execute a self-launching software demonstration system attached to the software program, the computer readable program code means in the computer program product comprising:
protection means for causing the computer to maintain the software program in the locked state in order to prevent unauthorized duplication of the software program, the protection means comprising:
an image file having an internal configuration of a specially formatted disk, the software program being stored in the image file; and an image driver configured to control access to the software program in the image file; and activation means for causing the computer to launch the self-launching software demonstration system when a user selects the software program, the activation means comprising: sample means for causing the computer to enable the software program for execution upon selection by the user, for allowing the user to subsequently sample the software program, for maintaining the software program in the locked state during the sampling of the software program in order to prevent unauthorized duplication of the software program, and for selectively disabling the sampling of the software program.
a computer usable medium having computer readable program code means embodied therein for causing the computer to execute a self-launching software demonstration system attached to the software program, the computer readable program code means in the computer program product comprising:
protection means for causing the computer to maintain the software program in the locked state in order to prevent unauthorized duplication of the software program, the protection means comprising:
an image file having an internal configuration of a specially formatted disk, the software program being stored in the image file; and an image driver configured to control access to the software program in the image file; and activation means for causing the computer to launch the self-launching software demonstration system when a user selects the software program, the activation means comprising: sample means for causing the computer to enable the software program for execution upon selection by the user, for allowing the user to subsequently sample the software program, for maintaining the software program in the locked state during the sampling of the software program in order to prevent unauthorized duplication of the software program, and for selectively disabling the sampling of the software program.
61. A computer system for distributing a software program to a purchaser of the program, comprising:
means for controlling, on the computer system, distribution of a software program;
protection means for maintaining the software program in a locked state in order to prevent unauthorized copying of the software program, the protection means comprising:
an image file loaded in a computer-readable medium and having an internal configuration of a specially formatted disk, wherein the software program is stored in the image file and is attached to the controlling means; and an image driver configured to control access to the software program in the image file; and the controlling means including activation means for launching the controlling means when a user selects the software program, the activation means comprising means for causing the image driver to unlock the software program and to detach the software program from the controlling means in response to a request to purchase the software program.
means for controlling, on the computer system, distribution of a software program;
protection means for maintaining the software program in a locked state in order to prevent unauthorized copying of the software program, the protection means comprising:
an image file loaded in a computer-readable medium and having an internal configuration of a specially formatted disk, wherein the software program is stored in the image file and is attached to the controlling means; and an image driver configured to control access to the software program in the image file; and the controlling means including activation means for launching the controlling means when a user selects the software program, the activation means comprising means for causing the image driver to unlock the software program and to detach the software program from the controlling means in response to a request to purchase the software program.
62. The system of claim 61, further comprising means for generating a code identifying the software program.
63. The system of claim 61, further comprising means for displaying an icon which identifies the software program.
64. The system of claim 61, further comprising means for receiving the software program and the attached controlling means from an on-line system.
65. A method for distributing software, the method using a self-launching software distribution system associated with a software program for distributing the software program to a purchaser of the program, the method comprising the steps executed by a computer of:
providing a software program having the self-launching distribution system attached thereto;
maintaining the software program in a locked state in order to prevent unauthorized copying of the software program, the maintaining step using an image file having an internal configuration of a specially formatted disk and having the software program stored therein, the maintaining step using an image driver configured to control access to the software program in the image file; and launching the self-launching software distribution system when a user selects the software program, comprising the step of using the image driver to unlock the software program and to detach the software program from the self-launching software distribution system in response to a request to purchase the software program.
providing a software program having the self-launching distribution system attached thereto;
maintaining the software program in a locked state in order to prevent unauthorized copying of the software program, the maintaining step using an image file having an internal configuration of a specially formatted disk and having the software program stored therein, the maintaining step using an image driver configured to control access to the software program in the image file; and launching the self-launching software distribution system when a user selects the software program, comprising the step of using the image driver to unlock the software program and to detach the software program from the self-launching software distribution system in response to a request to purchase the software program.
66. The method of claim 65 wherein the launching step further comprises the step of generating a code identifying the software program.
67. The method of claim 65 wherein the launching step further comprises the step of displaying an icon which identifies the software program.
68. The method of claim 65, further comprising the step executed by the computer of receiving the software program and the attached self-launching system from an on-line system.
69. A computer program product for distributing software, comprising:
a computer usable medium having computer readable program code means embodied therein for causing a computer to execute a self-launching software distribution system associated with a software program for distributing the software program to a purchaser of the program, the computer readable program code means in the computer program product comprising:
protection means for causing the computer to maintain the software program in a locked state in order to prevent unauthorized copying of the software program, the protection means comprising:
an image file having an internal configuration of a specially formatted disk, wherein the software program is stored in the image file and is attached to the self-launching software distribution system; and an image driver configured to control access to the software program in the image file; and activation means for causing the computer to launch the self-launching software distribution system when a user selects the software program, the activation means comprising means for causing the image driver to unlock the software program and to detach the software program from the self-launching software distribution system in response to a request to purchase the software program.
a computer usable medium having computer readable program code means embodied therein for causing a computer to execute a self-launching software distribution system associated with a software program for distributing the software program to a purchaser of the program, the computer readable program code means in the computer program product comprising:
protection means for causing the computer to maintain the software program in a locked state in order to prevent unauthorized copying of the software program, the protection means comprising:
an image file having an internal configuration of a specially formatted disk, wherein the software program is stored in the image file and is attached to the self-launching software distribution system; and an image driver configured to control access to the software program in the image file; and activation means for causing the computer to launch the self-launching software distribution system when a user selects the software program, the activation means comprising means for causing the image driver to unlock the software program and to detach the software program from the self-launching software distribution system in response to a request to purchase the software program.
70. A computer system for distributing digital information to a purchaser of the program, comprising:
means for controlling, on the computer system, distribution of the digital information;
protection means for maintaining the digital information in a locked state in order to prevent unauthorized copying of the digital information, the protection means comprising:
an image file loaded in a computer-readable medium and having an internal configuration of a specially formatted disk, wherein the digital information is stored in the image file and is attached to the controlling means; and an image driver configured to control access to the digital information in the image file; and the controlling means including activation means for launching the controlling means when a user selects the digital information, the activation means comprising means for causing the image driver to unlock the software program and to detach the digital information from the controlling means in response to a request to purchase the digital information.
means for controlling, on the computer system, distribution of the digital information;
protection means for maintaining the digital information in a locked state in order to prevent unauthorized copying of the digital information, the protection means comprising:
an image file loaded in a computer-readable medium and having an internal configuration of a specially formatted disk, wherein the digital information is stored in the image file and is attached to the controlling means; and an image driver configured to control access to the digital information in the image file; and the controlling means including activation means for launching the controlling means when a user selects the digital information, the activation means comprising means for causing the image driver to unlock the software program and to detach the digital information from the controlling means in response to a request to purchase the digital information.
71. The system of claim 70, further comprising means for generating a code identifying the digital information.
72. The system of claim 70, further comprising means for displaying an icon which identifies the digital information.
73. The system of claim 70, further comprising means for receiving the digital information and the attached controlling means from an on-line system.
74. A method for distributing digital information, the method using a self-launching digital information distribution system associated with digital information for distributing the digital information to a purchaser of the digital information, the method comprising the steps executed by a computer of:
providing digital information having the self-launching distribution system attached thereto;
maintaining the digital information in a locked state in order to prevent unauthorized copying of the digital information, the maintaining step using an image file having an internal configuration of a specially formatted disk and having the digital information stored therein, the maintaining step using an image driver configured to control access to the digital information in the image file; and launching the self-launching digital information distribution system when a user selects the digital information, comprising the step of using the image driver to unlock the digital information and to detach the digital information from the self-launching digital information distribution system in response to a request to purchase the digital information.
.
providing digital information having the self-launching distribution system attached thereto;
maintaining the digital information in a locked state in order to prevent unauthorized copying of the digital information, the maintaining step using an image file having an internal configuration of a specially formatted disk and having the digital information stored therein, the maintaining step using an image driver configured to control access to the digital information in the image file; and launching the self-launching digital information distribution system when a user selects the digital information, comprising the step of using the image driver to unlock the digital information and to detach the digital information from the self-launching digital information distribution system in response to a request to purchase the digital information.
.
75. The method of claim 74 wherein the launching step further comprises the step of generating a code identifying the digital information.
76. The method of claim 74 wherein the launching step further comprises the step of displaying an icon which identifies the digital information.
77. The method of claim 74, further comprising the step executed by the computer of receiving the digital information and the attached self-launching system from an on-line system.
78. A computer program product for distributing digital information, comprising:
a computer usable medium having computer readable program code means embodied therein for causing a computer to execute a self-launching digital information distribution system associated with a digital information for distributing the digital information to a purchaser of the program, the computer readable program code means in the computer program product comprising:
protection means for causing the computer to maintain the digital information in a locked state in order to prevent unauthorized copying of the digital information, the protection means comprising:
an image file having an internal configuration of a specially formatted disk, wherein the digital information is stored in the image file and is attached to the self-launching digital information distribution system; and an image driver configured to selectively control access to the digital information in the image file; and activation means for causing the computer to launch the self-launching digital information distribution system when a user selects the digital information, the activation means comprising means for causing the image driver to unlock the digital information and to detach the digital information from the self-launching digital information distribution system in response to a request to purchase the digital information.
a computer usable medium having computer readable program code means embodied therein for causing a computer to execute a self-launching digital information distribution system associated with a digital information for distributing the digital information to a purchaser of the program, the computer readable program code means in the computer program product comprising:
protection means for causing the computer to maintain the digital information in a locked state in order to prevent unauthorized copying of the digital information, the protection means comprising:
an image file having an internal configuration of a specially formatted disk, wherein the digital information is stored in the image file and is attached to the self-launching digital information distribution system; and an image driver configured to selectively control access to the digital information in the image file; and activation means for causing the computer to launch the self-launching digital information distribution system when a user selects the digital information, the activation means comprising means for causing the image driver to unlock the digital information and to detach the digital information from the self-launching digital information distribution system in response to a request to purchase the digital information.
79. A system for storing a code in spare memory locations of a portion of non-volatile memory of a computer in order to identify whether the computer has executed a particular software program, the portion of non-volatile memory being allocated to an operating system of the computer and having the operating system of the computer stored therein, the system comprising:
receive means for receiving an indication that the computer has executed the software program;
search means for searching the portion of non-volatile memory that is allocated to the operating system and in which the operating system for the computer is stored in order to locate the spare memory locations within the portion of non-volatile memory;
write means for writing a code to at least one of the spare memory locations, the code providing an indication that the computer has executed the software program; and means for electronically associating the code with the software program.
receive means for receiving an indication that the computer has executed the software program;
search means for searching the portion of non-volatile memory that is allocated to the operating system and in which the operating system for the computer is stored in order to locate the spare memory locations within the portion of non-volatile memory;
write means for writing a code to at least one of the spare memory locations, the code providing an indication that the computer has executed the software program; and means for electronically associating the code with the software program.
80. The system of claim 79 wherein:
the search means comprises means for searching the memory for spare boot block locations; and the write means comprises means for writing the code to the spare boot block locations.
the search means comprises means for searching the memory for spare boot block locations; and the write means comprises means for writing the code to the spare boot block locations.
81. The system of claim 79, further comprising:
means for searching the memory in order to locate the code associated with the particular software program; and means for providing an indication that the computer has previously executed the software program, if the code is found.
means for searching the memory in order to locate the code associated with the particular software program; and means for providing an indication that the computer has previously executed the software program, if the code is found.
82. The system of claim 79 wherein the write means comprises means for including with the code information related to use of the software program on the computer.
83. The system of claim 79 wherein the write means comprises means for writing a predetermined number of copies of the code to the spare memory locations.
84. The system of claim 83, further comprising:
means for searching the spare memory locations for the predetermined number of copies of the code; and means for writing copies of the code to the spare memory locations in order to recreate the predetermined number of copies of the code, if the predetermined number of copies of the code were not found.
means for searching the spare memory locations for the predetermined number of copies of the code; and means for writing copies of the code to the spare memory locations in order to recreate the predetermined number of copies of the code, if the predetermined number of copies of the code were not found.
85. A computerized method for storing a code in spare memory locations of a portion of non-volatile memory of a computer in order to identify whether the computer has executed a particular software program, the portion of non-volatile memory being allocated to an operating system of the computer and having the operating system of the computer stored therein, the method comprising the steps executed by the computer of:
receiving an indication that the computer has executed the software program;
searching the portion of non-volatile memory that is allocated to the operating system and in which the operating system for the computer is stored in order to locate the spare memory locations within the portion of non-volatile memory;
writing a code to at least one of the spare memory locations, the code providing an indication that the computer has executed the software program; and associating the code with the software program.
receiving an indication that the computer has executed the software program;
searching the portion of non-volatile memory that is allocated to the operating system and in which the operating system for the computer is stored in order to locate the spare memory locations within the portion of non-volatile memory;
writing a code to at least one of the spare memory locations, the code providing an indication that the computer has executed the software program; and associating the code with the software program.
86. The method of claim 85 wherein:
the searching step comprises the step of searching the memory for spare boot block locations; and the writing step comprises the step of writing the code to the spare boot block locations.
the searching step comprises the step of searching the memory for spare boot block locations; and the writing step comprises the step of writing the code to the spare boot block locations.
87. The method of claim 85, further comprising the steps executed by the computer of:
searching the memory in order to locate the code associated with the particular software program; and providing an indication that the computer has previously executed the software program, if the code is found.
searching the memory in order to locate the code associated with the particular software program; and providing an indication that the computer has previously executed the software program, if the code is found.
88. The method of claim 85 wherein the writing step comprises the step of including with the code information related to use of the software program on the computer.
89. The method of claim 85 wherein the writing step comprises the step of writing a predetermined number of copies of the code to the spare memory locations.
90. The method of claim 89, further comprising the steps executed by the computer of:
searching the spare memory locations for the predetermined number of copies of the code; and writing copies of the code to the spare memory locations in order to recreate the predetermined number of copies of the code, if the predetermined number of copies of the code were not found.
searching the spare memory locations for the predetermined number of copies of the code; and writing copies of the code to the spare memory locations in order to recreate the predetermined number of copies of the code, if the predetermined number of copies of the code were not found.
91. A computer program product, comprising:
a computer usable medium having computer readable program code means embodied therein for causing a computer to store a code in spare memory locations of a portion of non-volatile memory of the computer in order to identify whether the computer has executed a particular software program, the portion of non-volatile memory being allocated to an operating system of the computer and having the operating system of the computer stored therein, the computer readable program code means in the computer program product comprising:
receive means for causing the computer to receive an indication that the computer has executed the software program;
search means for causing the computer to search the portion of non-volatile memory that is allocated to the operating system and in which the operating system for the computer is stored in order to locate the spare memory locations within the portion of non-volatile memory;
write means for causing the computer to write a code to at least one of the spare memory locations, the code providing an indication that the computer has executed the software program; and means for causing the computer to electronically associate the code with the software program.
a computer usable medium having computer readable program code means embodied therein for causing a computer to store a code in spare memory locations of a portion of non-volatile memory of the computer in order to identify whether the computer has executed a particular software program, the portion of non-volatile memory being allocated to an operating system of the computer and having the operating system of the computer stored therein, the computer readable program code means in the computer program product comprising:
receive means for causing the computer to receive an indication that the computer has executed the software program;
search means for causing the computer to search the portion of non-volatile memory that is allocated to the operating system and in which the operating system for the computer is stored in order to locate the spare memory locations within the portion of non-volatile memory;
write means for causing the computer to write a code to at least one of the spare memory locations, the code providing an indication that the computer has executed the software program; and means for causing the computer to electronically associate the code with the software program.
92. A system for preventing unauthorized duplication of a particular software program among a plurality of active software programs executed on a computer, comprising:
receive means for receiving an indication that the computer is executing the particular software program;
monitoring means for monitoring operation of the computer to determine which of the plurality of the active software programs is being currently executed;
and disable means for disabling execution of the particular software program when the monitoring means determines that the particular software program is not the currently executed software program.
receive means for receiving an indication that the computer is executing the particular software program;
monitoring means for monitoring operation of the computer to determine which of the plurality of the active software programs is being currently executed;
and disable means for disabling execution of the particular software program when the monitoring means determines that the particular software program is not the currently executed software program.
93. The system of claim 92 wherein the monitoring means comprises means for monitoring the operation of the computer within a multi-tasking environment which includes a distinct visual indicator for each of the active software programs.
94. The system of claim 92 wherein the monitoring means further comprises means for identifying a front-most indicator among the plurality of active software programs.
95. The system of claim 92 wherein the disable means comprises means for disabling an image driver corresponding to the particular software program.
96. A computerized method for preventing unauthorized duplication of a particular software program among a plurality of active software programs executed on a computer, comprising the steps executed by a computer of:
receiving an indication that the computer is executing the particular software program;
monitoring operation of the computer to determine which of the plurality of the active software programs is being currently executed; and disabling execution of the particular software program when the monitoring means determines that the particular software program is not the currently executed software program.
receiving an indication that the computer is executing the particular software program;
monitoring operation of the computer to determine which of the plurality of the active software programs is being currently executed; and disabling execution of the particular software program when the monitoring means determines that the particular software program is not the currently executed software program.
97. The method of claim 96 wherein the monitoring step comprises the step of monitoring the operation of the computer within a multi-tasking environment which includes a distinct visual indicator for each of the active software programs.
98. The method of claim 97 wherein the monitoring step further comprises the step executed by the computer of identifying a front-most indicator among the plurality of active software programs.
99. The method of claim 96 wherein the disabling step comprises the step of disabling an image driver corresponding to the particular software program.
100. A computer program product, comprising:
a computer usable medium having computer readable program code means embodied therein for causing a computer to prevent unauthorized duplication of a particular software program among a plurality of active software programs executed on the computer, the computer readable program code means in the computer program product comprising:
receive means for causing the computer to receive an indication that the computer is executing the particular software program;
monitoring means for causing the computer to monitor operation of the computer to determine which of the plurality of the active software programs is being currently executed; and disable means for causing the computer to disable execution of the particular software program when the monitoring means determines that the particular software program is not the currently executed software program.
a computer usable medium having computer readable program code means embodied therein for causing a computer to prevent unauthorized duplication of a particular software program among a plurality of active software programs executed on the computer, the computer readable program code means in the computer program product comprising:
receive means for causing the computer to receive an indication that the computer is executing the particular software program;
monitoring means for causing the computer to monitor operation of the computer to determine which of the plurality of the active software programs is being currently executed; and disable means for causing the computer to disable execution of the particular software program when the monitoring means determines that the particular software program is not the currently executed software program.
101. A computer-based system for automatic sales of software programs, comprising:
means for accessing a software program within a computer database and for maintaining the software program in a locked state in order to prevent unauthorized duplication of the software program, the accessing and maintaining means comprising:
an image file having an internal configuration of a specially formatted disk with the computer database stored therein; and an image driver configured to selectively access the software program within the computer database in the image file;
receive means for receiving a request to purchase the software program;
unlocking means for unlocking a copy of the software program in response to the request to purchase the software program; and means for distributing the unlocked copy.
means for accessing a software program within a computer database and for maintaining the software program in a locked state in order to prevent unauthorized duplication of the software program, the accessing and maintaining means comprising:
an image file having an internal configuration of a specially formatted disk with the computer database stored therein; and an image driver configured to selectively access the software program within the computer database in the image file;
receive means for receiving a request to purchase the software program;
unlocking means for unlocking a copy of the software program in response to the request to purchase the software program; and means for distributing the unlocked copy.
102. The system of claim 101 wherein the unlocking means comprises means for assigning serial numbers to the purchased copies of the software program.
103. The system of claim 101 further comprising recording means for recording how many copies of the software program have been distributed in response to the requests to purchase the software program.
104. The system of claim 103 wherein the recording means comprises means for automatically issuing an invoice for the purchased copies of the software program.
105. The system of claim 101 wherein the means for accessing comprises means for receiving the software program from an on-line system.
106. The system of claim 101, further comprising means for allowing a potential purchaser to sample the software program prior to receiving the request to purchase the software program.
107. The system of claim 106 wherein the means for allowing a potential purchaser to sample the software program comprises: sample means for enabling the software program for execution upon selection by a user, for allowing the user to subsequently sample the software program, for maintaining the software program in the locked state during the sampling of the software program in order to prevent unauthorized duplication of the selected software program, and for disabling the sampling of the selected software program.
108. The system of claim 107 wherein the sample means further comprises means for preventing the enabling of the software program when the user has already sampled the software program a predetermined number of times.
109. The system of claim 107 wherein the sample means further comprises means for detecting if the software program is being copied during the sampling of the software program and for disabling the software program in response to the detecting.
110. The system of claim 107 wherein the sample means comprises means for limiting how many times the software program can be sampled and for displaying an indication of a number of samples remaining.
111. The system of claim 107 wherein the sample means comprises means for disabling the software program if the user has sampled the software program for a predetermined amount of time.
112. The system of claim 107 wherein:
the means for accessing comprises means for receiving the software program in an encrypted state;
and the sample means comprises means for decrypting the encrypted software program.
the means for accessing comprises means for receiving the software program in an encrypted state;
and the sample means comprises means for decrypting the encrypted software program.
113. The system of claim 107 wherein the sample means comprises means for displaying an icon which identifies the software program.
114. A computerized method for automatic sales of software programs, comprising the steps executed by a computer of:
accessing a software program within a computer database, the computer database being stored in an image file having an internal configuration of a specially formatted disk, and maintaining the software program in a locked state in order to prevent unauthorized duplication of the software program, the accessing and maintaining step accessing the software program with an image driver configured to selectively access software programs within the computer database in the image file;
receiving a request to purchase the software program;
unlocking a copy of the software program in response to the request to purchase the software program; and distributing the unlocked copy.
accessing a software program within a computer database, the computer database being stored in an image file having an internal configuration of a specially formatted disk, and maintaining the software program in a locked state in order to prevent unauthorized duplication of the software program, the accessing and maintaining step accessing the software program with an image driver configured to selectively access software programs within the computer database in the image file;
receiving a request to purchase the software program;
unlocking a copy of the software program in response to the request to purchase the software program; and distributing the unlocked copy.
115. The method of claim 114 wherein the unlocking step comprises the step of assigning serial numbers to the purchased copies of the software program.
116. The method of claim 114 further comprising the step of recording how many copies of the software program have been distributed in response to the requests to purchase the software program.
117. The method of claim 114 wherein the recording step comprises the step of automatically issuing an invoice for the purchased copies of the software program.
118. The method of claim 114 wherein the means for accessing comprises means for receiving the software program from an on-line system.
119. The method of claim 114, further comprising the step executed by the computer of allowing a potential purchaser to sample the software program prior to receiving the request to purchase the software program.
120. The method of claim 119 wherein the step of allowing a potential purchaser to sample the software program comprises the steps of:
enabling the software program for execution upon selection by a user;
allowing the user to subsequently sample the software program;
maintaining the software program in the locked state during the sampling of the software program in order to prevent unauthorized duplication of the selected software program; and disabling the sampling of the selected software program.
enabling the software program for execution upon selection by a user;
allowing the user to subsequently sample the software program;
maintaining the software program in the locked state during the sampling of the software program in order to prevent unauthorized duplication of the selected software program; and disabling the sampling of the selected software program.
121. The method of claim 120 wherein the enabling step further comprises the step of preventing the enabling of the software program when the user has already sampled the software program a predetermined number of times.
122. The method of claim 120 wherein the disabling step further comprises the steps executed by the computer of detecting if the software program is being copied during the sampling of the software program and disabling the software program in response to the detecting.
123. The method of claim 120 wherein the enabling step comprises the steps of limiting how many times the software program can be sampled and displaying an indication of a number of samples remaining.
124. The method of claim 120 wherein the disabling step comprises the step of disabling the software program if the user has sampled the software program for a predetermined amount of time.
125. The method of claim 120 wherein:
the accessing step comprises the step of receiving the software program in an encrypted state; and the enabling step comprises the step of decrypting the encrypted software program.
the accessing step comprises the step of receiving the software program in an encrypted state; and the enabling step comprises the step of decrypting the encrypted software program.
126. The method of claim 120 wherein the enabling step comprises the step of displaying an icon which identifies the software program.
127. A computer program product, comprising:
a computer usable medium having computer readable program code means embodied therein for causing a computer to execute a system for automatic sales of software programs, the computer readable program code means in the computer program product comprising:
means for accessing a software program within a computer database and for maintaining the software program in a locked state in order to prevent unauthorized duplication of the software program, the accessing and maintaining means comprising:
an image file having an internal configuration of a specially formatted disk with the computer database stored therein; and an image driver configured to selectively access the-software program within the computer database in the image file;
receive means for causing the computer to receive a request to purchase the software program;
unlocking means for causing the computer to unlock a copy of the software program in response to the request to purchase the software program; and means for causing the computer to distribute the unlocked copy.
a computer usable medium having computer readable program code means embodied therein for causing a computer to execute a system for automatic sales of software programs, the computer readable program code means in the computer program product comprising:
means for accessing a software program within a computer database and for maintaining the software program in a locked state in order to prevent unauthorized duplication of the software program, the accessing and maintaining means comprising:
an image file having an internal configuration of a specially formatted disk with the computer database stored therein; and an image driver configured to selectively access the-software program within the computer database in the image file;
receive means for causing the computer to receive a request to purchase the software program;
unlocking means for causing the computer to unlock a copy of the software program in response to the request to purchase the software program; and means for causing the computer to distribute the unlocked copy.
128. The computer program product of claim 127 wherein the computer readable program code means further comprises recording means for causing the computer to record how many copies of the software program have been distributed in response to the requests to purchase the software program.
129. A computer-based system for automatic sales of software programs, comprising:
means for accessing a software program within a computer database and for maintaining the software program in an undivided locked state in order to prevent unauthorized duplication of the software program;
receive means for receiving a request to purchase the software program;
unlocking means for unlocking a copy of the software program in response to the request to purchase the software program;
means for electronically distributing the unlocked copy to a memory area of any digital computer operatively accessing the system through a telecommunications line; and recording means for recording how many copies of the software program have been distributed in response to the requests to purchase the software program.
means for accessing a software program within a computer database and for maintaining the software program in an undivided locked state in order to prevent unauthorized duplication of the software program;
receive means for receiving a request to purchase the software program;
unlocking means for unlocking a copy of the software program in response to the request to purchase the software program;
means for electronically distributing the unlocked copy to a memory area of any digital computer operatively accessing the system through a telecommunications line; and recording means for recording how many copies of the software program have been distributed in response to the requests to purchase the software program.
130. A computerized on-line method for demonstrating a software program to a potential purchaser of the program on a user-selected computer, the user-selected computer being any computer on which the software program may be used if the software program is purchased by the user, the method comprising the steps executed by a computer of:
receiving from an electronically accessible system a software program to be demonstrated on the user-selected selected computer;
maintaining the software program in a locked state in order to prevent unauthorized duplication of the software program; and enabling the software program for execution on the user-selected computer upon selection by a user, without the need for any hardware components and circuitry in addition to the user-selected computer, allowing the user to subsequently sample the software program, maintaining the software program in the locked state during the sampling of the software program in order to prevent unauthorized duplication of the software program, and selectively disabling the sampling of the software program;
wherein the maintaining step includes the step of decrypting only selected portions of the software program when the selected portions are needed during the sampling of the software program.
receiving from an electronically accessible system a software program to be demonstrated on the user-selected selected computer;
maintaining the software program in a locked state in order to prevent unauthorized duplication of the software program; and enabling the software program for execution on the user-selected computer upon selection by a user, without the need for any hardware components and circuitry in addition to the user-selected computer, allowing the user to subsequently sample the software program, maintaining the software program in the locked state during the sampling of the software program in order to prevent unauthorized duplication of the software program, and selectively disabling the sampling of the software program;
wherein the maintaining step includes the step of decrypting only selected portions of the software program when the selected portions are needed during the sampling of the software program.
131. An on-line system for demonstrating a software program to a potential purchaser of the software program, comprising:
receive means for receiving from an electronically accessible system the software program to be demonstrated;
means for maintaining the software program in a locked state in order to prevent unauthorized duplication of the software program; and sample means for enabling the software program for execution upon selection by a user, for allowing the user to subsequently sample the software program, for maintaining the software program in the locked state during the sampling of the software program in order to prevent unauthorized duplication of the software program, and for selectively disabling the sampling of the software program;
wherein the sample means further comprises means for detecting if the software program is being copied during the sampling of the software program and for disabling the software program in response to the detecting.
receive means for receiving from an electronically accessible system the software program to be demonstrated;
means for maintaining the software program in a locked state in order to prevent unauthorized duplication of the software program; and sample means for enabling the software program for execution upon selection by a user, for allowing the user to subsequently sample the software program, for maintaining the software program in the locked state during the sampling of the software program in order to prevent unauthorized duplication of the software program, and for selectively disabling the sampling of the software program;
wherein the sample means further comprises means for detecting if the software program is being copied during the sampling of the software program and for disabling the software program in response to the detecting.
132. A computerized method for demonstrating a software program on a user-selected computer to a potential purchaser of the software program, wherein the software program is provided to the user-selected computer in an encrypted format and in an undivided locked state, the computerized method comprising the steps, executed by the user-selected computer, of:
providing a self-launching software demonstration system attached to the software program for demonstrating the software program during a predetermined trial usage period;
maintaining the software program in the undivided locked state in order to prevent unauthorized duplication of the software program;
launching the self-launching software demonstration system on the user-selected computer when a user selects the software program, comprising the steps of:
enabling the software program for execution upon selection by the user;
allowing the user to subsequently sample the software program during the predetermined trial usage period;
maintaining the software program in the locked state during the sampling of the software program in order to prevent unauthorized duplication of the software program; and selectively disabling the sampling of the software program; and enabling, on the user-selected computer, permanent use of the software program if the user subsequently purchases the software program.
providing a self-launching software demonstration system attached to the software program for demonstrating the software program during a predetermined trial usage period;
maintaining the software program in the undivided locked state in order to prevent unauthorized duplication of the software program;
launching the self-launching software demonstration system on the user-selected computer when a user selects the software program, comprising the steps of:
enabling the software program for execution upon selection by the user;
allowing the user to subsequently sample the software program during the predetermined trial usage period;
maintaining the software program in the locked state during the sampling of the software program in order to prevent unauthorized duplication of the software program; and selectively disabling the sampling of the software program; and enabling, on the user-selected computer, permanent use of the software program if the user subsequently purchases the software program.
133. A computer system for distributing a software program to a purchaser of the program for use on the computer system, the computer system comprising:
means for controlling, on the computer system, distribution of a software program;
means for maintaining the software program in an undivided locked state in order to prevent unauthorized copying of the software program, wherein the software program is stored in an encrypted format and is attached to the controlling means; and the controlling means including activation means for launching the controlling means on the computer system when a user selects the software program, the activation means comprising means for unlocking the software program, for permanently detaching at least one copy of the software program from the controlling means, and for loading the detached software program into a computer-readable medium in the computer system in response to a request to purchase the software-program.
means for controlling, on the computer system, distribution of a software program;
means for maintaining the software program in an undivided locked state in order to prevent unauthorized copying of the software program, wherein the software program is stored in an encrypted format and is attached to the controlling means; and the controlling means including activation means for launching the controlling means on the computer system when a user selects the software program, the activation means comprising means for unlocking the software program, for permanently detaching at least one copy of the software program from the controlling means, and for loading the detached software program into a computer-readable medium in the computer system in response to a request to purchase the software-program.
134. A computer program product for distributing digital information, comprising:
a computer usable medium having computer readable program code means embodied therein for causing a user-selected computer to execute a self-launching digital information distribution system associated with a digital information for distributing the digital information to a purchaser of the program for use on the user-selected computer, the computer readable program code means in the computer program product comprising:
means for causing the user-selected computer to maintain the digital information in an undivided locked state in order to prevent unauthorized copying of the digital information, wherein the digital information is stored in the computer usable medium in an encrypted format and is attached to the self-launching digital information distribution system; and activation means for causing the user-selected computer to launch the self-launching digital information distribution system when a user selects the digital information, the activation means comprising means for causing the user-selected computer to unlock the digital information, to permanently detach at least one copy of the digital information from the self-launching digital information distribution system, and to load the detached digital information in the user-selected computer in response to a request to purchase the digital information.
a computer usable medium having computer readable program code means embodied therein for causing a user-selected computer to execute a self-launching digital information distribution system associated with a digital information for distributing the digital information to a purchaser of the program for use on the user-selected computer, the computer readable program code means in the computer program product comprising:
means for causing the user-selected computer to maintain the digital information in an undivided locked state in order to prevent unauthorized copying of the digital information, wherein the digital information is stored in the computer usable medium in an encrypted format and is attached to the self-launching digital information distribution system; and activation means for causing the user-selected computer to launch the self-launching digital information distribution system when a user selects the digital information, the activation means comprising means for causing the user-selected computer to unlock the digital information, to permanently detach at least one copy of the digital information from the self-launching digital information distribution system, and to load the detached digital information in the user-selected computer in response to a request to purchase the digital information.
135. The computer system of claim 44 wherein the controlling means is stored in the image file with the software program.
136. The computerized method of claim 52 wherein the self-launching software demonstration system is stored in the image file with the software program.
137. The computer program product of claim 60 wherein the self-launching software demonstration system is stored in the image file with the software program.
138. The computer system of claim 61 wherein the controlling means is stored in the image file with the software program.
139. The computerized method of claim 65 wherein the self-launching software distribution system is stored in the image file with the software program.
140. The computer program product of claim 69 wherein the self-launching software distribution system is stored in the image file with the software program.
141. The computer system of claim 70 wherein the controlling means is stored in the image file with the digital information.
142. The computerized method of claim 74 wherein the self-launching software distribution system is stored in the image file with the digital information.
143. The computer program product of claim 78 wherein the self-launching software distribution system is stored in the image file with the digital information.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US48819595A | 1995-06-07 | 1995-06-07 | |
US08/488,195 | 1995-06-07 |
Publications (1)
Publication Number | Publication Date |
---|---|
CA2223409A1 true CA2223409A1 (en) | 1996-12-19 |
Family
ID=23938715
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CA002223409A Abandoned CA2223409A1 (en) | 1995-06-07 | 1996-06-07 | Try before you buy software distribution and marketing system |
Country Status (5)
Country | Link |
---|---|
US (1) | US5907617A (en) |
EP (1) | EP0870381A4 (en) |
AU (1) | AU6269796A (en) |
CA (1) | CA2223409A1 (en) |
WO (1) | WO1996041449A1 (en) |
Families Citing this family (104)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7133846B1 (en) * | 1995-02-13 | 2006-11-07 | Intertrust Technologies Corp. | Digital certificate support system, methods and techniques for secure electronic commerce transaction and rights management |
US6658568B1 (en) * | 1995-02-13 | 2003-12-02 | Intertrust Technologies Corporation | Trusted infrastructure support system, methods and techniques for secure electronic commerce transaction and rights management |
US7770230B2 (en) | 2002-04-22 | 2010-08-03 | Arvato Digital Services Canada, Inc. | System for dynamically encrypting content for secure internet commerce and providing embedded fulfillment software |
US7356847B2 (en) * | 1996-06-28 | 2008-04-08 | Protexis, Inc. | System for dynamically encrypting content for secure internet commerce and providing embedded fulfillment software |
US7010697B2 (en) * | 1996-06-28 | 2006-03-07 | Protexis, Inc. | System for dynamically encrypting information for secure internet commerce and providing embedded fulfillment software |
JP3755204B2 (en) * | 1996-09-20 | 2006-03-15 | カシオ計算機株式会社 | COMMUNICATION DEVICE, COMMUNICATION CONTROL METHOD, AND COMMUNICATION SYSTEM |
JPH10133955A (en) * | 1996-10-29 | 1998-05-22 | Matsushita Electric Ind Co Ltd | Portable medium driving device, its method, cooperative device of portable medium and network, and its method |
JPH10164046A (en) * | 1996-11-29 | 1998-06-19 | Canon Inc | Transmission method, reception method, transmitter, receiver, transmission system and medium |
EP0864969A1 (en) * | 1997-03-14 | 1998-09-16 | Alcatel | A method to provide a software package and a provider station and a user station realising the method |
US5907831A (en) | 1997-04-04 | 1999-05-25 | Lotvin; Mikhail | Computer apparatus and methods supporting different categories of users |
US20040230495A1 (en) * | 1997-04-04 | 2004-11-18 | Mikhail Lotvin | Computer systems and methods supporting on-line interaction with content, purchasing, and searching |
US6067416A (en) * | 1997-06-03 | 2000-05-23 | Fraser; Robert E. | Method for dynamically wrapping files for downloading |
US6202056B1 (en) * | 1998-04-03 | 2001-03-13 | Audiosoft, Inc. | Method for computer network operation providing basis for usage fees |
US7051004B2 (en) * | 1998-04-03 | 2006-05-23 | Macrovision Corporation | System and methods providing secure delivery of licenses and content |
US20040117631A1 (en) * | 1998-06-04 | 2004-06-17 | Z4 Technologies, Inc. | Method for digital rights management including user/publisher connectivity interface |
US20040117628A1 (en) * | 1998-06-04 | 2004-06-17 | Z4 Technologies, Inc. | Computer readable storage medium for enhancing license compliance of software/digital content including self-activating/self-authenticating software/digital content |
US20040117663A1 (en) * | 1998-06-04 | 2004-06-17 | Z4 Technologies, Inc. | Method for authentication of digital content used or accessed with secondary devices to reduce unauthorized use or distribution |
US20040225894A1 (en) * | 1998-06-04 | 2004-11-11 | Z4 Technologies, Inc. | Hardware based method for digital rights management including self activating/self authentication software |
US20040107368A1 (en) * | 1998-06-04 | 2004-06-03 | Z4 Technologies, Inc. | Method for digital rights management including self activating/self authentication software |
US20040117664A1 (en) * | 1998-06-04 | 2004-06-17 | Z4 Technologies, Inc. | Apparatus for establishing a connectivity platform for digital rights management |
US20040117644A1 (en) * | 1998-06-04 | 2004-06-17 | Z4 Technologies, Inc. | Method for reducing unauthorized use of software/digital content including self-activating/self-authenticating software/digital content |
US6986063B2 (en) * | 1998-06-04 | 2006-01-10 | Z4 Technologies, Inc. | Method for monitoring software using encryption including digital signatures/certificates |
US6044471A (en) | 1998-06-04 | 2000-03-28 | Z4 Technologies, Inc. | Method and apparatus for securing software to reduce unauthorized use |
AUPP407198A0 (en) | 1998-06-12 | 1998-07-02 | Canon Kabushiki Kaisha | Print enablement in software systems |
AU734981B2 (en) * | 1998-06-12 | 2001-06-28 | Canon Kabushiki Kaisha | Print enablement in software systems |
US7617124B1 (en) | 1998-12-04 | 2009-11-10 | Digital River, Inc. | Apparatus and method for secure downloading of files |
US20030195974A1 (en) | 1998-12-04 | 2003-10-16 | Ronning Joel A. | Apparatus and method for scheduling of search for updates or downloads of a file |
US7058597B1 (en) | 1998-12-04 | 2006-06-06 | Digital River, Inc. | Apparatus and method for adaptive fraud screening for electronic commerce transactions |
JP4132334B2 (en) * | 1998-12-28 | 2008-08-13 | 株式会社日立製作所 | Method for preventing unauthorized use of digital content, system for implementing the method, and medium recording the processing program |
FR2789780B1 (en) * | 1999-02-17 | 2002-02-01 | Netquartz | METHOD FOR CREATING A LINK BETWEEN AN EDITOR AND USERS |
AU4230300A (en) * | 1999-04-12 | 2000-11-14 | Reciprocal, Inc. | System and method for data rights management |
US6578014B1 (en) * | 1999-04-14 | 2003-06-10 | Thomas Murcko, Jr. | Method and apparatus for post-transaction pricing system |
US7360252B1 (en) | 1999-04-30 | 2008-04-15 | Macrovision Corporation | Method and apparatus for secure distribution of software |
US6966002B1 (en) | 1999-04-30 | 2005-11-15 | Trymedia Systems, Inc. | Methods and apparatus for secure distribution of software |
US8050964B2 (en) * | 1999-05-06 | 2011-11-01 | Etagz, Inc. | Computer-readable medium product label apparatus and method |
US7096193B1 (en) | 1999-05-21 | 2006-08-22 | Servicemagic, Inc. | Facilitating commerce among consumers and service providers by matching ready-to-act consumers and pre-qualified service providers |
US20050251686A1 (en) * | 1999-06-09 | 2005-11-10 | Andres Torrubia-Saez | Methods and apparatus for secure distribution of software |
US7885899B1 (en) * | 2000-02-08 | 2011-02-08 | Ipass Inc. | System and method for secure network purchasing |
CN1347537A (en) * | 1999-07-30 | 2002-05-01 | 恩里克·戴维·桑乔 | System and method for secure network purchasing |
US7366702B2 (en) | 1999-07-30 | 2008-04-29 | Ipass Inc. | System and method for secure network purchasing |
AU7378100A (en) * | 1999-09-13 | 2001-04-17 | Videosdotcom, Inc. | Systems and methods for controlling internet-based distribution of video and other data |
US7917397B1 (en) | 1999-10-14 | 2011-03-29 | Jarbridge, Inc. | Merging private images for gifting |
US6903756B1 (en) * | 1999-10-14 | 2005-06-07 | Jarbridge, Inc. | Merged images viewed via a virtual storage closet |
US7418407B2 (en) | 1999-10-14 | 2008-08-26 | Jarbridge, Inc. | Method for electronic gifting using merging images |
AU1244301A (en) * | 1999-10-27 | 2001-05-08 | Firstlook.Com | System and method for providing a preview marketing network |
AU1463901A (en) | 1999-11-16 | 2001-05-30 | Regency Ventures Ltd, Charted Corporation Services | A method and system for configurating products |
US7127415B1 (en) | 1999-11-16 | 2006-10-24 | Regency Ventures Ltd. | Method and system for acquiring branded promotional products |
US6941286B1 (en) | 1999-12-29 | 2005-09-06 | Pitney Bowes Inc. | Method and apparatus for providing refunds in a postage metering system |
US7647278B1 (en) | 1999-12-29 | 2010-01-12 | Pitney Bowes Inc. | Method for facilitating a transaction between a merchant and a buyer |
AU2445101A (en) * | 1999-12-29 | 2001-07-09 | Pitney-Bowes Inc. | Selling a digital content product in an online transaction |
US7318047B1 (en) | 1999-12-29 | 2008-01-08 | Pitney Bowes Inc. | Method and apparatus for providing electronic refunds in an online payment system |
FR2803962A1 (en) * | 2000-01-17 | 2001-07-20 | Vaillant Francois Xavi Testard | Internet commercial electronic music distribution system having central area multimedia broadcasts and user listening/sampling sections and ordering purchase selected pieces. |
US20070271191A1 (en) * | 2000-03-09 | 2007-11-22 | Andres Torrubia-Saez | Method and apparatus for secure distribution of software |
US8635160B2 (en) * | 2000-03-14 | 2014-01-21 | Sony Corporation | Information providing apparatus and method, information processing apparatus and method, program storage medium, program, and information providing system |
EP1134643A3 (en) * | 2000-03-14 | 2007-01-17 | Sony Corporation | Information providing apparatus and method, information processing apparatus and method, program storage medium, program, and information providing system |
JP3281920B2 (en) * | 2000-03-14 | 2002-05-13 | 東北大学長 | Method for producing allylfuran compound |
EP1235510A2 (en) * | 2000-03-23 | 2002-09-04 | Koninklijke Philips Electronics N.V. | Remote diagnostics for a medical imaging system |
US20020049717A1 (en) * | 2000-05-10 | 2002-04-25 | Routtenberg Michael D. | Digital content distribution system and method |
US7729943B1 (en) * | 2000-05-31 | 2010-06-01 | Leglise Claude M | Remotely managing and controlling a consumer appliance |
US7076445B1 (en) * | 2000-06-20 | 2006-07-11 | Cartwright Shawn D | System and methods for obtaining advantages and transacting the same in a computer gaming environment |
US6941353B1 (en) * | 2000-06-29 | 2005-09-06 | Auran Holdings Pty Ltd | E-commerce system and method relating to program objects |
US7076467B1 (en) * | 2000-08-04 | 2006-07-11 | Sony Computer Entertainment America Inc. | Network-based method and system for transmitting digital data to a client computer and charging only for data that is used by the client computer user |
JP2002091452A (en) * | 2000-09-11 | 2002-03-27 | Nec Corp | System for distributing data and method for the same |
US7237123B2 (en) * | 2000-09-22 | 2007-06-26 | Ecd Systems, Inc. | Systems and methods for preventing unauthorized use of digital content |
US6866587B1 (en) | 2000-09-25 | 2005-03-15 | Auran Holdings Pty Ltd. | Wide area real-time software environment |
JP2002132614A (en) * | 2000-10-18 | 2002-05-10 | Nec Corp | Data distributing system |
US6907530B2 (en) * | 2001-01-19 | 2005-06-14 | V-One Corporation | Secure internet applications with mobile code |
WO2002057904A1 (en) * | 2001-01-19 | 2002-07-25 | Fujitsu Limited | Controller having download function |
CA2446447A1 (en) * | 2001-05-07 | 2002-11-14 | John Frederick King | Modem function and usage of a personal digital assistant in wireless mode |
CA2446584A1 (en) * | 2001-05-09 | 2002-11-14 | Ecd Systems, Inc. | Systems and methods for the prevention of unauthorized use and manipulation of digital content |
FR2810129A1 (en) * | 2001-07-04 | 2001-12-14 | Netquartz | Editing programme/user digital processor/file disc link having information two part divided part server sent part user sent with information functional links server/user established. |
US7421411B2 (en) * | 2001-07-06 | 2008-09-02 | Nokia Corporation | Digital rights management in a mobile communications environment |
US20030046189A1 (en) * | 2001-09-05 | 2003-03-06 | Takao Asayama | System and method for a server to enable and disable client computer features |
US20030135754A1 (en) * | 2002-01-11 | 2003-07-17 | Chaucer Chiu | Database expanding system and method |
US8216071B2 (en) * | 2002-03-20 | 2012-07-10 | Intel Corporation | Method and apparatus for software delivery and management |
US20040254890A1 (en) * | 2002-05-24 | 2004-12-16 | Sancho Enrique David | System method and apparatus for preventing fraudulent transactions |
US20040025033A1 (en) * | 2002-08-02 | 2004-02-05 | Todd Luke B. | System and method for preventing unauthorized installation, use and reproduction of software |
US20070124602A1 (en) * | 2003-06-17 | 2007-05-31 | Stephanie Wald | Multimedia storage and access protocol |
CN1604103A (en) * | 2003-09-30 | 2005-04-06 | 国际商业机器公司 | Method for automatic creation and configuration of license models and policies |
US20060070036A1 (en) * | 2004-09-30 | 2006-03-30 | International Business Machines Corporation | Adapting the demonstration of a program execution without modifying the program code by providing application hooks in the program to display user selected images |
US20060161968A1 (en) * | 2004-12-21 | 2006-07-20 | Nintendo Co., Ltd. | Method and apparatus for secure delivery and evaluation of prototype software over a network |
US20060184381A1 (en) * | 2005-01-27 | 2006-08-17 | Servicemagic, Inc. | Computer-implemented method and system for matching a consumer to a home service provider |
US20060271491A1 (en) * | 2005-05-26 | 2006-11-30 | International Business Machines Corporation | Apparatus and method for a software catalog having proxy entries |
US7996255B1 (en) | 2005-09-29 | 2011-08-09 | The Mathworks, Inc. | System and method for providing sales leads based on-demand software trial usage |
US20070101131A1 (en) * | 2005-11-01 | 2007-05-03 | Microsoft Corporation | Trusted store tamper detection |
US8046755B2 (en) * | 2005-12-30 | 2011-10-25 | Sap Ag | Deploying software based on a calculated deployment risk level |
GB0600567D0 (en) * | 2006-01-12 | 2006-02-22 | Mackay Neil L | Releasable cover for climbing hanger device |
US20070245377A1 (en) * | 2006-04-13 | 2007-10-18 | Concert Technology Corporation | Central system providing previews to a portable media player |
US20070245376A1 (en) * | 2006-04-13 | 2007-10-18 | Concert Technology Corporation | Portable media player enabled to obtain previews of media content |
US8316081B2 (en) * | 2006-04-13 | 2012-11-20 | Domingo Enterprises, Llc | Portable media player enabled to obtain previews of a user's media collection |
CA2607698C (en) * | 2006-10-24 | 2017-06-27 | Protexis Inc. | Open, neutral electronic distribution system for digital content providing distribution channel support to publishers and retailers and abstract fulfillment for publishers |
US20110125608A1 (en) * | 2006-10-24 | 2011-05-26 | Hirsch Karl F | Open, neutral electronic distribution system for digital content providing distribution channel support to publishers and retailers and abstract fulfillment for publishers |
US8212805B1 (en) | 2007-01-05 | 2012-07-03 | Kenneth Banschick | System and method for parametric display of modular aesthetic designs |
US9374379B1 (en) | 2007-06-26 | 2016-06-21 | Aol Inc. | Application unlock |
KR101187178B1 (en) | 2007-09-12 | 2012-09-28 | 소니 픽쳐스 엔터테인먼트, 인크. | Open market content distribution |
KR20090043315A (en) * | 2007-10-29 | 2009-05-06 | 두고테크 주식회사 | The marketing service method using the product sample |
US8433798B2 (en) * | 2009-06-16 | 2013-04-30 | Microsoft Corporation | Altering software behavior based on internet connectivity |
US8402555B2 (en) | 2010-03-21 | 2013-03-19 | William Grecia | Personalized digital media access system (PDMAS) |
US20100185868A1 (en) * | 2010-03-21 | 2010-07-22 | William Grecia | Personilized digital media access system |
US20120095877A1 (en) * | 2010-10-19 | 2012-04-19 | Apple, Inc. | Application usage policy enforcement |
US20130311257A1 (en) * | 2012-05-18 | 2013-11-21 | Stephen George Svajian | Product trial use transaction |
EP2906278B1 (en) | 2012-10-12 | 2019-01-30 | Inova Labs, Inc. | Systems for the delivery of oxygen enriched gas |
CN105247482B (en) * | 2013-06-28 | 2019-10-22 | 三星电子株式会社 | Update the method and apparatus of application |
US11763610B2 (en) * | 2018-09-13 | 2023-09-19 | Milwaukee Electric Tool Corporation | Anti-theft systems and devices for battery-powered power tools |
Family Cites Families (69)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3990710A (en) * | 1968-06-24 | 1976-11-09 | Hughes Robert M | Coin-operated recording machine |
US3798605A (en) * | 1971-06-30 | 1974-03-19 | Ibm | Centralized verification system |
US4200770A (en) * | 1977-09-06 | 1980-04-29 | Stanford University | Cryptographic apparatus and method |
US4218582A (en) * | 1977-10-06 | 1980-08-19 | The Board Of Trustees Of The Leland Stanford Junior University | Public key cryptographic apparatus and method |
US4405829A (en) * | 1977-12-14 | 1983-09-20 | Massachusetts Institute Of Technology | Cryptographic communications system and method |
US4424414A (en) * | 1978-05-01 | 1984-01-03 | Board Of Trustees Of The Leland Stanford Junior University | Exponentiation cryptographic apparatus and method |
US4465901A (en) * | 1979-06-04 | 1984-08-14 | Best Robert M | Crypto microprocessor that executes enciphered programs |
US4264782A (en) * | 1979-06-29 | 1981-04-28 | International Business Machines Corporation | Method and apparatus for transaction and identity verification |
JPS57127249A (en) * | 1980-12-29 | 1982-08-07 | Fujitsu Ltd | Security controlling system |
US4446519A (en) * | 1981-05-26 | 1984-05-01 | Corban International, Ltd. | Method and apparatus for providing security for computer software |
US4490810A (en) * | 1982-02-16 | 1984-12-25 | Hon David C | Automated instruction, game and data retrieval system |
US4458315A (en) * | 1982-02-25 | 1984-07-03 | Penta, Inc. | Apparatus and method for preventing unauthorized use of computer programs |
US4649510A (en) * | 1982-04-30 | 1987-03-10 | Schmidt Walter E | Methods and apparatus for the protection and control of computer programs |
US4567512A (en) * | 1982-08-19 | 1986-01-28 | World Video Library, Inc. | Recorded program communication system |
US4528643A (en) * | 1983-01-10 | 1985-07-09 | Fpdc, Inc. | System for reproducing information in material objects at a point of sale location |
US4672554A (en) * | 1983-05-19 | 1987-06-09 | Brother Kogyo Kabushiki Kaisha | Software vending instrument |
US4674055A (en) * | 1983-06-09 | 1987-06-16 | Brother Kogyo Kabushiki Kaisha | Software vending system |
US4658093A (en) * | 1983-07-11 | 1987-04-14 | Hellman Martin E | Software distribution system |
US4590557A (en) * | 1983-09-12 | 1986-05-20 | Pitney Bowes Inc. | Method and apparatus for controlling software configurations in data processing systems |
US5103392A (en) * | 1983-10-05 | 1992-04-07 | Fujitsu Limited | System for storing history of use of programs including user credit data and having access by the proprietor |
JPH0695302B2 (en) * | 1983-10-05 | 1994-11-24 | 亮一 森 | Software management method |
US4558413A (en) * | 1983-11-21 | 1985-12-10 | Xerox Corporation | Software version management system |
US4740890A (en) * | 1983-12-22 | 1988-04-26 | Software Concepts, Inc. | Software protection system with trial period usage code and unlimited use unlocking code both recorded on program storage media |
JPS60245097A (en) * | 1984-05-18 | 1985-12-04 | ブラザー工業株式会社 | Software vending machine |
US4780905A (en) * | 1984-11-26 | 1988-10-25 | Nightwatch, Inc. | Computer data encryption system |
US4888798A (en) * | 1985-04-19 | 1989-12-19 | Oms, Inc. | Modular software security |
US4685055A (en) * | 1985-07-01 | 1987-08-04 | Thomas Richard B | Method and system for controlling use of protected software |
JPH063631B2 (en) * | 1985-11-12 | 1994-01-12 | ブラザー工業株式会社 | Information output device management device |
US4864516A (en) * | 1986-03-10 | 1989-09-05 | International Business Machines Corporation | Method for implementing an on-line presentation in an information processing system |
US5014234A (en) * | 1986-08-25 | 1991-05-07 | Ncr Corporation | System with software usage timer and counter for allowing limited use but preventing continued unauthorized use of protected software |
US5010571A (en) * | 1986-09-10 | 1991-04-23 | Titan Linkabit Corporation | Metering retrieval of encrypted data stored in customer data retrieval terminal |
US4827508A (en) * | 1986-10-14 | 1989-05-02 | Personal Library Software, Inc. | Database usage metering and protection system and method |
US5047928A (en) * | 1986-10-24 | 1991-09-10 | Wiedemer John D | Billing system for computer software |
US5109413A (en) * | 1986-11-05 | 1992-04-28 | International Business Machines Corporation | Manipulating rights-to-execute in connection with a software copy protection mechanism |
US4796220A (en) * | 1986-12-15 | 1989-01-03 | Pride Software Development Corp. | Method of controlling the copying of software |
US4949257A (en) * | 1987-04-28 | 1990-08-14 | Zvi Orbach | Automated merchandising system for computer software |
US4999806A (en) * | 1987-09-04 | 1991-03-12 | Fred Chernow | Software distribution system |
US5016009A (en) * | 1989-01-13 | 1991-05-14 | Stac, Inc. | Data compression apparatus and method |
US5199066A (en) * | 1989-04-18 | 1993-03-30 | Special Effects Software, Inc. | Method and apparatus for protecting software |
CA2053261A1 (en) * | 1989-04-28 | 1990-10-29 | Gary D. Hornbuckle | Method and apparatus for remotely controlling and monitoring the use of computer software |
US5006849A (en) * | 1989-07-26 | 1991-04-09 | Astro, Inc. | Apparatus and method for effecting data compression |
US5166886A (en) * | 1989-07-31 | 1992-11-24 | Molnar Charles E | System to demonstrate and sell computer programs |
JPH0383132A (en) * | 1989-08-28 | 1991-04-09 | Fujitsu Ltd | Software protection control system |
US5241671C1 (en) * | 1989-10-26 | 2002-07-02 | Encyclopaedia Britannica Educa | Multimedia search system using a plurality of entry path means which indicate interrelatedness of information |
US5267171A (en) * | 1990-03-29 | 1993-11-30 | Brother Kogyo Kabushiki Kaisha | Computer software vending machine |
US5355302A (en) * | 1990-06-15 | 1994-10-11 | Arachnid, Inc. | System for managing a plurality of computer jukeboxes |
US5237157A (en) * | 1990-09-13 | 1993-08-17 | Intouch Group, Inc. | Kiosk apparatus and method for point of preview and for compilation of market data |
US5103476A (en) * | 1990-11-07 | 1992-04-07 | Waite David P | Secure system for activating personal computer software at remote locations |
US5222134A (en) * | 1990-11-07 | 1993-06-22 | Tau Systems Corporation | Secure system for activating personal computer software at remote locations |
US5515538A (en) * | 1992-05-29 | 1996-05-07 | Sun Microsystems, Inc. | Apparatus and method for interrupt handling in a multi-threaded operating system kernel |
US5293422A (en) * | 1992-09-23 | 1994-03-08 | Dynatek, Inc. | Usage control system for computer software |
US5327563A (en) * | 1992-11-13 | 1994-07-05 | Hewlett-Packard | Method for locking software files to a specific storage device |
US5341429A (en) * | 1992-12-04 | 1994-08-23 | Testdrive Corporation | Transformation of ephemeral material |
US5509070A (en) * | 1992-12-15 | 1996-04-16 | Softlock Services Inc. | Method for encouraging purchase of executable and non-executable software |
US5269698A (en) * | 1993-01-26 | 1993-12-14 | Silicon Graphics, Inc. | Retaining and release mechanism for computer storage devices including a pawl latch assembly |
US5530865A (en) * | 1993-03-03 | 1996-06-25 | Apple Computer, Inc. | Method and apparatus for improved application program switching on a computer-controlled display system |
US5365587A (en) * | 1993-03-11 | 1994-11-15 | International Business Machines Corporation | Self modifying access code for altering capabilities |
US5625690A (en) * | 1993-11-15 | 1997-04-29 | Lucent Technologies Inc. | Software pay per use system |
US5495411A (en) * | 1993-12-22 | 1996-02-27 | Ananda; Mohan | Secure software rental system using continuous asynchronous password verification |
US5666411A (en) * | 1994-01-13 | 1997-09-09 | Mccarty; Johnnie C. | System for computer software protection |
US5487143A (en) * | 1994-04-06 | 1996-01-23 | Altera Corporation | Computer user interface having tiled and overlapped window areas |
US5563946A (en) * | 1994-04-25 | 1996-10-08 | International Business Machines Corporation | Method and apparatus for enabling trial period use of software products: method and apparatus for passing encrypted files between data processing systems |
US5689560A (en) * | 1994-04-25 | 1997-11-18 | International Business Machines Corporation | Method and apparatus for enabling trial period use of software products: method and apparatus for allowing a try-and-buy user interaction |
US5564038A (en) * | 1994-05-20 | 1996-10-08 | International Business Machines Corporation | Method and apparatus for providing a trial period for a software license product using a date stamp and designated test period |
US5579479A (en) * | 1994-10-03 | 1996-11-26 | Plum Hall Inc. | Computer software licensing authentication method and apparatus |
US5526485A (en) * | 1994-10-13 | 1996-06-11 | Microsoft Corporation | Just-in-time debugging system and methods under the windows 3.0 and windows 3.1 operating systems |
US5715403A (en) * | 1994-11-23 | 1998-02-03 | Xerox Corporation | System for controlling the distribution and use of digital works having attached usage rights where the usage rights are defined by a usage rights grammar |
US5675645A (en) * | 1995-04-18 | 1997-10-07 | Ricoh Company, Ltd. | Method and apparatus for securing executable programs against copying |
US5654905A (en) * | 1995-09-15 | 1997-08-05 | Ast Research, Inc. | System for tracking computer usage time |
-
1996
- 1996-06-07 EP EP96921480A patent/EP0870381A4/en not_active Withdrawn
- 1996-06-07 CA CA002223409A patent/CA2223409A1/en not_active Abandoned
- 1996-06-07 WO PCT/US1996/009916 patent/WO1996041449A1/en not_active Application Discontinuation
- 1996-06-07 AU AU62697/96A patent/AU6269796A/en not_active Abandoned
-
1997
- 1997-07-14 US US08/892,306 patent/US5907617A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0870381A4 (en) | 1999-09-29 |
EP0870381A1 (en) | 1998-10-14 |
US5907617A (en) | 1999-05-25 |
AU6269796A (en) | 1996-12-30 |
WO1996041449A1 (en) | 1996-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5907617A (en) | Try before you buy software distribution and marketing system | |
US5883954A (en) | Self-launching encrypted try before you buy software distribution system | |
US5870543A (en) | System for preventing unauthorized copying of active software | |
US5883955A (en) | On-line try before you buy software distribution system | |
US5903647A (en) | Self-launching encrypted digital information distribution system | |
US5887060A (en) | Central database system for automatic software program sales | |
US5291598A (en) | Method and system for decentralized manufacture of copy-controlled software | |
JP3503774B2 (en) | Method and apparatus for securing access to a file | |
JP3503773B2 (en) | Method and apparatus for securing access to a file | |
JP3914430B2 (en) | Method and apparatus for enabling distribution of software objects | |
KR100200444B1 (en) | Method of distribute software object | |
KR100200443B1 (en) | Method of distribution software object | |
US6868495B1 (en) | One-time pad Encryption key Distribution | |
US6044469A (en) | Software publisher or distributor configurable software security mechanism | |
US6854061B2 (en) | Installing and controlling trial software | |
US20060005021A1 (en) | Methods and apparatus for secure distribution of software | |
US7360252B1 (en) | Method and apparatus for secure distribution of software | |
JPH02135938A (en) | Information communication system | |
JP2002543511A (en) | Safe and secure software distribution method, software package, and computer system | |
WO2001008345A1 (en) | A computer system and process for accessing an encrypted and self-decrypting digital information product |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FZDE | Dead |