throbber
United States Patent [19J
`Sadowsky
`
`[54] PUSH DEPLOYMENT OF SOFTWARE
`PACKAGES USING NOTIFICATION
`TRANSPORTS
`
`[75]
`
`Inventor: Richard Sadowsky, San Jose, Calif.
`
`[73] Assignee: Symantec Corporation, Cupertino,
`Calif.
`
`[ *] Notice:
`
`This patent issued on a continued pros(cid:173)
`ecution application filed under 37 CFR
`1.53( d), and is subject to the twenty year
`patent term provisions of 35 U.S.C.
`154(a)(2).
`
`[21] Appl. No.: 08/861,177
`
`[22]
`
`Filed:
`
`May 21, 1997
`
`[51]
`[52]
`
`[58]
`
`[56]
`
`Int. Cl.7 ...................................................... G06F 9/445
`U.S. Cl. ..................................... 717/11; 717/4; 717/5;
`717/6; 717/7; 717/8; 717/9; 717/10
`Field of Search ..................................... 395/712, 704,
`3951705, 706, 707, 708; 717/10, 9
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`5,406,577
`5,421,009
`5,452,099
`5,708,780
`5,748,738
`5,768,528
`5,790,790
`5,875,296
`5,907,547
`5,970,468
`5,974,449
`5,978,842
`
`4/1995 Baudoin .................................. 370/407
`5 /1995 Platt ... ... ... ... ... .... ... ... ... ... ... .... .. 395 /600
`9/1995 Von Meister ........................... 358/403
`1/1998 Levergood et al.
`............... 395/200.59
`5 /1998 Bisbee et al. .. ... ... ... ... .... ... ... ... .. 380/25
`6/1998 Stumm ............................... 395/200.61
`8/1998 Smith et al.
`....................... 395/200.36
`2/1999 Shi et al.
`........................... 395/188.01
`5/1999 Foladare et al. ........................ 370/352
`10/1999 Bull . ... ... ... ... ... .... ... ... ... ... .... ... ... . 705 /11
`10/1999 Chang et al.
`........................... 709/206
`11/1999 Noble et al. ............................ 709/218
`
`WAIT
`FOR
`E-MAIL
`
`I lllll llllllll Ill lllll lllll lllll lllll lllll 111111111111111111111111111111111
`US006123737A
`[11] Patent Number:
`[45] Date of Patent:
`
`6,123,737
`*Sep.26,2000
`
`OTHER PUBLICATIONS
`
`Salvatore, S., "Electronic Software Distribution: Diamond
`in the Rough", Data Communications, vol. 22, No. 4, Mar.
`1, 1993, pp. 109-110, 112, 114, 116, New York, U.S.A.
`Troke, L., "Configuration, Installation and Distribution-A
`Structured Approach to Software Distribution for Client/
`Server" (Share Europe AM93:2.2E), Oct. 25, 1993, pp.
`893-905, IBM, Nottingham, England.
`Back Web; A Cooperative Architecture for a Flexible "Push(cid:173)
`Pull" Broadcasting Solution, Mar. 7, 1997, U.S.A. (pub(cid:173)
`lished on the WorldWideWeb).
`'A Cooperative Architecture For a Flexible
`Back Web,
`"Push-Pull" Broadcasting Solution', U.S.A. published on
`WWW, Mar. 1997.
`
`Primary Examiner-Tariq R. Hafiz
`Assistant Examiner-Ted T. Vo
`Attorney, Agent, or Firm-Fenwick & West LLP
`
`[57]
`
`ABSTRACT
`
`A system and method for deploying one or more software
`packages (18) over a communications interface (1). A push
`trigger (10) is sent to a server computer (2). In response to
`the trigger (10), the server computer (2) generates a notifi(cid:173)
`cation package (12, 13, 14). The notification package (12,
`13, 14) is sent over the communications interface (1) to at
`least one client computer (2). Each client computer (2)
`contains at least one notification transport (15, 16, 17) which
`recognizes a corresponding notification package (12, 13,
`14). The notification transport (15, 16, 17) then instructs the
`server computer (2) to automatically push the software
`package (18) to the client computer (4) over the communi(cid:173)
`cations interface (1). E-mail transport (15), UNC transport
`(16), and opportunistic transport (17) are described.
`
`13 Claims, 5 Drawing Sheets
`
`DECOMPRESS
`PACKAGE
`'--~----"90
`DEPLOY
`UPDATE
`
`91
`
`IPR2017-00184
`UNIFIED EX1017
`
`

`
`U.S. Patent
`
`Sep.26,2000
`
`Sheet 1 of 5
`
`6,123,737
`
`2 (I)
`J
`
`SERVER
`SERVER
`SOFTWARE
`6(1)
`
`j •
`
`~3(1)
`1 •
`
`J.
`
`-5(1)
`••
`
`AGENT
`SOFTWARE
`8( I)
`CLIENT
`)
`4( I)
`
`2(2)
`(
`SERVER
`SERVER
`SOFTWARE
`6(2)
`
`l
`
`-3(2)
`, r
`
`2 (n)
`j
`SERVER
`SERVER
`SOFTWARE
`6(n)
`
`•••
`
`I l
`
`, I
`
`.._3(n)
`
`COMMUNICATIONS
`
`INTERFACE
`
`I ~
`
`-S(p)
`,
`
`"1
`
`• • •
`
`AGENT
`SOFTWARE
`8(p}
`CLIENT
`7
`
`I ~
`
`~5(2)
`'
`
`AGENT
`SOFTWARE
`8(2)
`CLIENT
`\
`4(2)
`
`FIG. I
`
`

`
`U.S. Patent
`
`Sep.26,2000
`
`Sheet 2 of 5
`
`6,123,737
`
`PUSH
`TRIGGER
`
`n
`
`~1
`
`__ ,
`0
`
`-
`
`, '
`SERVER
`E-MAIL
`SERVER
`SOFTWARE SYSTEM
`6
`19
`
`-
`-
`~d-
`
`"'-' 2
`
`.l
`
`i--3
`,,
`
`FIG.2
`
`HOST
`
`SOFTWARE
`PACKAGE
`18
`
`II)
`
`

`
`U.S. Patent
`
`Sep.26,2000
`
`Sheet 3 of 5
`
`6,123,737
`
`Fl G.3
`6\
`
`WAIT
`FOR
`TRIGGER
`
`PUSH
`TRIGGER
`
`7
`
`RECEIVE
`TRIGGER
`
`61
`
`10
`
`CEASE
`PROCESSING
`
`63
`
`CEASE
`PROCESSING
`65
`
`NO
`
`66
`
`YES
`PERFORM
`LOAD
`BALANCING
`
`E-MAIL
`NOTI Fl CATION
`PACKAGE
`12 (I)
`3 (I)
`
`E-MAIL
`NOTIFICATION
`PACKAGE
`12(2)
`3(2)
`
`• • •
`
`E-MAIL
`NOTIFICATION
`PACKAGE
`12(m)
`3(m)
`
`

`
`U.S. Patent
`
`Sep.26,2000
`
`Sheet 4 of 5
`
`6,123,737
`
`FIG.4
`/8
`
`E-MAIL
`NOTIFICATION
`PACKAGE
`
`CEASE
`PROCESS.ING
`PACKAGE
`
`CEASE
`PROCESSING
`PACKAGE
`
`12
`
`83
`
`85
`
`NO
`
`WAIT
`FOR
`E-MAIL
`
`RECEIVE
`E-MAIL
`
`80
`
`5
`
`81
`
`YES
`
`DECOMPRESS
`PACKAGE
`
`DEPLOY
`UPDATE
`
`90
`
`91
`
`

`
`U.S. Patent
`
`Sep.26,2000
`
`Sheet 5 of 5
`
`6,123,737
`
`E-MAIL
`NOTIFICATION
`PACKAGE
`
`1l
`
`~
`
`fo
`
`U NC
`NOTIFICATION
`PACKAGE
`
`'l
`
`OPPORTUNISTIC
`NOTIFICATION
`PACKAGE
`
`1 '
`
`I~
`E-MAIL
`TRANSPORT
`
`,,
`
`I~
`
`UNG
`TRANSPORT
`
`AGENT SOFTWARE
`
`FIG.5
`
`.,
`13
`OPP OR-
`TUNISTIC
`TRANSPORT
`
`1
`8
`
`

`
`1
`PUSH DEPLOYMENT OF SOFTWARE
`PACKAGES USING NOTIFICATION
`TRANSPORTS
`
`RELATED APPLICATION
`
`A related patent application is U.S. patent application Ser.
`No. 08/664,388 filed Jun. 14, 1996 by Richard Scott Sad(cid:173)
`owsky entitled "Use of Polymorphic Package Files to
`Update Software Components", which patent application is
`hereby incorporated by reference in its entirety into the
`present patent application.
`
`10
`
`TECHNICAL FIELD
`
`This invention pertains to the field of using push tech- 15
`nology to deploy software packages from at least one server
`computer to at least one client computer.
`
`BACKGROUND ART
`
`A software product known as Back Web is a product that
`manages software updates using push installation. However,
`unlike the present invention, BackWeb uses an HTTP
`connection, which requires access to the World Wide Web
`component of the Internet. The present invention is not so
`limited. For example, the present invention can work on top 25
`of conventional e-mail systems in environments where
`access to the World Wide Web is not available. E-mail is
`currently used by over 70 million users worldwide; and
`provides for a fast, convenient, automatic, and inexpensive
`way to deploy software updates. Furthermore, the present 30
`invention employs true push technology unlike BackWeb,
`which pulls on a given "channel", i.e., BackWeb looks at a
`given URL (Universal Resource Locator). In the e-mail
`embodiment of the present invention, messages are queued
`and processed efficiently by the e-mail post office, and the 35
`user need not maintain constant access to the Internet.
`Another advantage of the present invention over BackWeb
`is that the Backweb client software is over 4 megabytes in
`size, whereas the present invention's agent software is under
`one megabyte. Finally, the present invention, unlike 40
`BackWeb, does not subject the user to viewing vendors'
`advertisements.
`
`DISCLOSURE OF INVENTION
`
`The present invention is a system and method for deploy(cid:173)
`ing a software package (18) over a communications inter(cid:173)
`face (1). The method comprises the steps of sending a trigger
`(10) to a server computer (2). In response to the trigger (10),
`the server computer (2) generates a notification package (12,
`13, 14). The notification package (12, 13, 14) is sent over the
`communications interface (1) to at least one client computer
`( 4). The notification package (12, 13, 14) is recognized by a
`notification transport (15, 16, 17) located within each client
`computer ( 4).
`The notification transport (15, 16, 17) then instructs the
`server computer (2) to automatically push the software
`package to the client computer ( 4) over the communications
`interface (1 ).
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`These and other more detailed and specific objects and
`features of the present invention are more fully disclosed in
`the following specification, reference being had to the
`accompanying drawings, in which:
`FIG. 1 is a block diagram of a computer system archi(cid:173)
`tecture that may advantageously use the present invention.
`
`45
`
`50
`
`60
`
`6,123,737
`
`2
`FIG. 2 is a block diagram of components on server
`computer 2 side of communications interface 1 of the
`present invention.
`FIG. 3 is a flow chart illustrating method steps that are
`performed within server computer 2 in a preferred embodi(cid:173)
`ment of the present invention.
`FIG. 4 is a block diagram illustrating method steps that
`are performed within client computer 4 in a preferred
`embodiment of the present invention.
`FIG. 5 is a block diagram illustrating a more general
`embodiment of the present invention.
`
`DETAILED DESCRIPTION OF THE
`PREFERRED EMBODIMENTS
`
`FIG. 1 illustrates an operating environment in which the
`present invention may advantageously be employed. One or
`more server computers 2 are coupled to a communications
`interface 1 via links 3. Communications interface 1 may be
`20 any communications interface, such a direct modem
`connection, the Internet, an intranet, an extranet, or any
`combination thereof (mixturenet).
`Within each server computer 2 is a server software
`module 6 that has been designed to perform method steps of
`the present invention. Also coupled to communications
`interface 1 via links 5 are one or more client computers 4.
`Within each client computer 4 is an agent software module
`8 that has been designed to perform method steps of the
`present invention.
`Links 3 and 5 can be electrically conductive wires, fiber
`optic cables, wireless links, or any combination thereof.
`Furthermore, links 3 and 5 can be local or remote links.
`Computers 2 and 4 can be any type of computer, and are
`typically digital computers. In any given system, computers
`2 may be similar or identical to each other or may be
`different. Similarly, computers 4 may be similar or identical
`to each other or to server computers 2, or may differ
`therefrom. Server modules 6 and/or agent modules 8 may be
`implemented in firmware, hardware, and/or software, but for
`purposes of simplicity will normally be referred to herein as
`software modules.
`FIGS. 2, 3, and 4 illustrate a preferred embodiment of the
`present invention in which the notification transport is an
`e-mail (electronic mail) transport 15.
`FIG. 5 illustrates a more general embodiment of the
`present invention in which a UNC (Universal Naming
`Convention) transport 16 and an opportunistic transport 17
`are also shown.
`FIG. 2 illustrates components that are typically present on
`the server computer 2 side of communications interface 1.
`Push trigger 10 is a message that is activated upon a certain
`event, or combination of events, e.g., the end of the month,
`the presence of new anti-virus information posted within
`55 host computer 11, etc.
`Trigger 10 can comprise software that has been prepro(cid:173)
`grammed to trigger upon said event or events. Alternatively,
`trigger 10 can be generated by a human operator activating
`some device, such as a computer keyboard.
`Trigger 10 may include a set of addresses corresponding
`to client computers 4 that are intended to receive the
`corresponding one or more software packages 18.
`Trigger 10 is sent over link 7 to server computer 2. Link
`7 may be a remote or local link, and may be wired, wireless,
`65 or comprise fiber optic cables. Host computer 11 may be part
`of server computer 2, may be identical with server computer
`2, may encompass server computer 2, or may be a standa-
`
`

`
`6,123,737
`
`3
`lone computer. Host computer 11 contains one or more
`software packages 18 that will be deployed to one or more
`client computers 4.
`Each software package 18 may contain a computer
`program, a software patch, new data, or any combination of
`these items. A given software package 18 may comprise
`polymorphic software. When host computer 11 is separate
`from server computer 2, host computer 11 and server com(cid:173)
`puter 2 communicate with each other via link 9, which may
`be a remote or local link, and may be wired, wireless, or 10
`comprise fiber optic cables. In the embodiment illustrated in
`FIGS. 2, 3, and 4, server computer 2 contains an e-mail
`system 19 (which may be an existing system) typically
`including storage, protocols, address tables, and communi(cid:173)
`cations links. For example, e-mail system 19 may be a MAPI 15
`(Messaging Application Programming Interface) e-mail sys(cid:173)
`tem used in conjunction with a Windows 95 or a Windows
`NT operating system.
`FIG. 3 illustrates method steps performed by server
`software 6. At step 60, software 6 is activated and waits for 20
`trigger 10. In an alternative embodiment, software 6 could
`be dormant and could be activated by trigger 10. At step 61,
`software 6 receives trigger 10 over link 7. At step 62,
`software 6 inquires as to whether trigger 10 is a push trigger.
`Step 62 could be implemented, for example, by having a 25
`pre-established field within trigger 10 of predetermined size,
`where a predetermined sequence of bits indicates a valid
`push trigger. If trigger 10 is not a valid push trigger, then
`processing is terminated at step 63. If, on the other hand,
`trigger 10 is a valid push trigger, step 64 is executed.
`At step 64, optional but highly desirable authentication
`and validity substeps are performed. For example, the
`authentication substep can establish that a legitimate person
`and not a spoofer originated push trigger 10. This can be 35
`accomplished by having previously encrypted all or a por(cid:173)
`tion of push trigger 10 and having the authentication substep
`decrypt the previously encrypted information. Alternatively,
`the authentication could be performed by cryptographic
`authentication, e.g., by a method of digital signatures. The 40
`digital signature ties the contents of a specific software
`package 18 with the contents of a specific push trigger 10.
`The digital signature is added to trigger 10. After arrival of
`trigger 10, software 6 (at step 64) reads the digital signature
`from trigger 10 and recomputes the digital signature based 45
`upon the contents of trigger 10 and the contents of software
`package 18. If the computed digital signature matches the
`digital signature stored in trigger 10, then trigger 10 is
`authentic. If not, trigger 10 is a forgery.
`The digital signature can be computed using standard
`encryption algorithms of arbitrary strength. A message
`digest can first be created using a one-way hash function
`such as MD5 or MD52. The message digest is then signed
`by applying a encryption routine, for example, a block
`cipher such as Blowfish described in Schneier, Applied 55
`Cryptography (John Wiley & Sons, Inc. 2d Ed. 1996), pp.
`336-339. An advantage of using Blowfish is that it has a
`variable keylength. Under current U.S. law, the keylength
`can be arbitrarily strong for use within the United States but
`must be limited to certain lengths for export outside of the 60
`United States. Thus, the variable keylength feature allows
`software 6 to be modified to provide very strong encryption
`where allowed by law and yet provide a weaker but export(cid:173)
`able form of encryption to restricted countries.
`The key used to sign the message digest is calculated by 65
`performing operations on software package 18. This binds
`trigger 10 to the specific software package 18. This ensures
`
`50
`
`30
`
`4
`that the sending of trigger 10 will not cause access to any
`other server computer 2, preventing malicious programs
`from spamming the system. Each trigger 10 must be sent or
`provoked with knowledge of the software package 18 that is
`intended.
`The optional validation substep within step 64 could, for
`example, check the address fields within trigger 10 to ensure
`that these fields are of the correct length and format.
`If the authenticity and validity substeps are not satisfac(cid:173)
`torily passed, processing is terminated at step 65. If the
`authenticity and validity substeps are passed, control passes
`to optional step 66.
`The output of software 6 is one or more notification
`packages 12, which, in this particular embodiment, are
`e-mail notification packages 12. Each notification package
`12 contains an address of an intended recipient 4, a notifi(cid:173)
`cation message, and optionally the software package 18
`itself.
`Optional step 66 is a load balancing step. Step 66 can be
`useful when there are many software packages 18 to be
`deployed and/or many intended recipients 4. Load balancing
`can comprise batching like notification packages 12
`together, introducing time delays into some of the notifica-
`tion packages 12 to avoid overload of the communications
`interface 1, etc.
`FIG. 4 illustrates method steps performed by agent soft-
`ware 8. In step 80, software 8 is activated and waits for
`receipt of the notification package 12. Alternatively, soft(cid:173)
`ware 8 could be activated by package 12. However, in the
`preferred embodiment, software 8 is first activated, which is
`why it is referred to as agent software rather than client
`software.
`In step 81, software 8 receives the e-mail notification
`package 12 over link 5.
`Step 82 is then entered, wherein a determination is made
`as to whether the e-mail notification package 12 contains a
`push notification. This can be done, for example, by exam(cid:173)
`ining a pre-established field for a pre-established sequence
`of bits. If a push notification is not present, processing is
`terminated at step 83. If a push notification is present,
`control passes to step 84.
`At optional but highly useful step 84, the authenticity of
`the e-mail notification package 12 is tested. This can be done
`similarly, identically, or analogously to the authenticity
`substep described above in conjunction with step 64. If the
`package 12 is found to be non-authentic, processing is
`terminated at step 85. If package 12 is found to be authentic,
`control is passed to step 86.
`At step 86, software 8 determines whether one or more
`attachments are part of e-mail notification package 12. If the
`answer is yes, control is passed to step 90.
`At step 90, software 8 determines whether the
`attachments, which in the preferred embodiment correspond
`to software packages 18, have been compressed, e.g., to
`conserve bandwidth or to speed processing time when
`traversing communications interface 1. If a software pack(cid:173)
`age 18 has been compressed, it is decompressed at step 90.
`Control is then passed to step 91.
`At step 91, software 8 deploys software package 18 within
`client computer 4.
`If step 86 determines that an attachment is not part of
`e-mail notification package 12, control is passed to step 87,
`in which software 8 determines whether communications
`interface 1 comprises the Internet. If so, control is passed to
`Internet utility 88. Utility 88 may be, for example, as
`
`

`
`6,123,737
`
`5
`described in the aforesaid U.S. patent application Ser. No.
`08/664,388. The system and method described in said patent
`application resemble those embodied in a software feature
`known as LiveUpdate, which is part of the commercially
`successful software known as Norton AntiVirus. Utility 88
`automatically sends a message to server computer 2 request(cid:173)
`ing that software package(s) 18 as identified in notification
`package 12 be sent to client computer 4. Server computer 2
`having been programmed to comply with this request, then
`automatically pushes the software package(s) 18 to client
`computer 4.
`If communications interface 1 does not comprise the
`Internet, push/pull utility 89 is invoked. Utility 89 performs
`an automatic and fast transfer and installation of software
`package(s) 18 via a network UNC (Universal Naming
`Convention). No FTP (File Transfer Protocol) or other
`Internet connection is required. In an embodiment of the
`present invention that has been built, utility 89 is only 60K
`bytes in size. It works in conjunction with packages 204 and
`214 of the aforesaid U.S. patent application Ser. No. 08/664,
`388. Since UNC rather than FTP is used to install the
`package 204, 214 directly, the process is very efficient for
`users with fast network connections.
`When utility 88 or utility 89 has completed its assigned
`tasks, control is passed to decompression step 90 as before.
`FIG. 5 illustrates a more general embodiment of the 25
`present invention in which other notification transports 16,
`17 can be used in conjunction with or in addition to e-mail
`notification transport 15. FIG. 5 illustrates an embodiment in
`which e-mail notification transport 15, UNC notification
`transport 16, and opportunistic transport 17 are all present
`within the same agent software 8. Alternatively, any par(cid:173)
`ticular agent software 8 that is in the system can contain just
`one or two of the varying types of notification transports 15,
`16, 17. Similarly, an e-mail notification package 12, UNC
`notification package 13, and opportunistic notification pack(cid:173)
`age 14 could all be present within the same server computer
`2 or within two or more different server computers 2.
`UNC notification package 13 and opportunistic notifica(cid:173)
`tion package 14 are analogous to e-mail notification package 40
`12. Similarly, UNC notification transport 16 and opportu(cid:173)
`nistic notification transport 17 are analogous to e-mail
`notification transport 15.
`In the case where a Windows operating system is used,
`each type of transport 15, 16, 17 typically comprises a DLL 45
`(Dynamic Link Library). DLL's 15, 16, and 17 become
`active when the associated agent software 8 becomes active.
`E-mail notification has previously been described in con(cid:173)
`junction with FIGS. 2, 3, and 4.
`In the case of UNC notification, once UNC notification
`package 13 is generated by server computer 2, UNC DLL 16
`examines package 13 and determines whether it contains
`notification of a new version of a software package 18
`beyond what has already been installed within the associated
`client computer 4. This may be done, for example, by DLL 55
`16 examining date and time fields associated with software
`currently residing within client computer 4, and comparing
`these date and time fields with corresponding fields within
`notification package 13. If DLL 16 determines that package
`13 contains notification of a new software package 18, the 60
`contents of UNC notification package 13 are transmitted to
`DLL 16. DLL 16 then typically invokes push/pull utility 89
`to command server computer 2 to automatically push the
`software package 18 to client computer 4, as described
`above in conjunction with e-mail notification.
`Opportunistic notification works by means of opportunis(cid:173)
`tic transport 17 constantly watching (patrolling) a pre-
`
`6
`designated segment of communications interface 1. When a
`new connection is made to this pre-designated segment of
`communications interface 1 via a link 3, DLL 17 checks to
`see whether a new software package 18 is being offered.
`This can be done, for example, by DLL 17 examining date
`and time fields associated with software currently residing
`within client computer 4, and comparing these date and time
`fields with corresponding fields within opportunistic notifi(cid:173)
`cation package 14. When a new software package 18 is
`10 detected, DLL 17 typically invokes push/pull utility 89 to
`command server computer 2 to automatically push the
`software package 18 to client computer 4, as described
`above in conjunction with e-mail notification.
`The above description is included to illustrate the opera-
`15 tion of the preferred embodiments and is not meant to limit
`the scope of the invention. The scope of the invention is to
`be limited only by the following claims. From the above
`discussion, many variations will be apparent to one skilled
`in the art that would yet be encompassed by the spirit and
`20 scope of the present invention.
`What is claimed is:
`1. A method for deploying a software package on at least
`one client computer over a communications interface, said
`method comprising the steps of:
`receiving a trigger at a server computer, wherein the
`trigger is a message that is received in response to a
`preprogrammed event;
`in response to receiving the trigger, generating within the
`server computer a notification package;
`sending the notification package over the communications
`interface to the at least one client computer;
`recognizing the notification package by means of a noti(cid:173)
`fication transport located within the at least one client
`computer;
`determining at the client computer whether the commu(cid:173)
`nications interface comprises the Internet;
`in response to a determination that the communications
`interface comprises the Internet, automatically retriev(cid:173)
`ing at the client computer the software package from
`the server computer by means of an Internet module;
`in response to a determination that the communications
`interface does not comprise the Internet, automatically
`retrieving at the client computer the software package
`from the server computer by means of a universal
`naming convention (UNC) push/pull module; and
`deploying the software package on the client computer.
`2. The method of claim 1 wherein the receiving step
`50 comprises the substep of determining whether the trigger is
`a push trigger.
`3. The method of claim 2 wherein the receiving step
`further comprises the substeps of authenticating and vali(cid:173)
`dating the push trigger.
`4. The method of claim 1 wherein the sending step
`comprises the substeps of:
`sending a plurality of notification packages from the
`server computer to a plurality of client computers,
`wherein the sending of at least one notification package
`is delayed in order to avoid overloading the commu(cid:173)
`nications interface.
`5. The method of claim 1 wherein at least one notification
`package is selected from the group consisting of a universal
`naming convention (UNC) notification package and an
`65 opportunistic notification package.
`6. The method of claim 1 wherein at least one notification
`transport is a universal naming convention (UNC) transport.
`
`30
`
`35
`
`

`
`6,123,737
`
`15
`
`7
`7. The method of claim 1 wherein at least one notification
`transport is an opportunistic transport.
`8. The method of claim 1 wherein the recognizing step
`comprises the substeps of:
`determining at the client computer whether the notifica(cid:173)
`tion package contains the software package as an
`attachment; and
`in response to a determination that the notification pack(cid:173)
`age contains the software package as an attachment,
`deploying the software package within the client com- 10
`puter.
`9. A system for deploying a software package on at least
`one client computer over a communications interface, said
`system comprising:
`at least one server computer, each server computer linked
`to the communications interface and to the software
`package to be deployed, and each server adapted to
`receive a push trigger comprising a message that is
`received in response to a preprogrammed event;
`at least one client computer, each client computer linked
`to the communications interface, each client computer
`adapted to deploy the software package when received
`from the server computer; and
`a notification transport located within each client 25
`computer, said notification transport adapted to recog(cid:173)
`nize a notification package generated by a server com(cid:173)
`puter in response to a push trigger, the notification
`transport further adapted to determine at the client
`computer whether the communications interface com- 30
`prises the Internet, automatically retrieve at the client
`computer the software package from the server com(cid:173)
`puter by means of an Internet module when the com(cid:173)
`munications interface comprises the Internet, and auto(cid:173)
`matically retrieve at the client computer the software 35
`package from the server computer by means of a
`universal naming convention (UNC) push/pull module
`if the communications interface does not comprise the
`Internet.
`
`20
`
`8
`10. The system of claim 9 wherein at least one notification
`package is selected from the group consisting of a universal
`naming convention (UNC) notification package and an
`opportunistic notification package.
`11. The system of claim 9 wherein at least one notification
`transport is a universal naming convention transport.
`12. The system of claim 9 wherein at least one notification
`transport is an opportunistic transport.
`13. A computer-readable medium containing a computer
`program that performs a method for deploying a software
`package on at least one client computer over a communi(cid:173)
`cations interface, said method comprising the steps of:
`receiving a trigger at a server computer, wherein the
`trigger is a message that is received in response to a
`preprogrammed event;
`in response to receiving the trigger, generating within the
`server computer a notification package;
`sending the notification package over the communications
`interface to the at least one client computer;
`recognizing the notification package by means of a noti(cid:173)
`fication transport located within the at least one client
`computer;
`determining at the client computer whether the commu(cid:173)
`nications interface comprises the Internet;
`in response to a determination that the communications
`interface comprises the Internet, automatically retriev(cid:173)
`ing at the client computer the software package from
`the server computer by means of an Internet module;
`in response to a determination that the communications
`interface does not comprise the Internet, automatically
`retrieving at the client computer the software package
`from the server computer by means of a universal
`naming convention (UNC) push/pull module; and
`deploying the software package on the client computer.
`
`* * * * *

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