throbber
(12) Ulllted States Patent
`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

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket