具体实施方式
本文描述便携式应用程序。一个或多个应用程序被安装在便携式存储设备上。当便携式存储设备被插入或者耦合到一计算机,该设备上所安装的便携式应用程序被自动检测,并可随同用户可能存储在该设备上的任何数据供用户使用。便携式应用程序不改变计算机上的任何环境设置,并且数据文件仍然保持在便携式存储设备上。用户从而可访问他或她所需要的应用程序,与此同时在他或她结束计算机的使用之后,不会导致环境设置的改变,也不会遗留任何数据文件。
图1所示是可使用便携式应用程序的示例性环境的框图。环境100包括便携式存储设备102和主计算机104。便携式存储设备102可被耦合到主计算机104以及多个其它计算机(图1中未示出),并可轻易地从其移除。便携式存储设备102可使用各种协议中的任何一种与主计算机104通信。例如,设备102可使用诸如USB版本1.0或版本2.0等通用串行总线(USB)连接,或使用诸如IEEE1394a或1394b等IEEE1394连接(有时称为固件),或使用个人计算机存储卡国际协会(PCMCIA)连接耦合到计算机104。或者,设备102可使用各种其它公有或私有的连接协议中的任何一种耦合到计算机104。
用来将设备102耦合到计算机104的连接协议通常是“即插即用”连接协议。即插即用连接协议指允许主计算机自动检测并将其自身配置成访问连接到该主计算机的外围设备的协议。当外围设备被插入到计算机104,计算机104可自动标识并安装在计算机104上运行所需的任何设备驱动器或其它模块,以使在计算机104上运行的程序能访问外围设备。
便携式存储设备102包括接口106以及一个或多个存储元件108,而计算机104包括处理器120、系统存储器122(例如,随机存取存储器(RAM))、以及接口124。接口106和124允许设备102和计算机104根据连接协议相互传递信号。这些信号可以是数据信号和/或命令信号。
一个或多个存储元件108可由一个或多个各种不同类型的存储元件(诸如一个或多个闪存、一个或多个硬磁盘驱动器(例如,微驱动器)、一个或多个光盘驱动器、等等)组成。一个或多个存储元件108包括应用程序部分110和数据部分112。应用程序部分110可存储一个或多个便携式应用程序,它们可由计算机104的处理器120执行。便携式应用程序是被设计成从存储元件108运行、并且即使应用程序包括访问系统设置的请求也不会改变主计算机104上的任何环境设置的应用程序。如以下将更详细讨论的,便携式应用程序通常也被绑定到便携式存储设备102。
数据部分112可存储一个或多个应用程序的数据。存储在部分112中的数据可供存储在部分110中的便携式应用程序和/或其它应用程序使用。
计算机104的处理器120与系统存储器122和接口124通信以执行包括存储在存储元件108中的应用程序在内的应用程序。存储在应用程序部分110中的每一个应用程序都是可由处理器120执行(称为执行或运行该应用程序)的一个指令集。这些指令可由处理器120直接从存储元件108加载并执行,或者可在由处理器120加载和执行以前被转移到系统存储器122中。还可在由处理器120执行这些指令以前将这些指令从存储元件108转移到计算机104中的一个或多个高速缓存存储器中。
可通过将便携式存储设备102插入到计算机104,来将其耦合到计算机104。此设备102到计算机104的耦合可以是直接连接或间接连接。便携式存储设备102可被直接连接到计算机104,诸如设备102上的插孔或连接器被插入到计算机104上的插孔或连接器。便携式存储设备102还可被间接地连接到计算机104,诸如通过一条或多条电缆或延长线路、一个或多个其它控制器(例如,USB集线器)、一个或多个其它外围设备等方式。计算机104和便携式存储设备102之间的耦合可以是有线和/或无线的耦合。便携式存储设备102被称为便携式,因为它被设计成可由终端用户轻易地耦合到一个或多个计算机104,并可轻易地从其去耦合,并且可由用户轻易地运送。
当便携式存储设备102被耦合到计算机104时,计算机104自动检测设备102的存在。此检测是作为例如即插即用连接协议的一部分来执行的。一旦被检测到,便携式存储设备102即可被计算机104上执行的应用程序和操作系统访问,以进行数据存储和应用程序执行。
在便携式存储设备102被检测到以后,计算机104自动访问设备102,并可运行存储在应用程序110部分中的任何应用程序,和/或给予计算机104的用户运行存储在应用程序部分110中的任何应用程序的选择。数据部分112也可被计算机104访问,以允许计算机104检索存储在部分112中的任何数据,以及将新的数据存储到部分112中。
许多当今的操作系统包括适当的设备驱动器以允许访问便携式存储设备。如果当便携式闪存设备102被耦合到计算机104时这些设备驱动器未被安装,则安装这些设备驱动器(例如,作为即插即用控制协议的一部分)。但是,应当注意,不需要在主计算机104上安装任何其它的设备驱动器或其它驱动器或软件以使便携式存储设备102上的便携式应用程序被执行。例如,不需要在主计算机104上安装专属于任何特定便携式应用程序的、或便携式应用程序通用的驱动程序。
图2更详细地示出一种示例性便携式存储设备。便携式存储设备102包括接口106以及一个或多个存储元件108。存储元件108包括自动运行模块160、一个或多个应用程序文件162、专用存储164、专用本地概况166、以及数据区168。数据区168包括在图1的数据部分112中,而应用程序文件162包括在图1的应用程序部分110中。自动运行模块160通常包括在应用程序部分110中,尽管模块160或可包括在数据部分112中。专用存储164和专用本地概况166通常都包括在数据部分112中,尽管存储164和概况166或可包括在应用程序部分110中。
应当注意,便携式存储设备102不包括用于执行便携式应用程序的处理器。便携式存储设备102不是便携式或手持式计算机,相反,便携式存储设备102是存储设备。但是,在某几个实施例中,便携式存储设备102可包括为安全目的或加密使用的处理器,但该处理器并非用于执行存储在便携式存储设备102上的便携式应用程序。
自动运行模块160被执行以访问存储在便携式存储设备102上的应用程序。自动运行模块160是用哪些应用程序被存储在便携式存储设备102上的知识,或者用如何确定哪些应用程序被存储在便携式存储设备102上(诸如通过访问包括该信息的数据文件,扫描存储元件108以寻找应用程序模块,等等)、以及如何执行这些应用程序的知识来编程的。自动运行模块160随即可向便携式存储设备102所耦合到的主设备上的操作系统标识哪些应用程序162应被加载并执行,以执行所期望的应用程序。所期望的应用程序可由例如用户选择,或可被自动编程到自动运行模块160中。
自动运行模块160可选地现实用户界面,该用户界面向用户呈现用于与便携式存储设备102交互的各种选择。这些选择可包括,例如,存储在便携式存储设备102上并可由用户运行的的应用程序列表,以及存储在便携式存储设备102上并可由用户访问(例如,读取、删除、复制、等等)的数据文件列表。用户界面还可担当用户拖放文件图标、以将对应文件复制到便携式存储设备102中的目的地。用户界面还可支持浏览功能,从而控制便携式存储设备102所耦合到的主设备上的操作系统,以允许用户访问便携式存储设备102以及主设备的其它存储设备、甚至经由一个或多个网络耦合到主设备的其它存储设备上的不同文件夹或目录。
自动运行模块160还允许特定文件类型与设备102的特定便携式应用程序相关联。例如,一类文件可以是文件名以“.doc”结尾的文件,它们可与文字处理便携式应用程序相关联,而另一类文件可以是文件名以“.xls”结尾的文件,它们可与电子数据表便携式应用程序相关联。特定文件类型到特定便携式应用程序的关联可在自动运行模块160内,在专用存储164中、或者设备102上的其它地方维护。特定文件类型与特定便携式应用程序的关联是由设备102(例如,由自动运行模块160使用存储在专用存储164中的数据),而不是由设备102所耦合的主设备实现的。
将特定文件类型与特定便携式应用程序相关联允许自动运行模块160在相关联类型的文件被用户选择时(例如,由用户双击表示文件的图标、由用户使用键盘来导航到表示文件的图标或文件名,等等)自动运行正确的便携式应用程序。例如,如果文件名以“.doc”结尾的文件与文字处理便携式应用程序相关联,那么如果用户选择“MyReport.doc”,则自动运行模块160可自动运行文字处理便携式应用程序并将MyReport.doc文档加载到文字处理便携式应用程序中。
将特定文件类型与特定便携式应用程序相关联还允许自动运行模块160以其用户界面的部分的形式呈现表示特定类型文件的特定图标。例如,可为所有文件名以“.doc”结尾的文件显示标识文字处理便携式应用程序的特定图标。为特定文件类型显示的特定图标可在自动运行模块160内、在专用存储164中、或在设备102上的其它地方维护。
在某几个实施例中,自动运行模块160由便携式存储设备102所耦合到的主设备的操作系统自动加载并执行。在这些实施例中,主设备上的操作系统被配置成在检测到便携式存储设备被耦合到主设备时随时自动搜索自动运行模块160。例如,操作系统可搜索存储元件108或存储元件108上特定的一个或多个文件夹或文件目录,以寻找具有特定名称(诸如“Autorun.inf”)的自动运行模块,访问存储元件108的特定已知位置,等等。当找到自动运行模块160时,操作系统执行自动运行模块160中的指令。
或者,能以其它方式启动自动运行模块160的执行。例如,主设备的用户能以常规方式通过操作系统访问便携式存储设备102,而不是在便携式存储设备102被耦合到主设备时自动运行模块160。用户随即可通过导航存储在存储元件108上的所有目录或文件并选择要执行的文件名或图标(例如,通过双击文件名或图标)来定位对应于自动运行模块160的文件名或图标。
在一些替换实施例中,用户(或者另一个应用程序或操作系统)可手动地导航存储在存储元件108上的所有目录或文件夹以标识要执行的便携式应用程序,而不是使用自动运行模块160。例如,如果主计算机104在运行Windows操作系统中的一种,则用户可使用Windows操作系统浏览器来手动搜索存储元件108中的所有文件夹。
应用程序文件162包括用于运行便携式应用程序的若干指令,以及用于运行便携式应用程序的任何相关联的数据文件,其中这些指令可被组织成一个或多个应用程序模块。应用程序文件162是存储在便携式存储设备102上的可执行文件,以及便携式应用程序其它相关联的文件。为了运行便携式应用程序,由主计算机执行这些可执行文件中的一个或多个。各种不同应用程序中的任何一种都可作为便携式存储设备102上的便携式应用程序被包括。此类应用程序的例子包括文字处理应用程序、电子数据表应用程序、数据库应用程序、演示应用程序、参考应用程序、游戏应用程序、电子邮件(email)客户程序、等等。这些应用程序可以是被设计成安装在台式计算机上并在其上运行的相同应用程序的便携式版本。例如,可有MicrosoftWord文字处理应用程序的便携式版本。便携式版本与其对应的台式版本相比功能可能有所减少。例如,应用程序中的某个功能在便携式应用程序中可能不让其自身工作,诸如要求扩展名被注册到主设备的系统注册表中(这将改变环境设置,而便携式应用程序不作此类改变,如以下将详细讨论)的功能等。
许多操作系统使用系统信息存储来维护计算机上运行的操作系统以及计算机上安装的应用程序的数据。在MicrosoftWindows操作系统家族中,此类系统信息存储通常被称为系统注册表。系统注册表可存储,例如设备和应用程序配置设置、文件类型(例如,基于其扩展名)与特定应用程序的关联、用户偏好、性能调整参数、等等。通常,在计算机上安装应用程序期间,有关应用程序的配置设置的各种信息被写到系统信息存储中。相反,对于便携式存储设备102上的便携式应用程序而言,此类设置不被写到系统信息存储中。
为使便携式应用程序与其它应用程序通信,而无须在系统信息存储中维护关于便携式应用程序的信息,便携式应用程序利用环境的运行时查询。环境的运行时查询指一种应用程序可发布有关其它哪个(些)应用程序提供特定功能的查询的技术。响应于此类查询,如果一便携式应用程序提供该功能,则该便携式应用程序用标识如何调用该功能的信息响应于该查询。此查询通常通过操作系统来代理,因此不是一个应用程序直接查询另一个应用程序,而是应用程序查询操作系统,后者进而查询其它应用程序并将该查询的结果返回给该应用程序。因此,可查询应用程序以获得关于如何调用该特定功能的信息,而不是检查系统信息存储以寻找有关如何调用便携式应用程序的特定功能的信息。
尽管关于便携式应用程序的数据不被写到系统信息存储中,但是便携式应用程序本身可被设计成访问信息存储,包括将数据写到信息存储中,及从信息存储中读取数据。为了适应此类访问,在便携式存储设备102上包括专用存储164。专用存储164维护便携式应用程序的设置信息——通常在主计算机的系统信息存储中维护的设置信息被改为在专用存储164中维护。可为每个便携式应用程序维护单独的专用存储164,或者可为便携式应用程序集合或一组便携式应用程序维护单个专用存储164。
每个便携式应用程序都被设计成访问专用存储164,而不是主计算机上的系统信息存储。因此,便携式应用程序可能写到信息存储中的任何数据是作为便携式应用程序文件被写到同一便携式存储设备102上的专用存储164中,因此主计算机上的系统信息存储不会被写入用于任何便携式应用程序的配置或其它数据。在主计算机包括系统注册表的某些实现中,因为便携式应用程序访问专用存储164而不是系统注册表,所以专用存储164还可被称为专用注册表。
便携式应用程序可被设计成以不同方式访问专用存储164而不是主计算机上的系统信息存储。在某些实施例中,主计算机上的系统信息存储包括应用程序编程接口(API),它具有可由应用程序调用以访问系统信息存储的多个接口。此访问可包括,例如从信息存储中读取值,将值写到信息存储中,将值从信息存储中删除,在信息存储中修改值,等等。专用存储164包括具有类似接口的类似的API,这些接口通常和系统信息存储的接口执行相同的功能,但它们具有不同的名称,并且在专用存储164、而不是在系统信息存储上操作。在某些实现中,便携式应用程序调用这些专用存储接口,而不是系统信息存储接口。
在其它实现中,便携式应用程序通过中介访问专用存储接口。单个中介可作为一个便携式应用程序,或者便携式应用程序集合或一组便携式应用程序的中介。便携式应用程序中想要访问存储的各个功能和指令与中介所给出的API交互。中介进而与专用存储所给出API交互。这一具有中介的结构对程序设计者而言可能是有帮助的,因为设计者可设计应用程序功能和指令,而无须考虑该应用程序会是访问系统信息存储的非便携式应用程序,还是访问专用存储的便携式应用程序,从而设计两个中介(一个用于访问专用存储的便携式应用程序,另一个用于访问系统信息存储的非便携式应用程序)。
在某些情况中,便携式应用程序可能需要或想要从存储中检索先前没有存储在专用存储164中的信息。在此类情况中,便携式应用程序(或中介)可访问主计算机上的系统信息存储以读取所需信息。此类信息通常不是专属于一个或多个便携式应用程序的信息,而是关于主计算机的一般信息。便携式应用程序(或中介)被设计成知道对于便携式应用程序所需的特定信息而言,是应访问系统信息存储以获取该特定信息,还是应访问专用存储164以获取该特定信息。但是,注意,要被写到存储中、或从存储中删除的任何信息不会被写到系统信息存储中或从系统信息存储中删除。
或者,当便携式存储设备102被耦合到主计算机时,该主计算机的系统信息存储中的信息可被复制到专用存储164中,尽管已经在专用存储164中的任何数据不会被此复制所覆盖。因此,在此替换实施例中,不应出现便携式应用程序访问先前没有存储在专用存储164中的信息的情况。在其它替换实施例中,专用存储164可用默认值来预编程或配置,这些默认值被使用,直至它们为便携式应用程序所覆盖。
类似与专用存储164,便携式存储设备102还包括专用本地概况166。专用本地概况166存储便携式存储设备102的用户的本地概况,该本地概况存储各种用户设置和偏好信息。通过保存此类信息,便携式存储设备102允许用户定制他或她的体验,并且即使他或她可能在多个不同的主计算机上使用该便携式存储设备102,该定制仍被保持。可为每个便携式应用程序维护单独的专用本地概况166,或者可为便携式应用程序集合或一组便携式应用程序维护单个专用本地概况166。
使用专用本地概况166,而不是通常在主计算机上找到的本地概况来存储此类信息。类似于专用存储164,专用本地概况166由便携式应用程序可选地经由代表便携式应用程序的中介来访问,基于便携式应用程序所请求的动作,所请求的数据被适当地检索、写入、删除、修改、等等。专用本地概况166以及任何中介可给出类似于以上关于专用存储164的讨论的API。
在某些实施例中,在被读取的数据不在专用本地概况166中的情况下,对本地概况的读访问被定向(例如,由中介)到存储在主计算机上的本地概况。或者,存储在主计算机上的本地概况可被复制到专用本地概况166,尽管专用本地概况166中已经存在的任何设置的数据不会被此复制过程所覆盖。在其它替换实施例中,专用本地概况166可用默认值来预编程或配置,这些默认值被使用,直至它们被便携式应用程序所覆盖。
因此,通过在便携式存储设备102上维护应用程序文件以及应用程序数据、信息存储数据和本地概况数据,不需要对主计算机作任何永久性改变。当执行、或为了执行便携式存储设备102上的便携式应用程序时,不对主机上的计算机系统信息存储或主计算机上的本地概况作任何改变。存储在主计算机的系统信息存储和本地概况中的信息可被称为主计算机上的环境设置,当执行便携式应用程序时不对此环境作任何改变。此外,应用程序文件以及数据文件存储在便携式存储设备102上,因此没有任何应用程序文件或数据文件被写到主计算机中。
在某些实施例中,当执行便携式应用程序时,没有任何文件或环境设置被写到主计算机中。如果便携式应用程序在执行期间的确利用任何临时文件,则这些临时文件被存储在便携式存储设备102上,而不是主系统上。在替换实施例中,在便携式应用程序执行期间,一个或多个临时文件可被写到主计算机中。在执行期间将临时文件写到主计算机中的便携式应用程序在该应用程序执行被终止时,删除那些临时文件,作为关闭其自身的一部分。或者,便携式应用程序可依靠诸如主计算机上的操作系统等另一个组件,在便携式应用程序停止运行时,或在有规律或无规律的时间间隔来删除那些临时文件。
此外,在某些实施例中,便携式存储设备102可能具有特定的主计算机,与之同步数据文件。此“起始”或“基础”主计算机上、或者便携式存储设备102上的应用程序将检测便携式存储设备102何时被耦合到该起始或基础主计算机,然后检查是否已对数据区168中的数据文件作出任何修改(例如,基于数据文件的最后修改日期和时间,或者任何数据文件的添加或删除)。任何新文件,或最后修改日期和时间晚于起始或基础主计算机上的最后修改日期和时间的任何文件随即被复制到起始或基础主计算机上。用户可选地被提示认证他或她想要这一同步发生。
图3所示是一种用于执行便携式应用程序的示例性过程200的流程图。过程200由便携式存储设备所耦合到的主计算机执行。过程200可在软件、固件、硬件、或其组合中实现。
开始,主计算机检测便携式存储设备(动作202)。如以上所讨论,此检测在便携式存储设备被插入或者耦合到主计算机时被自动执行。
主计算机随即标识便携式存储设备上的便携式应用程序(动作204)。如以上所讨论,此标识可由主计算机自动执行,或可由导航到便携式存储设备的用户手动执行。随后可选地向用户呈现运行所标识的便携式应用程序的选择(动作206)。如以上所讨论,可向用户显示用户界面,以允许用户选择他或她想要运行哪个(些)便携式应用程序。或者,主计算机可自动选择运行便携式存储设备上便携式应用程序中的一个或多个。
所标识的便携式应用程序随即在主计算机上运行,而不改变主计算机上的任何环境设置(动作208)。如以上所讨论,在便携式存储设备上维护专用存储和专用本地概况,因此在便携式应用程序的执行期间,不需要对存储在主计算机上的系统信息存储或概况作任何改变。
回到图2,一些应用程序制造商用来确保用户满足许可义务的一种当前的技术是,要求用户在将应用程序安装到用户的计算机上以后激活该应用程序。应用程序通常要求在特定时间范围之内(诸如在第一次运行该应用程序后的特定天数之内,或者在运行该应用程序某个次数以前)执行此激活。激活过程将应用程序绑定到特定计算机,以将应用程序的特定副本与特定计算机相关联。激活过程通常涉及用户或其它个人输入随应用程序副本所附的字母数字序列或密钥。如果在所要求的时间范围之内应用程序未被成功激活,则该应用程序或者不能被运行,或者只能在功能有所减少的状态下运行(例如,没有某些特征或功能性部分),直至该应用程序被成功激活。
通过维护应用程序的特定副本与特定计算机的关联,应用程序制造商可检测是否有任何将应用程序的同一副本绑定到多个计算机的企图。如果像时常出现的情形那样,在多个计算机上使用应用程序的同一副本违反许可协议,则副本在第二或后续的计算机上的激活可被拒绝,许可协议的条款得到支持。
但是在便携式应用程序的实例中,将应用程序绑定到特定计算机的激活技术是不合乎需要的,因为便携式应用程序的基本概念之一就是其上存储便携式应用程序的便携式存储设备可被轻易地从一个计算机移到另一个计算机,并在两个计算机上运行。因此,在便携式应用程序的实例中,便携式应用程序被绑定到便携式存储设备,而不是特定计算机。
通过使用便携式存储设备的标识符来将便携式应用程序绑定到便携式存储设备。这一标识符被设计成两个不同的便携式存储设备很不可能具有相同的标识符。因此,这一标识符可被用来确定是否有将同一应用程序绑定到多个不同的便携式存储设备的企图。
便携式存储设备的标识符能以不同方式生成。标识符可由制造商分配,并在制造过程期间,或作为制造商所使用的预配置过程的一部分被包括到便携式存储设备中。标识符可被包括在便携式存储设备的非可重写部分(诸如使用可被写一次,但不可被擦除或重写的存储器的部分)中,以使其以后不会被修改。
或者,便携式存储设备的标识符可以是设备的签名,该签名是基于便携式存储设备的各个硬件方面。此签名可由便携式存储设备上的应用程序(诸如由被激活的便携式应用程序或由某个其它应用程序)生成。签名可被存储在便携式存储设备上以供后续使用,或可在每次需要它时重新生成。或者,签名可由某个其它组件(例如,由便携式存储设备的制造商的系统)生成,并存储在便携式存储设备上。
在其它替换方案中,便携式存储设备的标识符从便携式存储设备上的处理组件直接或间接传达。例如,处理组件可包括能执行公钥加密操作的加密处理器。一个质询(例如,字母数字符号和/或其它符号序列)可从请求者(诸如将便携式应用程序绑定到便携式存储设备的设备或服务)向加密处理器传达。加密处理器使用加密处理器的私钥将质询加密,并将已加密的质询返回给请求者。请求者随即可使用加密处理器的已知公钥来认证加密处理器的身份,从而认证该加密处理器所驻留的便携式存储设备的身份。因为每一个加密处理器都有不同的公钥/私钥对,所以不同的便携式存储设备可被分别标识。
一旦被激活,信息即可被写回便携式存储设备中,从而便携式存储设备上的便携式应用程序知道它已被成功激活。或者,便携式应用程序不是将此类数据写回便携式存储设备中,而是使用主计算机的网络连接来访问服务器(例如,经由因特网),以检查该应用程序是否已被成功激活。
图4所示是一种用于激活便携式应用程序的示例性过程250的流程图。过程250可在软件、固件、硬件、或其组合中实现。
开始,获得设备标识符和便携式应用程序密钥(动作252)。设备标识符可通过检索先前存储到便携式存储设备中的标识符,或者通过生成标识符(例如,如以上所讨论的便携式存储设备的签名)来获得。便携式应用程序密钥能以不同方式获得,但通常由用户手动将密钥输入到便携式存储设备所耦合到的主计算机中来获得。当购买便携式应用程序或已安装便携式应用程序的便携式存储设备时,此密钥可被包括在例如包装中。便携式应用程序的每一个副本通常都被分配一个不同的密钥。
随即向激活服务传达设备标识符和便携式应用程序密钥(动作254)。激活服务是在一个或多个设备上实现的服务,它负责确定便携式应用程序是否已被绑定到最大允许个数的设备。此确定是通过分析先前激活的应用程序的记录,并检查便携式应用程序密钥是否已与最大允许个数的设备相关联(基于与便携式应用程序相关联的许可)来作出的。激活服务还负责确定便携式应用程序密钥的有效性。便携式应用程序密钥的有效性能以各种方式中的任何一种来确定,诸如有有效密钥列表,有处理便携式应用程序密钥以确定有效性的算法,等等。
然后过程250基于便携式应用程序的激活是否成功来继续前进(动作256)。如果便携式应用程序密钥尚未被绑定到最大允许个数的设备(或如果该便携式应用程序密钥先前曾被绑定到此设备标识符),并且便携式应用程序密钥是有效密钥,则激活是成功的。但是,如果便携式应用程序密钥已被绑定到最大允许个数的设备,或如果便携式应用程序密钥不是有效密钥,则激活是不成功的。
如果激活是成功的,则激活服务维护该便携式应用程序密钥与该设备标识符相关联的记录(动作258)。便携式应用程序已被激活的指示被返回给便携式应用程序,且便携式应用程序已被激活的指示也可被存储在便携式存储设备中,如以上所讨论。此指示可以是,例如特定标识符或数据值、其真实性可由便携式应用程序使用加密算法来认证的数字证书、等等。但是,如果激活是不成功的,则激活失败(动作260),且激活已失败的指示被返回给便携式应用程序。
回到图2,便携式应用程序可被预安装在便携式存储设备102上,或可由用户安装。便携式应用程序可由便携式存储设备102的制造商,或由某个其它实体(例如,转售者、发行者、制造商所雇佣的第三方等等)预安装。因此,用户将购买其上已存储有一个或多个便携式应用程序的便携式存储设备102。或者,一个或多个便携式应用程序可由用户安装到便携式存储设备102上。例如,用户可购买盘上的便携式应用程序,或通过网络(诸如因特网等)购买便携式应用程序,并将所购买的应用程序安装到便携式存储设备102上。
在安装过程期间,无论安装过程是由便携式存储设备102的购买者还是由某个其它个人执行,必要的文件都作为应用程序文件112被复制到存储元件108中,且对那些文件任何必要的改变或配置都被执行。此外,通常作为安装过程的一部分会被写到系统信息存储中的任何信息改为被写到专用存储164中。通常,执行建立文件以安装便携式应用程序。当执行建立文件时,它执行这些各种功能以安装应用程序。
图5所示是一种用于将便携式应用程序安装在便携式存储设备上的示例性过程280的流程图。过程280可在软件、固件、硬件、或其组合中实现。
开始,接收将便携式应用程序安装到便携式存储设备上的请求(动作282)。此请求可以是手动的用户选择,诸如用户双击“安装”或“建立”图标,或者将一个或多个文件(诸如“安装”或“建立”文件或图标)从源介质拖放到便携式存储设备。或者该请求可以是某个其它动作中所固有的,诸如将安装盘插入到便携式存储设备所耦合到的同一计算机中,或将便携式存储设备耦合到特定计算机(例如,在制造商或某个其它第三方位置处)等。
响应于该请求,便携式应用程序的一个或多个应用程序文件被写到便携式存储设备中(动作284)。这些应用程序文件是,例如图2的应用程序文件162。应用程序文件随即被适当地配置(动作286)。作为安装过程的一部分,需要什么配置(如果有的话)可能根据不同的便携式应用程序而改变。所需的任何此类配置通常在与便携式应用程序相关联的安装文件中被标识(这通常实现过程280)。
除了配置应用程序文件以外,自动运行模块160还可在动作286中被配置。自动运行模块160的这一配置包括向自动运行模块160添加标识便携式存储设备上存在便携式应用程序的信息,以及关于如何执行该便携式应用程序的信息(例如,要执行哪个(些)文件以开始运行该便携式应用程序,存储了该便携式应用程序的那些文件夹文件,等等)。
关于便携式应用程序的信息随即被写到便携式存储设备上的专用存储中(动作288)。写到专用存储中的信息可以是关于便携式应用程序的任何信息,诸如应用程序的配置设置,在应用程序运行时提高其性能的性能调整参数,哪些文件类型与该便携式应用程序相关联(例如,从而为该类型的文件显示正确的图标,以向用户可视化地标识这些文件与该便携式应用程序相关联),等等。如以上所讨论,此类信息被写到便携式存储设备上的专用存储中,而不是该便携式存储设备所耦合到的计算机上的系统信息存储中。在一些情况中,第一次为特定的便携式存储设备执行动作288时,专用存储可能尚未被创建。在此类情形中,作为动作288的一部分,在便携式存储设备上创建专用存储。
应当注意,在替换实施例中,安装过程可能有所不同。例如,在一个或多个文件从源介质被复制到便携式存储设备中处可使用拖放技术。又如,可创建包括所有可执行文件、专用存储、专用本地概况和自动运行模块的存储元件的映像,如其在便携式应用程序的安装以后应存在的形式,而不是从诸如安装文件来执行安装过程280。然后此映像可被简单地复制到便携式存储设备的存储元件上,结果形成具有所有所需的可执行文件、以及用适当数据填充的专用存储和/或专用本地概况的便携式存储设备。这一预生成映像并将该映像复制到便携式存储设备上的过程通常为便携式存储设备的制造商,或者制造、发送或销售用相同便携式应用程序配置的大量便携式存储设备的第三方所使用。
回到图2,应当注意,尽管图示存储元件108中包括模块160、文件162、存储164、概况166以及数据区168,但是这些组件中的一个或多个,或者一个或多个这些组件的部分可存储在不同类型的存储器中。例如,可使用非可重写只读存储器,而不是可重写存储元件来存储一个或多个组件或其部分。可被存储在非可重写只读存储器中的组件或其部分将是不可改变的组件或部分,诸如应用程序的特定指令(应用程序文件162的全部或一部分)、本文中所讨论的自动运行功能的指令(自动运行模块160的全部或一部分)、等等。
此外,应当注意,便携式存储设备102可以是各种不同设备中的任何一种。例如,便携式存储设备102可以是便携式USB闪存存储设备、便携式硬盘驱动器设备、或包括闪存或其它存储元件的某种其它设备,诸如数字摄像机等。
因此,可以看到,本文中所讨论的便携式应用程序允许便携式存储设备上的应用程序有简单易行的便携性。可简单地通过将便携式存储设备插入、或将便携式存储设备耦合到不同的主计算机,在不同主计算机上运行便携式应用程序。对主计算机中的任何一个的环境设置都不作任何改变,也不在主计算机中的任何一个上安装任何文件。因此,即使便携式应用程序在主计算机上运行,该主计算机上的环境设置仍保持原样,并且用户的隐私被保持,因为便携式应用程序不会遗留可能泄漏关于用户或者他或她曾处理的数据的信息的任何文件或设置。
图6示出可使用本文所述的便携式应用程序的通用计算机环境300。计算机环境300指示计算环境的一个示例,并不试图对计算机和网络体系结构的使用范围或功能提出任何限制。也不应将计算机环境300解释为具有涉及示例性计算机环境300中所示的任何组件或其组合的依赖性或要求。
计算机环境300包括计算机302形式的通用计算设备。计算机302可以是,例如图1的主计算机104。计算机302的组件可包括,但不限于,一个或多个处理器或处理单元304、系统存储器306、以及将包括处理器304在内的各种系统组件耦合到系统存储器306的系统总线308。
系统总线308标识若干类型的总线结构中的一种或数种,包括存储器总线或存储器控制器、外围总线、加速图形端口、使用各种总线体系结构中的任何以后德宗处理器或局部总线。作为示例,此类体系结构可包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强的ISA(EISA)总线、视频电子标准协会(VESA)局部总线、以及也称为Mezzanine总线的外围组件互连(PCI)总线。
计算机302通常包括各种计算机可读介质。此类介质可以是计算机302可访问的任何可用介质,并包括易失性和非易失性介质、可移动和不可移动介质。
系统存储器306包括诸如随机存取存储器(RAM)310等易失性存储器形式的计算机可读介质,和/或诸如只读存储器(ROM)312等非易失性存储器。包含诸如在启动期间帮助在计算机302内的各元件之间传送消息的基本例程的基本输入/输出系统(BIOS)312存储在ROM312中。RAM310通常包含处理304即时可访问的、和/或当前正由其操作的数据和/或程序模块。
计算机302还可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。作为示例,图6示出用于读或写不可移动、非易失性磁介质(未示出)的硬盘驱动器316,用于读或写可移动、非易失性磁盘320(例如,“软盘”)的磁盘驱动器332,以及用于读和/或写诸如CD-ROM、DVD-ROM或其它光介质等可移动、非易失性光盘324的光盘驱动器322。硬盘驱动器316、磁盘驱动器332和光盘驱动器322每一个都由一个或多个数据介质接口326连接到系统总线308。或者,硬盘驱动器316、磁盘驱动器332和光盘驱动器322可由一个或多个接口(未示出)连接到系统总线308。还可将其它计算机存储介质作为计算机302的部分包括在内,诸如以上所讨论的便携式闪存设备。
磁盘存储及其相关联的计算机可读介质为计算机302提供计算机可读指令、数据结构、程序模块和其它数据的非易失性存储。尽管该例示出硬盘316、可移动磁盘320和可移动光盘324,应当认识到,还可利用诸如磁带盒或其它磁存储设备,闪存卡,CD-ROM、数字多功能盘(DVD)或其它光存储、随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)等能够存储可计算机可访问的数据的其它类型的计算机可读介质来实现该示例性计算系统和环境。
任何数量的程序模块可被存储在硬盘316、磁盘320、光盘324、ROM 312、和/或RAM310上,例如包括,操作系统326、一个或多个应用程序328、其它程序模块330、以及程序数据332。这些操作系统326、一个或多个应用程序328、其它程序模块330、以及程序数据332中的每一个(或其某种组合)可实现支持分布式文件系统的所有常驻组件或其中的一部分。
用户可经由诸如键盘334和定位设备336(例如,“鼠标”)等输入设备将命令和信息输入到计算机302中。其它输入设备338(未具体示出)可包括话筒、操纵杆、游戏垫、圆盘式卫星天线、串行端口、扫描仪、和/或其它。这些及其它输入设备经由耦合到系统总线308的输入/输出接口340连接到处理单元304,但也可通过诸如并行端口、游戏端口、通用串行总线(USB)或固件(IEEE1394)总线等其它接口或总线结构连接。
监视器342或其它类型的显示设备也可经由诸如视频适配器344等接口连接到系统总线308。除了监视器342之外,其它输出外围设备可包括诸如扬声器(未示出)和打印机346等可经由输入/输出接口340连接到计算机302的组件。
计算机302可使用到诸如远程计算设备348等一个或多个远程计算机的逻辑连接在联网中工作。作为示例,远程计算设备348可以是个人计算机、便携式计算机、服务器、路由器、网络计算机、对等设备、或其它普通网络节点、等等。图示远程计算设备348为可包括本文中相对于计算机302所描述的许多或所有元件和特征的便携式计算机。
图示计算机302和远程计算机348之间的逻辑连接为局域网(LAN)350和一般广域网(WAN)352。此类网络环境常见于办公室、企业范围的计算机网络、内联网、以及因特网。
当在LAN网络环境中实现时,计算机302经由网络接口或适配器354连接到局域网350。当在WAN网络环境中实现时,计算机302通常包括调制解调器356或用于通过广域网352建立通信的其它装置。可以内置或外置于计算机302的调制解调器356可经由输入/输出接口340或其它适当机制连接到系统总线308。应当认识到,所示网络连接是示例性的,且可使用在计算机302和348之间建立通信链路的其它装置。
在诸如计算环境300所示的联网环境中,相对于计算机302所示的程序模块或其部分可存储在远程记忆存储设备中。作为示例,远程应用程序358驻留在远程计算机348的存储器设备上。出于说明目的,本文中将应用程序及诸如操作系统等其它可执行程序组件示为离散的框,尽管可以认识到,这些程序和组件在各个时间驻留在计算设备302的不同存储组件中,并由计算机的数据处理器执行。
本文在由一个或多个计算机或其它设备执行的、诸如程序模块等计算机可执行指令的上下文中描述各种模块和技术。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。通常,在各个实施例中,可按序组合或分布各程序模块的功能。
这些模块和技术的一个实现可存储在某种形式的计算机可读介质上,或可通过其来发送。计算机可读介质可以是能被计算机访问的任何可用介质。作为示例,而非限制,计算机可读介质可包括“计算机存储介质”和“通信介质”。
“计算机存储介质”包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术,CD-ROM、数字多功能盘(DVD)或其它光存储,磁带盒、磁带、磁盘存储或其它磁存储设备,或可用来存储所需信息并可由计算机访问的任何其它介质。
“通信介质”通常具体化为诸如载波或其它传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据。通信介质还包括任何信息传递介质。术语“已调制数据信号”指以在信号中将信息编码的方式设置或改变其一个或多个特征的信号。作为示例,而非限制,通信介质包括诸如有线网络或直接连线连接等有线介质,以及诸如声学、RF、红外和其它无线介质等无线介质。以上任何介质的组合也包括在计算机可读机制的范围之内。
尽管以上描述使用专属于结构化特征和/或方法性动作的语言,但是应当理解,在所附权利要求书中定义的本发明不限于所描述的具体特征或动作。相反,这些具体特征和动作是作为实现本发明的示例性形式来揭示的。