Many small to medium sized business organizations have a network infrastructure to allow software product distribution by a network administrator. Software products may be installed on the client by the network administrator by manually installing the program on each client. Such installation is very time consuming and tedious. A network administrator may also use a software deployment technology to advertise available software for download to a client. Such deployment comes from a central server and is less time consuming than manual installation because software products may be advertised to a plurality of clients at one time.
Advertising is a method by which a software product is prepared and allowed to become installable on a machine. Some operating systems have support for “advertising” software products which are packaged in a single product installer format. Single product installers facilitate the installation of the software product on a client via a software deployment technology. In such a situation, the single product installer bundles both the application binaries and application specific resources. Thus, many software deployment technologies only deploy a single product installer to a client during software distribution. An operating system may natively support installing these single product installer software packages to computers which are joined to, for example, a managed Active Directory Domain. This technology is called Group Policy Software Installation (GPSI).
Software products may also be programmed with multiple product installers. In such a situation, one product installer may include the application binaries and multiple other installers may include the application specific resources. In the past, software deployment technologies that can only deploy a single product installer cannot facilitate advertisement of software products that are programmed with multiple product installers to a managed computer, for example on the Active Directory Domain.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key and/or essential features of the claimed subject matter. Also, this Summary is not intended to limit the scope of the claimed subject matter.
A custom action is associated with a core installer to leverage the privileges of the core installer to advertise satellite installers on a client device. The custom action allows multi-installer software products to be installed in an advertised state on a client or target computer via a software deployment technology configured for single installer software products. In this manner, multi-installer software products may be easily deployed and advertised on client devices.
Non-limiting and non-exhaustive embodiments of the present invention are described with reference to the following figures, wherein like reference numerals refer to like parts throughout the various views unless otherwise specified.
Embodiments are described more fully below with reference to the accompanying drawings, which form a part hereof, and which show specific exemplary embodiments. However, embodiments may be implemented in many different forms and should not be construed as limited to the embodiments set forth herein; rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope. Embodiments may be practiced as methods, systems, computer program products, or devices. Accordingly, embodiments may take the form of an entirely hardware implementation, an entirely software implementation or an implementation combining software and hardware aspects. The following detailed description is, therefore, not to be taken in a limiting sense.
The logical operations of the various embodiments are implemented (1) as a sequence of computer implemented steps running on a computing system and/or (2) as interconnected machine modules within the computing system. The implementation is a matter of choice dependent on the performance requirements of the computing system implementing the invention. Accordingly, the logical operations making up the embodiments described herein are referred to alternatively as operations, steps or modules.
In a small to medium sized business organization, software products are installed on client machines in many different ways. When a user has administrative rights to a client device, the user may download software products from the Internet or install a software product from a computer readable medium. Such rights are rarely issued to a user in a typical business setting because the business organization desires maintaining control over the software that the user has on the client device. For these reasons, may business organizations have restricted privileges for users on client devices. These restricted privileges may prohibit installation of software products.
In such situations, a network administrator may have the responsibility of maintaining and installing software on client devices. To install software products on a client device, the network administrator may be required to manually install the software on each client device. The network administrator logs onto the client device with heightened privileges. The network administrator may then install the software product onto the client device. Installing software products in this manner may be acceptable in business organizations with a small number of client devices. However, as the number of client devices increase, so does the time and labor required to install software products on each of the client devices.
When a network administrator desires installing a software product on several devices, the network structure of the business organization may allow the network administrator to utilize a software deployment technology to remotely install software on the client devices. A software deployment technology may facilitate the installation of a software product having a single installer. A single installer software product is a software product that includes both the application binaries and the application specific resources bundled into a single installer. The software deployment technology advertises the single installer of the software product on the client device. When an install action is instigated, the software product is installed on the client device.
Some software products may also include multiple installers. In such a situation, the software product may include a core installer that is associated with the application binary. The software may also include multiple satellite installers that are associated with application resources. Multi-installer software products may present problems for software deployment technologies that are configured to only install software products that have a single installer, because such software deployment technologies only recognize one installer.
A properly configured custom action allows a software product with multiple installers to be installed using such a software deployment technology. A custom action is associated with the core installer of the software product. The software deployment technology advertises the core installer on the client device. When an install action is instigated, the custom action associated with the core installer is executed. The source of the core installer is identified and the source is scanned to determine whether satellite installers are associated with the software product. If satellite installers are associated with the product, the custom action schedules and spawns other custom actions to impersonate a target client user or machine account in order to access script associated with the satellite installers and advertise the satellite installers on the client for facilitating installation.
Succinctly stated, the custom action associated with the core installer leverages the privileges of the core installer to install satellite installers on a client device, for example a machine with restricted privileges for users. The custom action allows multi-installer software products to be advertised on a client via a software deployment technology configured for single installer software products. In this manner, multi-installer software products may be easily deployed and advertised on client devices.
System 200 also includes server 204. Server 204 may be associated with an administrator terminal. Server 204 may include any type of server that facilitates product deployment in a networked environment. Server 204 is in communication with computing device 202 via network connection 206. Network connection 206 may include a hardwired network connection and/or a wireless network connection. Network connection 206 may include any type of network connection functional to transmit data between a computing device and a server or between computing devices. Network connection 206 includes any type of network connection that facilitates product deployment.
In the distributed environment, server 204 and/or client 202 may include product image 208 and installer deployment module 210. For example, an administrator may associate product image 208 with server 204 to facilitate product deployment to client 202. Client 202 may install product 212 on client 202. It should also be appreciated that product image 208 may be associated with a file share or one client 202 to facilitate product deployment to another client 202.
In one embodiment, product 212 is a multi-installer product, such as, a “MICROSOFT OFFICE” product of MICROSOFT CORPORATION headquartered in Redmond, Wash. In such a situation, product image 208 includes core installer 214 and satellite installer(s) 216. In another embodiment, installer deployment module 210 is a single installer deployment module, such as, “MICROSOFT ACTIVE DIRECTORY” of MICROSOFT CORPORATION headquartered in Redmond, Wash. Core installer 214 may include custom action 218. Core installer 214 is deployed by installer deployment module 210 during product deployment to client 202. Custom action 218 leverages the privileges of core installer 214 to install satellite installer(s) 216 when client 202 is in a lockdown mode.
As depicted in
Server 304 may be associated with product image 322. Product image 322 is a product image for a multi-installer product. Product image 322 includes core installer 324 and satellite installers 328. Core installer 324 includes the binary application bits for the product. For example, if product image 322 is a product image for “MICROSOFT OFFICE”, core installer 324 may include the binary bits for “MICROSOFT WORE”, “MICROSOFT EXCEL”, “MICROSOFT OUTLOOK”, “MICROSOFT POWERPOINT”, and/or “MICROSOFT ACCESS.” Core installer 324 also includes custom action 327. As is more fully set forth below, custom action 327 leverages privileges of core installer 324 to facilitate the advertisement and/or installation of satellite installers 328 on client 302.
Product image 322 also includes satellite installers 328. Satellite installers 328 may include any number of installers. In one aspect, satellite installers 328 include resource installers associated with core installer 324. Resource installers may include language resources, language resources from proofing, and/or any other type of resource associated with a language or geographic area. Satellite installers may pregenerate advertised scripts embedded therein. Core installer 324 and satellite installers 328 are separate installers that are associated with product image 322.
Installer deployment module 330 is a single installer deployment module. In one aspect, installer deployment module 330 includes MICROSOFT ACTIVE DIRECTORY. Installer Deployment module 330 publishes/assigns core installer 324 on client 302. To publish/assign core installer 324, installer deployment module 330 may generate a script and publish the script to client 302.
Client 302 receives the script. The script includes custom action 327. Installer 307 populates registry 308 with data from the script to generate advertisement 310. Advertisement 310 is an indicator that a software product is ready for installation on client 302. Executor 312 may include an icon and/or a button that a user actuates to begin an install. In another aspect, executor 312 is a boot process that begins an install. In either situation, core installer 324 is installed to client 302 and custom action 327 associated with core installer 324 is executed.
Custom action 327 executed on client 302 as custom action 314 spawns other custom actions 315a-315n that leverage privileges or permissions 319 of core installer 324 to access satellite installers 328. The other custom actions 315a-315n include code for impersonating a user of client 302 or a client machine account as defined by session an user data 321. As is more fully set forth below, custom action 327 includes code for identifying that a product includes multiple installers and that core installer 324 has been cached. Custom action 314 determines the product source and enumerates a list of satellite installers associated with product image 322. Satellite installers 328 are associated with client 302. Pre-generated scripts of satellite installers 328 are accessed and the scripts are applied to client 302 to facilitate satellite installer advertisement 310. To the end user, the installation process is seamless, as if, the product image includes a single installer. Additional details regarding advertising a multi-installer product will be described below with respect to
Where product deployment is not desired, operational flow 400 loops back and waits for a product deployment action. Where product deployment is desired, operational flow 400 continues to operation 406. At operation 406, the core installer of a multi-installer software product is published/assigned. In one aspect, a software deployment technology such as MICROSOFT ACTIVE DIRECTORY publishes the core installer to a client. Although not necessary, operational flow 400 may continue to operation 408 where the core installer is advertised. The core installer is advertised when the software deployment technology publishes the core installer to the client. The advertisement may include a displayed entry point or link where an install may be manually instantiated. In one respect the advertisement is not generated when the core installer is assigned to a client. When assigned, a boot process may automatically instantiate an install process.
Operational flow 400 continues to operation 410. Operation 410 includes instantiating an install. As stated above an install may be instantiated by selecting an entry point or running a boot process. Operational flow 400 continues to operate 412 where the custom action is executed. The custom action is a program that is associated with the core installer that leverages the privileges of the core installer when published/assigned. The custom action leverages the privileges of the core installer to access and advertise satellite installers for example, when the client device has restricted privileges for users. There are several Custom Actions that can make up a “Core Custom Action”. Some of these Custom Action run during both per-user and per-machine deployment scenarios, some run during the per-machine deployment mode, and the others run during the per-user deployment mode where the target user has Admin privileges, and where the target user does-not have Admin privileges (i.e. lockdown mode). Operation 412 is more fully explained below in reference to
Operational flow 400 continues to operation 414 where the satellite installers are published/assigned to the client device. To the end user, the functions of the custom action create an advertisement and install process as if the software product included a single installer. The advertised satellite installers may be installed by actuating an entry point or a boot process. Operational flow continues to end operation 416.
In executing the custom action, operational flow 500 continues to operation 508 where the scenario is identified. The custom action includes code to identify that the core installer has been cached. The custom action also includes code to identify that more installers are needed for a complete installation. When the scenario is identified, operational flow 500 continues to operation 510.
At operation 510, the software product source is identified. The custom action includes code to determine the source of the core installer. In finding the source, the custom action may associate an address with a location and/or find the source via an identifier. Operational flow 500 continues to operation 512 where the associated satellite installers are determined. When returning to the source, the custom action scans the source to determine if satellite installers are associated with the core installer. In determining associated satellite installers a list of satellite installers that are associated with the core installer may be generated. The multi-installer program may include the core installer and one or more satellite installers.
Operational flow 500 continues to operation 514 where data associated with the local system on which the multi-installer program is to be advertised is gathered. This data may be retrieved from local system permissions or session and user data residing on a client or target computer. The data may include a session identifier, a username, and/or a user domain associated with a machine account or a user currently logged in to the target computer. Operational flow 500 then continues to operation 515 where one or more other custom actions, each associated with a satellite installer, are scheduled for later execution to advertise the satellite installer(s).
Next, operation flow 500 continues to operation 517 where the custom action spawns the other custom actions. Once the other custom actions are spawned the custom action pauses. At operation 518 the other custom actions leverage privileges associated with installing the core installer on the local system in order to advertise the satellite installers. The other custom actions may leverage permissions or privileges of the core installer by impersonating a target user of the local system to ensure an accurate advertising target. Impersonating a target user may include collecting the session identifier, username, and/or user domain of the target user, retrieving an access token associated with the session identifier, and impersonating the access token. Impersonating may also include comparing the username and the user domain to a username and a user domain of the impersonated access token for validation therein executing in a security context of the target user.
Operational flow 500 continues to operation 520 where pre-generated scripts associated with the satellite installers are accessed. The satellite installers may include scripts that are pre-generated and coded into the satellite installers. The pre-generated scripts may include a set of default values. Operational flow 500 continues to operation 522 where the pre-generated scripts are advertised. At operation 524 the advertised scripts are applied to the client for publication/assignment to the client device.
Operational flow then continues to operation 525 where the spawned custom actions are terminated and the custom action is resumed. At operation 527 the source location is updated. In that the satellite installers include default values, after the scripts are applied, the actual values are accessed. Metadata associated with the satellite installers is also cleaned so that the satellite installers identify the same location as the core installer. Operational flow 500 returns control to other operational routines at return operation 530.
In this manner, the custom action associated with the core installer leverages the privileges of the core installer to advertise satellite installers on a client device. The custom action allows multi-installer software products to be advertised on a client via a software deployment technology configured for single installer software products. In this manner, multi-installer software products may be easily deployed and advertised on client devices. Advertising allows the satellite installers to become installable on the target computer without any additional privileges.
Referring to
Computing device 100 may also have additional features or functionality. For example, computing device 100 may also include additional data storage devices (removable and/or non-removable) such as, for example, magnetic disks, optical disks, or tape. Such additional storage is illustrated in
Computing device 100 also contains communication connection(s) 116 that allow the device to communicate with other computing devices 118, such as over a network or a wireless network. Communication connection(s) 116 is an example of communication media. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” may include a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media may include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. The term computer readable media as used herein includes both storage media and communication media.
Although the invention has been described in language that is specific to structural features and/or methodological steps, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features or steps described. Rather, the specific features and steps are disclosed as forms of implementing the claimed invention. Since many embodiments of the invention can be made without departing from the spirit and scope of the invention, the invention resides in the claims hereinafter appended.
Number | Name | Date | Kind |
---|---|---|---|
5247683 | Holmes et al. | Sep 1993 | A |
6075943 | Feinman | Jun 2000 | A |
6131192 | Henry | Oct 2000 | A |
6269377 | Collie et al. | Jul 2001 | B1 |
6279154 | Davis | Aug 2001 | B1 |
6282709 | Reha et al. | Aug 2001 | B1 |
6289512 | Edwards et al. | Sep 2001 | B1 |
6301708 | Gazdik et al. | Oct 2001 | B1 |
6327705 | Larsson et al. | Dec 2001 | B1 |
6345386 | Delo et al. | Feb 2002 | B1 |
6378127 | Delo | Apr 2002 | B1 |
6385766 | Doran et al. | May 2002 | B1 |
6401241 | Taylor | Jun 2002 | B1 |
6408434 | Fujiwara | Jun 2002 | B1 |
6418554 | Delo et al. | Jul 2002 | B1 |
6427227 | Chamberlain | Jul 2002 | B1 |
6493871 | McGuire et al. | Dec 2002 | B1 |
6604237 | Giammaria | Aug 2003 | B1 |
6675382 | Foster | Jan 2004 | B1 |
6735766 | Chamberlain | May 2004 | B1 |
6966060 | Young | Nov 2005 | B1 |
6973647 | Crudele et al. | Dec 2005 | B2 |
7047529 | Delo | May 2006 | B2 |
7073172 | Chamberlain | Jul 2006 | B2 |
7107588 | Gentry | Sep 2006 | B2 |
7802246 | Kennedy et al. | Sep 2010 | B1 |
20020059425 | Belfiore | May 2002 | A1 |
20020087876 | Larose | Jul 2002 | A1 |
20020095671 | Delo et al. | Jul 2002 | A1 |
20030005166 | Seidman | Jan 2003 | A1 |
20030009752 | Gupta | Jan 2003 | A1 |
20030037326 | Burkhardt et al. | Feb 2003 | A1 |
20030037327 | Cicciarelli et al. | Feb 2003 | A1 |
20030046680 | Gentry | Mar 2003 | A1 |
20030084439 | Perkins et al. | May 2003 | A1 |
20030145317 | Chamberlain | Jul 2003 | A1 |
20030208685 | Abdel-Rahman | Nov 2003 | A1 |
20030225851 | Fanshier et al. | Dec 2003 | A1 |
20030233483 | Melchione et al. | Dec 2003 | A1 |
20040098706 | Khan et al. | May 2004 | A1 |
20040143830 | Gupton et al. | Jul 2004 | A1 |
20040169686 | Zimniewicz et al. | Sep 2004 | A1 |
20040177355 | Wragge | Sep 2004 | A1 |
20040210893 | Chamberlain et al. | Oct 2004 | A1 |
20040243994 | Nasu | Dec 2004 | A1 |
20040249919 | Mattheis | Dec 2004 | A1 |
20040255291 | Sierer et al. | Dec 2004 | A1 |
20040261053 | Dougherty et al. | Dec 2004 | A1 |
20050010547 | Carinci et al. | Jan 2005 | A1 |
20050108704 | Marinelli et al. | May 2005 | A1 |
20050120106 | Alberto | Jun 2005 | A1 |
20050172283 | Delo | Aug 2005 | A1 |
20050204356 | Sandarajan et al. | Sep 2005 | A1 |
20050216906 | Shahindoust et al. | Sep 2005 | A1 |
20050262076 | Voskuil | Nov 2005 | A1 |
20050289538 | Black-Ziegelbein et al. | Dec 2005 | A1 |
20060010435 | Jhanwar et al. | Jan 2006 | A1 |
20060041572 | Maruyama | Feb 2006 | A1 |
20060048134 | Napier et al. | Mar 2006 | A1 |
20060048136 | Vries et al. | Mar 2006 | A1 |
20060080656 | Cain et al. | Apr 2006 | A1 |
20060161915 | Barr et al. | Jul 2006 | A1 |
20060174223 | Muir et al. | Aug 2006 | A1 |
20060230397 | Cook et al. | Oct 2006 | A1 |
20060232663 | Gandhi et al. | Oct 2006 | A1 |
20060265706 | Isaacson et al. | Nov 2006 | A1 |
20070055766 | Petropoulakis et al. | Mar 2007 | A1 |
20070256068 | Barr et al. | Nov 2007 | A1 |
20070256072 | Barr et al. | Nov 2007 | A1 |
20080028389 | Genty et al. | Jan 2008 | A1 |
20080172664 | Barr et al. | Jul 2008 | A1 |
Number | Date | Country |
---|---|---|
1 594 055 | Sep 2005 | EP |
2 416 046 | Nov 2006 | GB |
WO 2007133347 | Nov 2007 | WO |
Entry |
---|
“Impersonate a client after authentication” published Jan. 21, 2005. Http://msdn.microsoft.com/en-us/library/cc787897.aspx. |
How to: Use Windows Authentication in ASP.NET 2.0: published Aug. 2005 by J.D. Meier, Alex Machman, Blaine Wastell, Prashant Bansode, Andy Wigley, Kishore Gopalan. Http://msdn.microsoft.com/en-us/library/ff647405.aspx. |
“Waiting to Install” published Jan. 23, 2006 by Heath Stewart. Http://blogs.msdn.com/b/heaths/archive/2006/01/23/516454.aspx. |
Gentleman, “Managing Configurability in Multi-installation Realtime Programs”, Proceedings of the Canadian Conference on Electrical and Computer Engineering, Vancouver, B.C., Nov. 3-4, 1989, pp. 823-827. |
Touesnard, Brad. “Design of a Universal Web Application Installer.” (2005), pp. 1-18. |
Dearle, Alan. “Software deployment, past, present and future.” 2007 Future of Software Engineering. IEEE Computer Society, 2007, pp. 1-16. |
CN Office Action, dated Jun. 10, 2010, mailed in Application No. 200780015940.6 pp. 1-9. |
U.S. Office Action dated Jan. 10, 2011, in U.S. Appl. No. 11/414,998, pp. 1-17. |
Coupaye, T. et al., “Foundations of enterprise software deployment”, Software Maintenance and Reengineering, 2000. Proceedings of the Fourth European Feb. 29 through Mar. 3, 2000, pp. 65-73. http://ieeexplore.ieee.org/search/wrapper.jsp?arnumber=827313. |
DameWare MSI, “Windows Installer Options for Dameware MSI Files”, Nov. 10, 2004, pp. 1-4 <Dameware—MSI—04.pdf>; 3 pgs. |
Dillinger, M. et al., “Decentralized software distribution for SDR terminals”, Apr. 2002, IEEE, vol. 9, Issue 2, pp. 20-25. |
Dolstra, E. et al., “Imposing a memory management discipline on software deployment”, Proceedings 26th Intn'l Conference on May 23-28, 2004. pp. 583-592. http://ieeexplore.ieee.org//search/wrapper.jsp?arnumber=1317480. |
Koivunen, Erka et al., “Policy Management in Windows NT”, Original Version Nov. 29, 1999, Revised Jan. 10, 2000, 21 pgs., http://www.tml.tkk.fi.Opinnot/Tik-110.501/1999/papers/policynt/policynt.html. |
Sahin, I. et al., “Policy analysis for warranty, maintenance, and upgrade of software systems”, Journal of Software Maintenance and Evolution: Research and Practice, vol. 13, Issue 6, pp. 469-493, published online Dec. 13, 2001. http://www3.interscience.wiley.com/cgi-bin/abstract/8513464/ABSTRACT. |
EP Communication mailed Sep. 6, 2009, cited in Application No. 07 754 734.7, pp. 1-6. |
European Search Report dated Sep. 14, 2007, Application No. PCT/US2007/008257, pp. 1-7. |
European Search Report dated Apr. 6, 2009, Application No. PCT/US2007/008257, pp. 1-8. |
Office Action mailed Jul. 8, 2010, cited in U.S. Appl. No. 11/414,998, pp. 1-17. |
U.S. Official Action dated Aug. 16, 2010 in U.S. Appl. No. 11/415,329, pp. 1-25. |
Tobias Oetiker et al., “SEPP—Software Installation and Sharing System,” originally published in the Proceedings of the Twelfth Systems Administration Conference (LISA '98), Boston, Massachusetts, Dec. 6-11, 1998, http:/www.usenix.org/event/lisa98/full—papers/oetiker2/oetiker2.pdf. |
Simon George et al., “Automated Software Packaging and Installation for the ATLAS Experiment,” http://www.pp.rhul.ac.uk/hep/pubs2/2003/—grid03-09.pdf. |
Quick Tour of WinINSTALL 7.5, QT18: Advertising Software for Installation, Jul. 2003, pp. 1-8, http://ondemandsoftware.com/qts/guides/QuickTours/Quick Tours/QT18—DistSW—Advertising.doc. |
Using InstallAware 6 to Deploy Microsoft.NET Framework Applications, Jun. 2006, pp. 1-27, http://www.installaware.com/installaware—deploy—dotnet.pdf. |
V. N. Venkatakrishnan et al. “An Approach for Secure Software Installation,” Computer Science Department, Suny at Stony Brook, pp. 219-226 of the Proceedings of LISA '02: Sixteenth Systems Administration Conference (Berkeley, CA USENIX Association, 2002), http://www.usenix.org/events/lisa02/tech/full—papers/venkatakrishnan/venkatakrishnan.pdf. |
Kenneth Manheimer et al., “The Depot: A Framework for Sharing Software Installation Across Organizational and UNIX Platform Boundaries,” LISA IV, Oct. 17-19, 1990, Colorado Springs, Colorado, pp. 37-46, http://citeseer.ist.psu.edu/cache/papers/cs/3989/ftp:zSzzSzftp.stna.dgac.frzSzpubzSzsystemzSzadminzSzdepotzSzlisa-paper.pdf/manheimer90depot.pdf. |
U.S. Office Action dated Apr. 12, 2011 in U.S. Appl. No. 11/623,191, 37 pgs. |
U.S. Office Action dated Jul. 7, 2011, in U.S. Appl. No. 11/414,998, 18 pgs. |
U.S. Office Action dated Jan. 25, 2012, in U.S. Appl. No. 11/414,998, 22 pages. |
U.S. Office Action dated Oct. 13, 2011 in U.S. Appl. No. 11/623,191, filed Jan. 15, 2007, Applicant name: Barr et al., 35 pages. |
U.S. Office Action dated Jan. 2, 2013, in U.S. Appl. No. 11/623,191, 38 pages. |
U.S. Office Action mailed May 29, 2013 in U.S. Appl. No. 11/623,191, 36 pages. |
U.S. Office Action dated Jun. 5, 2012, in U.S. Appl. No. 11/623,191, 42 pages. |
Number | Date | Country | |
---|---|---|---|
20080172736 A1 | Jul 2008 | US |