`Bourdev
`
`(10) Patent No.:
`(45) Date of Patent:
`
`US 7,818,741 B1
`Oct. 19, 2010
`
`US007818741B1
`
`................. .. 705/59
`717/170
`.... .. 713/190
`.... .. 713/164
`.. 429/144
`~
`705/50
`5/2003 Cooper 6161.
`2/2004 Todd ............... ..
`713/189
`2/2005 Gaetano 6:61.
`.
`705/59
`5/2006 Yellaietal.
`................... 705/59
`
`
`
`6/2001 Floydet 61.
`6,243,692 131*
`12/2001 Horstmann
`6,334,214 131*
`2/2005 Cooper etal.
`6,854,061 132*
`6/2002 Larose
`2002/0083318 A1*
`2002/0197528 A1* 12/2002 Zunke ......... ..
`
`2003/0088515 A1*
`2004/0025033 A1*
`2005/0038752 A1*
`2006/0106728 A1*
`* cited by examiner
`P '
`E
`' —J hnCh '
`nmary xammer
`0
`avls
`(74) Attorney, Agent, or Firm—Schwegman Lundberg &
`Woessnera PA.
`
`(57)
`
`ABSTRACT
`
`A method and a system is provided of monitoring installation
`of a software program on at least one user computer. The
`software program may be subject to a license agreement that
`specifies a number of permitted installations of the software
`program. The method may comprising receiving an installa-
`tion identifier identifying a useable installation of the soft-
`ware program on the at least one user computer and deter-
`mining if the installation identifier is one of a set of
`installation identifiers. The set of installation identifiers may
`comprise at least one monitored installation identifier and the
`set may. be created or. generated when a number of user
`Installations exceeds a limit of1nstallat1ons (e.g., a number of
`permitted useable installations). When the received installa-
`tion identifier is one of the set
`the method may comprise
`modifyin the set so that the received installation identifieris
`1
`g
`.t
`d.
`t 11 t.
`.d ffi
`no Onger 3‘ mom Ore ms 3‘ a 101“ en‘ en
`
`21 Claims, 12 Drawing Sheets
`
`(54) METHODAND SYSTEM TO MONITOR
`INSTALLATION OFASOFTWARE
`PROGRAM
`
`75
`
`(
`
`)
`
`'
`~
`Inventor. Lubomlr D. Bourdev, San Jose, CA
`(US)
`
`.
`(73) Asslgnea é:°g}*SS)Y5t°m5 I“°°rP°”"°d=San J05‘?
`
`( * ) Notice:
`
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`U.S.C. 154(b) by 1555 days.
`
`(21) Appl. No.: 11/131,166
`
`(22)
`
`Filed:
`
`May 17, 2005
`
`(51)
`
`Int CL
`(200901)
`G06F 9/45
`(52) U.S. Cl.
`.................................................... .. 717/174
`(58) Field of Classification Search ............... .. 717/174,
`717/ 149
`See application file for complete search history.
`
`(56)
`
`References Cited
`US. PATENT DOCUMENTS
`
`----------------------- -- 705/54
`4/1996 Schull
`5a509s070 A *
`9/1998 Smith et 31'
`" 369/2751
`5’815’484 A *
`9/1999 Lochbaum
`717/176
`5953532 A *
`6,009,401 A * 12/1999 Horstmarm ..
`........ 705/1
`6,009,525 A * 12/1999 Horstmarm .... ..
`726/22
`6,027,622 A *
`2/2000 Graser et al.
`. . . . .
`. . . .. 204/426
`6,243,468 B1 *
`6/2001 Pearce et al.
`.............. .. 380/255
`
`
`
`/-L 64
`
`P60
`SERVERSDE
`CLIENTSIDE
`
`
`
`
`
`'"f=’E‘*=L"?9*‘°"
`
`52
`
`T4
`
`|PR20’|6-01271
`IPR2016-01271
`UNIFIED 1019
`UNIFIED 1019
`
`*E::1"r1:$:°::'::*
`(E.G.. SEAT |D = 1)
`
`INCRHIENTNUMER OF
`NSTALLATIDNSISEATS
`FORGIVENLICENSE
`
`PSSIGNNEW
`|N5'TN.LATlONlSEATlD
`(E.G.,INCREM3lT
`INTEGERVALUEOF
`SEAIID)
`
`YES
`
`INSTALLED $13 > K?
`
`70
`NO
`
`ACTIVATEID SENDASSIGNEDSEATI)
`
`TO GLIENTAPPLICATION
`
`
`
`MONITORING
`
`
`
`U.S. Patent
`
`Oct. 19, 2010
`
`Sheet 1 of 12
`
`US 7,818,741 B1
`
`20
`
`Server
`
`Licensing
`
`phone
`
`
`
`Clientcomputer
`
`Efllllfi
`
`13:3 Telephone
`
`
`
`38
`2ICefl
`computer
`
`
`
`Clientcomputer
`
`Client
`
`
`
`U.S. Patent
`
`Oct. 19, 2010
`
`Sheet 2 of 12
`
`US 7,818,741 B1
`
`/—\4o
`
`CLIENT APPLICATION
`
`LICENSE PROTECTED SOFTWARE
`
`INSTALLATION/SEAT ID
`
`LICENSE ID
`
`FIG. 2
`
`SERVER APPLICATION
`
`/‘R 52
`
`COMMUNICATION
`MODULE
`
`INSTALLATION ID
`MONITOR
`
`(PROBATION OBJECT(S))
`
`INSTALLATION
`INITIALIZATION MODULE
`
`DATABASE INTERFACE
`
`FIG. 3
`
`
`
`U.S. Patent
`
`Oct. 19, 2010
`
`Sheet 3 of 12
`
`US 7,818,741 B1
`
`/‘R 60
`
`SERVER-SIDE
`F 64
`
`
`CLIENT-SIDE
`
`
`
`INSTALLATION
`RECEIVE REQUEST FOR
`REQUEST
`
`NEW INSTALLATION
`(E.G., SEAT ID =1)
`
`62
`
`
`
`INCREMENT NUMBER OF
`
`INSTALLATIONSISEATS
`FOR GIVEN LICENSE
`
`
`
`
`
`ASSIGN NEW
`
`lNSTALLATlONISEAT ID
`
`
`(E.G., INCREMENT
`INTEGER VALUE OF
`
`SEAT ID)
`
`
`
` sEAT ID5 74
`
`SEND ASSIGNED SEAT ID
`T0 CLIENT APPLICATION
`
`ACTIVATE" ID
`MONITORING
`
`
`
`FIG. 4
`
`
`
`U.S. Patent
`
`Oct. 19, 2010
`
`Sheet 4 of 12
`
`US 7,818,741 B1
`
`F80
`
`%
`
`/X32
`
`REPORT DUE
`
`NO
`
`YES
`
`COMMUNICATE LICENSE
`ID AND INSTALLATION!
`SEAT ID TO SERVER
`
`RECEIVE SERVER
`COMMUNICATION
`
`PROCESS SERVER
`COMMUNICATION (E.G.,
`UPDATE INSTALLATION!
`
`SEAT ID)
`
`FIG. 5
`
`
`
`U.S. Patent
`
`Oct. 19, 2010
`
`Sheet 5 of 12
`
`US 7,818,741 B1
`
`91
`
`/T‘-90
`
`RECEIVE SEATI
`
`INSTALLATION ID
`
`/-\_92
`
`YES
`NEW INSTALLATION?
`
`
`
`r\1o4
`RECEIVED ID
`
`CORRESPONDS TO
`REF ID?
`
`NO
`
`r*~94
`
`INITIALIZE
`INSTALLATIONISEAT
`
`rxga
`
`108
`
`UPDATE INSTALLATIONI
`SEAT ID
`
`98
`
`
`
`# OF
`|NSTALLAT|ONS>K
`
`*7‘-\1oo
`
`ACTIVATE INSTALLATION
`
`MONITOR
`
`UPDATE SEATI
`INSTALLATION ID
`
`UPDATE RECORD OF
`INSTALLATIONS WITH
`UPDATED INSTALLATIONI
`
`COMMUNICATE SEATI
`INSTALLATION ID TO
`CLIENT
`
`FIG. 6
`
`/’‘\-1 06
`
`(OPTIONALLY)
`
`GENERATE EXCEPTION
`
`NO
`
`
`
`U.S. Patent
`
`Oct. 19, 2010
`
`Sheet 6 of 12
`
`US 7,818,741 B1
`
`[X120
`
`122 MONITORED
`INSTALLATION IDs = IDS
`
`
`
`OF ALL INSTALLATIONS
`
`
`
`INSTALLATION IDs
`
` MONITOR RECEIPT OF
`
`
`
`' ECEIVED ID IN LIS
`
`OF MONITORED IDS?
`
`
`
`
`
`MODIFY SET OF
`MONITORED IDS
`
`124
`
`128
`
`
`
` 1 30
`
`
`
`DECREMENT NUMBER
`
`OF USEABLE
`
`INSTALLATIONS IN LIST
`
`MORE USEABLE
`
`INSTALLATIONS?
`
`
` 134
` (OPTIONALLY)
`GENERATE EXCEPTION
`
`IDENTIFYING REMAINING
`
`
`INSTALLATIONS |D(s)
` FIG. 7
`
`
`
`U.S. Patent
`
`O
`
`1
`
`0102
`
`S
`
`7
`
`US 7,818,741 B1
`
`H/KmmMmm_\~<
`
`_.0
`
`_.Q
`
`8?
`
`w.07.
`
`
`
`
`
`om:..Emz_mo5:zo:<._._<5zE<mmma.n_mmo._._zos_mo.hzwmmzon__mwzmo:M8.".05:oz<wbmw
`
`
`
`
`
`onv
`
`.0.oi./K
`
`
`
`9,mm<m.E<o
`
`om
`
`
`
`xm>mmwZO_._.<0_._mn_<
`
`
`
`\E<m0ON_n_mmsstow
`
`
`
`ZO_._.<O_._nE<._.zm_.._O
`
`D_umzmo:o
`
`n__._.<mw.
`
`
`
`
`
`
`
`
`U.S. Patent
`
`Oct. 19, 2010
`
`Sheet 8 of 12
`
`US 7,818,741 B1
`
`P160
`
`GENERATE RANDOM
`NUMBER
`
`ENCRYPT WITH PUBLIC
`KEY
`
`164
`
`SEND ENCRYPTED
`NUMBER AND SEAT ID
`T0 LICENSING sERvER
`
`RECEIVE RESPONSE
`FROM LICENSING
`
`SERVER
`
`1 66
`
`168
`
`/-\17o
`SERVER CONFIRMS
`N0
`
`RANDOM NUMBER?
`
`
`
`
`
`Yes
`
`172
`
`174
`
`UPDATE SEAT]
`INSTALLATION ID
`
`ID)
`
`NO SEATIINSTALLATION
`ID UPDATE (RETAIN
`PREVIOUS SEAT
`
`FIG. 9
`
`
`
`U.S. Patent
`
`Oct. 19, 2010
`
`Sheet 9 of 12
`
`US 7,818,741 B1
`
`LICENSE AUTHORIZES 3 USEABLE INSTALLATIONS
`
`INITIAL SET UP AFTER INSTALLATION OF TWO CLIENT APPLICATIONS AND PRIOR TO ANY HANDSHAKE
`
`SEAT 3 : NOT USED
`
`SEAT 1 : SEAT ID = A + INTEGER VALUE - SEAT ID = A1
`SEAT 2 : SEAT ID = B + INTEGER VALUE - SEAT ID = B1
`
`0
`0
`0
`
`FIG. 10
`
`AFTER HANDSHAKE BY SEAT 1
`
`SEAT 3 : NOT USED
`
`SEAT1:SEAT|D=A2
`SEAT2:SEAT|D=B1
`
`0
`-
`0
`
`FIG. 11
`
`AFTER HANDSHAKE BY SEAT 2
`
`SEAT 3 2 NOT USED
`
`I
`
`SEAT1:SEAT|D=A2
`SEAT2 : SEAT ID = B2
`
`AFTER INSTALLATION OF SEAT 3
`
`0
`0
`0
`
`SEAT1:SEAT|D=A2
`SEAT2:SEATID=B2
`SEAT3:SEATID=C1
`
`FIG. 12
`
`FIG. 13
`
`
`
`U.S. Patent
`
`Oct. 19, 2010
`
`Sheet 10 of 12
`
`US 7,818,741 B1
`
`
`AFTER INSTALLATION OF SEAT 4
`(NUMBER OF INSTALLED SEATS EXCEEDS NUMBER OF SEATS AUTHORIZED IN LICENSE)
`
`SEAT1:SEATlD=A2
`SEAT2 : SEAT ID = B2
`SEAT3:SEAT|D=C1
`SEAT4 2 SEAT |D= D1
`
`ACTIVATE PROBATION OBJECT: (A2. B2, C1);
`
`FIG. 14
`
`AFTER HANDSHAKE OF SEAT SEAT 3
`(NUMBER OF INSTALLED SEATS EXCEEDS NUMBER OF SEATS AUTHORIZED IN LICENSE)
`
`MODIFIED PROBATION OBJECT: (A2. B2);
`
`SEAT1:SEATID=A2
`SEAT2 2 SEAT ID = B2
`SEAT 3 : SEAT ID = C2
`SEAT 4 Z SEAT ID = D1
`
`FIG. 15
`
`AFTER HANDSHAKE OF SEAT SEAT 3
`(NUMBER OF INSTALLED SEATS EXCEEDS NUMBER OF SEATS AUTHORIZED IN LICENSE)
`
`PROBATION OBJECT REMAINS : (A2, B2);
`
`SEAT1:SEAT|D=A2
`SEAT2 : SEAT ID= B2
`SEAT3 : SEATID=C3
`SEAT4 : SEATID= D1
`
`FIG. 16
`
`AFTER HANDSHAKE OF SEAT SEAT 4
`(NUMBER OF INSTALLED SEATS EXCEEDS NUMBER OF SEATS AUTHORIZED IN LICENSE)
`
`PROBATION OBJECT REMAINS : (A2, B2);
`
`SEAT1:SEAT|D=A2
`SEAT 2 : SEAT ID = B2
`SEAT3:SEATID=C3
`SEAT4 : SEATID= D2
`
`FIG. 17
`
`
`
`U.S. Patent
`
`Oct. 19, 2010
`
`Sheet 11 of 12
`
`US 7,818,741 B1
`
`AFTER HANDSHAKE OF SEAT SEAT 2
`(NUMBER OF INSTALLED SEATS EXCEEDS NUMBER OF SEATS AUTHORIZED IN LICENSE)
`
`MODIFIED PROBATION OBJECT ; (A2)1
`
`SEAT1:SEATID=A2
`SEAT2 : SEAT|D=B3
`SEAT3 : SEAT |D=C3
`SEAT4 : SEAT |D= D2
`
`FIG. 18
`
`
`
`U.S. Patent
`
`Oct. 19, 2010
`
`Sheet 12 of 12
`
`US 7,818,741 B1
`
`200
`
`202\
`
`210
`
`VIDEO
`DISPLAY
`
`224
`
`O8
`
`21 2
`
`
`
`ALPHA-NUMERIC
`INPUT
`DEVICE
`
`214
`
`°URSg:\fi8g'TR°"
`
`21 6
`
`
`
`PROCESSOR
`
`,
`
`.31. “‘-J‘?
`
`V
`
`INSTRUCTIONS
`
`204
`
`‘W
`
`20
`
`STATIC MEMORY
`
`220
`
`NETWORK
`INTERFACE
`DEVICE
`
`
` SIGNAL GENERATION
`
`MACHINE-READABLE
`
`222
`
`2 4
`
`DEVICE
`
`226
`
`FIG. 19
`
`
`
`US 7,818,741 B1
`
`1
`METHOD AND SYSTEM TO MONITOR
`INSTALLATION OF A SOFTWARE
`PROGRAM
`
`TECHNICAL FIELD
`
`The present application relates generally to the technical
`field of monitoring installation of software programs on at
`least one user computer. For example, a software program
`may be subject to a license agreement and the method and
`system may monitor installation and use of the software pro-
`gram to check compliance with the license agreement.
`
`BACKGROUND
`
`10
`
`15
`
`2
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`Embodiments of the present invention are illustrated by
`way ofexample and not limitation in the figures ofthe accom-
`panying drawings, and in which like references indicate the
`same or similar elements.
`
`In the drawings,
`FIG. 1 shows a system, in accordance with an example
`embodiment, to monitor installations of one or more software
`programs on one or more user computers;
`FIG. 2 shows a client application, in accordance with an
`example embodiment, installed on a user computer;
`FIG. 3 shows a server application, in accordance with an
`example embodiment, for monitoring installations of one or
`more software programs on one or more user computers;
`FIG. 4 shows a method, in accordance with an example
`embodiment, of initializing an installation of a software pro-
`gram on a user computer;
`FIG. 5 shows a method, in accordance with an example
`embodiment, that executes on a user computer for communi-
`cating a unique installation or seat identifier to a server appli-
`cation;
`FIG. 6 shows a method, in accordance with an example
`embodiment, of monitoring the installation of one or more
`software programs on a user computer;
`FIG. 7 shows a method, in accordance with an example
`embodiment, of monitoring installation or seat identifiers
`uniquely associated with each installation of the software
`program;
`FIG. 8 shows a schematic diagram of a database storing
`data for monitoring a number of useable installations or
`instances of a software program;
`FIG. 9 shows a method, in accordance with an example
`embodiment, of ensuring that a user computer is communi-
`cating with an authorized licensing server prior to communi-
`cation of its seat identifier;
`FIGS. 10 to 18 show example seat identifiers, a set of
`monitored seat identifiers, and the updating and monitoring
`thereof; and
`FIG. 19 shows a diagrammatic representation of a machine
`in the example form of a computer system for performing any
`one or more of the methodologies discussed herein.
`
`DETAILED DESCRIPTION
`
`20
`
`25
`
`30
`
`Software programs are typically subject to a license agree-
`ment which regulates the use of the software program. For
`example, the license agreement may be a shrink-wrap agree-
`ment allowing only a single installation of the software pro-
`gram. In a business environment, for example, a license for a
`particular software program may authorize the business to
`have multiple installations or instances of the software on
`different computers. In these circumstances, the license may
`specify a maximum number ofpermitted installations or seats
`of the software program at any given time.
`In order to avoid unauthorized use of a software program
`that may be installed on multiple computers, certain technolo-
`gies use some form of a hardware footprint which is estab-
`lished upon installation of the software program. When the
`number of installations exceeds a permitted number of instal-
`lations authorized by the license agreement, an alarm or noti-
`fication may be triggered indicating a breach of the agree-
`ment. In some circumstances the installation software may
`prevent further installations. However, one or more of the
`subsequent installations may replace a previous installation
`and the further installation may thus be a permitted installa-
`tion. In these circumstances, a user may be required to contact
`a customer service facility to authorize a further installation
`(and activation) of the installed software program. Thus, in
`these circumstances, a system purely counting a number of
`reinstalls may render a newly installed software program 45
`inoperable even though the user may not have exceed the
`number of installations specified in a license agreement.
`
`35
`
`40
`
`SUMMARY
`
`According to one example embodiment, there is provided
`a system and a method of monitoring installation of a soft-
`ware program on at least one user computer. The method may
`comprise receiving an installation identifier identifying a use-
`able installation of the software program on the at least one
`user computer and determining if the installation identifier is
`one of a set of installation identifiers. The set of installation
`
`identifiers may comprise at least one monitored installation
`identifier and may be created or provided when a number of
`user installations exceeds a limit ofuseable installations (e.g.,
`a number of permitted number of installations). When the
`installation identifier is one of the set, the method may com-
`prise modifying the set so that the installation identifier is no
`longer a monitored installation identifier.
`Other features will be apparent from the accompanying
`drawings and from the detailed description that follows.
`
`50
`
`55
`
`60
`
`65
`
`A method and system to monitor installation and use ofone
`or more software programs on one or more user computers or
`devices are described. In the following description, for pur-
`poses ofexplanation, numerous specific details are set forth in
`order to provide a thorough understanding ofembodiments of
`the present invention. It will be evident, however, to one
`skilled in the art that the present invention may be practiced
`without these specific details.
`Referring in particular to FIG. 1, reference 20 generally
`indicates a system, in accordance with an example embodi-
`ment, to monitor installation of a computer or software pro-
`gram on one or more user computers. For the purposes of this
`specification, the term “computer” is intended to include any
`device capable of executing software irrespective of the com-
`plexity ofthe software application or the device. Examples of
`such user computers include personal computers 22-28, one
`or more fax machines 30, one or more programmable tele-
`phones 32, one or more mobile or cell phones 34, or the like.
`As mentioned herein, the system 20 may include any elec-
`tronic device capable ofbeing programmed including, but not
`
`
`
`US 7,818,741 B1
`
`3
`limited to, tablet PCs, set top boxes, personal digital assistants
`(PDA), or any other machine capable of executing a set of
`instructions.
`
`The system 20 also includes a server 38 in the exemplary
`form of a licensing server, which is connected to the user
`computers 22-34 via one or more networks 38 which may be
`wired or wireless.As described in more detail below, software
`programs installed on one or more of the user computers
`22-34 periodically communicate installation or seat identifi-
`ers to the licensing server 36 which monitors the number of
`useable installations or seats (which terms are used herein
`interchangeably) of the software program on a user computer
`connectable to the network 38. It should, however, be appre-
`ciated that the user computers 22-34 need not be continuously
`connected to the network 38 and that the network 38 may, in
`one example embodiment, comprise a telephone network.
`As shown in FIG. 2, each user computer 22-34 may include
`a client application 40 which has been installed (e.g. from an
`installation executable) on the user computer. The client
`application 40 may include license protected software 42, an
`installation or seat identifier 44, and a license identifier 46.
`The license identifier 46 may identify a license agreement
`under which one or more installations or seats have been
`
`authorized and wherein each seat may be identified by a
`unique seat identifier. Accordingly, the installation or seat
`identifier 44 may be unique to the particular installation ofthe
`client application 40 on a specific user computer 22-34.
`The licensing server 36 may include a server application 50
`running on the licensing server 36. From a functional view-
`point, the server application 50 may include a communication
`module 52, an installation initialization module 54, an instal-
`lation identifier monitor 56, and a database interface module
`58. The communication module 52 allows the server 36 to
`
`5
`
`10
`
`15
`
`20
`
`25
`
`30
`
`communicate with the client applications 40; the installation
`initialization module 54 allows the server 36 to initialize the
`
`35
`
`license protected software program 42 of the client applica-
`tion 40; the installation identifier monitor allows the server 36
`to monitor installations of the software program on the user
`computers 22-34; and the database interface module 58
`allows the licensing server 36 to access reference data relating
`to the various installations ofthe software program. It is to be
`appreciated that the example modules/components shown in
`the client application 40 and the server application 50 are for
`illustrative purposes only and are used to show exemplary
`functionality of the system 20. They do not necessarily cor-
`respond to independent hardware or software units.
`In one example embodiment, an installable copy of the
`software program may be distributed to a user by providing
`(e.g., via mail, in a retail store, or the like) a physical copy
`(e.g. a DVD or CD installation disk) which a user/licensee
`may then utilize to install one or more instances of the soft-
`ware program 42 on one or more user computers depending
`upon, for example, the terms of a license agreement. In addi-
`tion or instead, an installable copy ofthe software program 42
`may be communicated electronically via a computer network
`38 to the user. In this example scenario, the user or licensee
`may then download the installation copy of the software
`program 42 and install the software on one or more user
`computers depending upon terms of the license agreement.
`FIG. 4 shows a method, according to an example embodi-
`ment, of initializing an installation of a software program on
`a user computer. During installation of the software program
`on one of a user computer 22-34, the installation program
`may generate an installation request 62 which is communi-
`cated from an installation site to a licensing facility. In one
`example embodiment, the installation request is communi-
`cated via the network 38 to the licensing server 36 after an
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`4
`
`installation executable has executed on a user computer
`22-34. It is, however, to be appreciated that the installation
`request 62 may be communicated verbally by a person install-
`ing the software using a telephone system. In one example
`embodiment, the installation request 62 includes the license
`identifier 46 and an initial installation identifier 44 which may
`identify a new installation of the software program. In an
`embodiment, unlike other licensing schemes, the “installa-
`tion request” may be the first handshake. As such, it need not
`necessarily have to happen immediately upon installation. In
`an embodiment, the first handshake may happen minutes, or
`weeks after installation. Thus no interne connection may be
`required to install the software program. As shown at block
`64, in an embodiment, the installation request 62 is received
`at the licensing server 36 whereafter, as shown at block 66, a
`number of installations or seats for a given license identified
`by the license identifier (ID) 46 is then incremented. In an
`example embodiment, the seat identifier 44 may be associated
`with a license identifier 46 provided at the licensing server 3 6.
`In an embodiment, the seat identifier 44 and the license iden-
`tifier 46 can be merged into a single number from which they
`can be uniquely derived at the licensing server.
`An initial installation or seat identifier 44 may be a recog-
`nizable identifier so that the licensing server 36 can recognize
`or identify the installation request 62 as a request for a new
`installation of the software program. Accordingly, as shown
`at block 68, a new installation identifier may be assigned to
`the particular installation of the software program on the user
`computer 22-34. Thereafter, as shown at decision 70, a deter-
`mination may be made whether or not a number of installed
`seats exceeds (or id equal to) a number ofpermitted or autho-
`rized installations or seats (or any system defined limit). The
`limit or number ofpermitted installations may be provided in
`the license agreement. If the number of installed seats does
`not exceed the number of permitted seats, the newly assigned
`seat identifier may be communicated to the user computer
`22-34 (see block 72 and arrow 74). However, ifthe number of
`installed seats exceeds the permitted or allowed number of
`seats in terms of the license agreement, identification mom-
`toring may be activated (see block 76) and the newly assigned
`seat identifier may then be communicated to the user com-
`puter 22-34. In an example embodiment, the identification
`monitor is an object.
`It will be appreciated that a new installation ofthe software
`program does not necessarily constitute a violation of the
`license agreement. For example, the software program may
`be reinstalled on the same user computer following technical
`difiiculties. For example, a defective hard drive on the user
`computer may be replaced resulting in the loss of the original
`installation of the software program. Alternatively, the soft-
`ware program may be uninstalled by the user on a particular
`user computer 22-34 and installed on another user computer
`resulting in an installation request 62 being sent from the
`other user computer. In both these circumstances a violation
`of the software license may not have taken place. Although
`the given example relates to a single installation, it will be
`appreciated that, in terms of the license agreement, multiple
`installations of the software program may be authorized and,
`during the existence of the license, one or more installations
`may be lost (e.g. replacement of a defective hard drive) or
`uninstalled and reinstalled on other user computers.
`In one example embodiment, the client application 40,
`upon receipt ofthe updated seat identifier (see arrow 74) from
`the licensing server 36, updates its installation or seat identi-
`fier 44 (see FIG. 2). Thereafter, when the client application 40
`subsequently communicates with the server application 50, it
`includes the updated installation or seat identifier 44 in its
`
`
`
`US 7,818,741 B1
`
`5
`communication or report that then uniquely identifies the
`installation of the client application 40.
`Referring to FIG. 5, reference 80 generally indicates a
`method, in accordance with an example embodiment, that
`executes on a user computer (e. g., a user computer 22-34) for
`communicating a unique installation or seat identifier to the
`licensing server 36. As shown at decision 82, the client appli-
`cation 40, as an ongoing process, determines when a report or
`communication to the licensing server 36 is due. The report
`may thus periodically communicate the license identifier 46
`and the seat identifier 44 to the licensing server 36 via the
`network 38. It will be appreciated that the frequency or regu-
`larity of such a report may vary from one embodiment to
`another. For example, when the network 38 is the Internet and
`the client computers 22-34 are regularly online, the client
`application 40 may communicate its seat identifier 44 and its
`license identifier 46 each time the client application 40 is open
`for use. It will, however, be appreciated that the client appli-
`cation 40 need not be opened for use by a user to communi-
`cate its installation identifier 44 and license identifier 46 to the
`
`licensing server 36 but may also do so independently of actual
`use or operation of the client application 40. For example,
`each time a user computer 22-34 connects to the Internet, the
`seat identifier 44 and the license identifier 46 may be com-
`municated to the licensing server 36. In an example embodi-
`ment, when the user computer 22-34 irregularly establishes
`communications with the licensing server 36, reports may be
`queued and all queued reports may be communicated when
`possible.
`Returning to decision 82 in FIG. 5, if no reports by the
`client application 40 are due, the method 30 does not com-
`municate the seat identifier 44 or the license identifier 46 to
`
`the licensing server 36 but merely waits until an appropriate
`time duration or period has lapsed. If, however, a report by the
`client application 40 is due, the client application 40 commu-
`nicates its seat identifier 44 and license identifier 46 to the
`
`licensing server 36 (see block 84) or may queue reports.
`Thereafter, as described in more detail below, the licensing
`server 36 may update the seat identifier 44 and, accordingly,
`the method 80 may then receive a communication from the
`licensing server 36 that includes an updated seat identifier 44
`(see block 86). The client application 40 may then process the
`communication from the licensing server 36 by updating its
`seat identifier 44 so that it corresponds to the updated seat
`identifier stored at the licensing server 36 (see block 88).
`In FIG. 6 reference 90 generally indicates a method, in
`accordance with an embodiment of the invention, for moni-
`toring installation of one or more software programs on at
`least one user computer. For example, the method 90 may be
`used to monitor the installation ofthe application program 40
`on any one or more of the user computers 22-34. As shown at
`block 91, the method 90 may receive the seat identifier 44
`from a particular user computer 22-34 that is communicating,
`for example, with the licensing server 36. As shown at deci-
`sion 92, it may then be determined whether or not the request
`received from the user computer 22-34 is a request for a new
`installation or whether the request or communication is a
`periodic report by an already existing installation ofthe client
`application 40. As shown at blocks 94 and 96, the method 90
`may initialize the installation on the user computer 22-34 so
`that it may be operable or useable and communicate an
`updated seat identifier 44 to the client application 40 (see FIG.
`4). Thereafter, as shown at decision 98, if the number of
`installations exceeds the number of permitted installations
`installation monitoring may be performed as shown at block
`100. For example a probation object, as described in more
`detail below, may be created.
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`6
`Returning to decision 92, if the communication does not
`include a request for a new installation, but is a report by the
`client application 40 including its seat identifier 44 and
`license identifier 46, the method 90 then determines whether
`or not the received seat identifier 44 corresponds to a refer-
`ence seat identifier (see decision 104). If the received seat
`identifier does not correspond to the reference seat identifier
`at the licensing server 36, an exception may be generated as
`shown at block 106. It will be appreciated that various differ-
`ent courses of action may result in response to the exception.
`For example, a warning may be communicated to the user
`computer 22-34 to indicate that the seat identifier 44 does not
`correspond with that at the licensing server 3 6 and request the
`user to contact a customer support facility, provide the user
`with an option to purchase more licenses, or any other appro-
`priate action. In addition or instead, an appropriate message
`may be generated at the licensing server facility. As each seat
`identifier 44 is updated after the client application 40 has
`reported to the licensing server 36, an old or different seat
`identifier 44 could indicate to the licensing server 36 that a
`duplicate copy of the software program now exists. For
`example, a first installation ofthe software program may have
`received a unique seat identifier 44 from the licensing server
`36 and, accordingly, the licensing server 36 would have a
`record of this particular unique seat identifier 44 being asso-
`ciated with the particular installation ofthe software program.
`If a user duplicates the installation on another user computer
`22-34, and the duplicate version of the software program
`communicates the old seat identifier 44 to the licensing server
`36, the licensing server 36 may then identify that a duplicate
`copy of the software program exits. In an embodiment, each
`seat has a unique seat identifier 44, and each handshake
`provides a new unique seat identifier 44 to each seat. A copy
`ofthe current unique identifiers 44 ofeach seat may kept at the
`server licensing server 36. Suppose, for example, the current
`seat identifier 44 is C3 (and the licensing server 36 knows
`that) and someone makes a binary copy of the hard drive and
`runs it on another computer. Both installations will have C3 as
`their unique seat identifier 44. The first one of them to hand-
`shake with the licensing server 36 will be permitted to oper-
`ate, but both it and the licensing server 36 will update the seat
`identifier 44 to, for example, C4. If the other seat ever hand-
`shakes with the licensing server 36 and provides its (now
`obsolete seat identifier 44) C3, the licensing server 36 identify
`that a duplication my exist.
`Returning to decision 104, if the received seat identifier 44
`corresponds to the reference seat identifier, the licensing
`server 36 may then confirm that it is communicating with the
`same client application 40 that it previously communicated
`with and updated its seat identifier 44. The method 90 may
`then update the seat identifier once again (see block 108) and
`also update its record of reference seat identifiers as shown at
`block 110. Thereafter, the updated seat identifier may be
`communicated to the client application 40 (see block 112).
`The client application 40, may then update its seat identifier
`44 to correspond with the current or latest seat identifier
`provided at the licensing server 36. It will be noted that if the
`number of installations does not exceed the permitted number
`of installations at decision 98, the method 90 also proceeds to
`block 112.
`
`Referring to FIG. 7, reference 120 generally indicates a
`method, in accordance with an example embodiment of the
`invention, to monitor seat identifiers received from a plurality
`of user computers (e. g.
`the user computers 22-34). The
`method 120 may monitor multiple installations of a software
`program in accordance with a license agreement identified by
`a license identifier (e.g. the license identifier 46). Each instal-
`
`
`
`US 7,818,741 B1
`
`7
`lation may be uniquely identified by a seat identifier (e.g. the
`seat identifier 44). As shown at block 122, the method 120
`may define a set or list of monitored installation identifiers
`wherein each installation identifier in the set or object is
`monitored by the method 120. In one example embodiment,
`the method 120 may be in the form of a probation object that
`is created when the server 36 detects that the number of
`
`installed instances of the software program exceeds the num-
`ber of installations permitted in terms of the license agree-
`ment. Initially, as shown at block 122, the set of monitored
`installation identifiers may include the installation identifiers
`of all known installations at a given point in time. Thereafter,
`the method 120 may monitor a seat installation or seat iden-
`tifiers 44 received from one or more of the user computers
`22-34 (see block 124). Thereafter, as shown at decision 126,
`the method 120 may identify when a received seat identifier
`44 is in the set or list of monitored seat identifiers. If the seat
`
`identifier 44 received from a particular client application 40 is
`not a monitored seat identifier, then the method 120 may
`return to block 122 and await receipt ofa further seat identifier
`44 from a client application 40 installed on one of the user
`computers 22-34. In these circumstances, when the received
`seat identifier is not a monitored seat identifier (not in the set
`of monitored seat identifiers) this may mean that the installa-
`tion is an authorized installation and that the number of
`
`installed instances of the software program 42 do not exceed
`the permitted number of installations provided in the license
`agreement.
`If, however, the received seat identifier 44 is included in a
`set of monitored seat identifiers, the set of monitored seat
`identifiers may be modified (e.g., updated or marked) so that
`the