CN101501637A - 模块化镜像下载系统 - Google Patents
模块化镜像下载系统 Download PDFInfo
- Publication number
- CN101501637A CN101501637A CN200680009729.9A CN200680009729A CN101501637A CN 101501637 A CN101501637 A CN 101501637A CN 200680009729 A CN200680009729 A CN 200680009729A CN 101501637 A CN101501637 A CN 101501637A
- Authority
- CN
- China
- Prior art keywords
- action
- tree
- mirror image
- user
- minds
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
Abstract
一种用于配置计算机或基于计算机的设备的从网络的模块化镜像下载(MINDS)的系统和方法。程序镜像通常包括基础镜像(操作系统)和嵌入在MINDS程序的可执行文件内的应用模块。动作树可以由用户接口控制,开始、暂停、终止、前进或后退等等。可执行文件对动作树进行操作并且不必针对每个动作树变化都重新编译,用于动作树的模块在执行之前被动态链接。动作树方法允许用户容易地从系统中改变、增加或者删除动作或整个动作树,而不需要记录或者另外的程序测试。
Description
对相关申请的交叉引用
本申请要求2005年3月25日提交的序号为11/090,637的美国非临时申请的优先权,该申请通过引用而被全部合并于此。
关于联邦赞助研究或开发的声明
不适用
光盘上所提交的材料的通过引用并入
不适用
受版权保护的材料的通知
该专利文献中的一部分材料在美国和其他国家的版权法下受版权保护。当其出现在美国专利商标局的公众可得到的文件或记录中时,版权权利所有人对于任何人对专利文献或专利公开的复制没有异议,但除此之外不管如何都保留所有的版权权利。版权所有人不放弃使该专利文献保密的权利,包括不按照37 C.F.R.§1.14限制其权利。
技术领域
本发明一般地涉及计算机程序配置,更具体地涉及基于动作树的镜像网络下载系统。
背景技术
随着可能的机型、选项组和其他变量的数目的增加,在现代计算机和计算机化设备中配置软件正变得日益复杂。例如,为了支持客制化(configured to order,CTO)计算机的销售,当考虑不同的基础镜像(foundation image)和应用镜像(application image)组时,给定系统可用的选择矩阵可能达到数百万的不同镜像组,这些镜像组中的任何组会需要被复制到计算机的硬盘驱动器上。通常,除了可以被安装以在这些计算机上运行的应用模块的集合之外,这些选择涉及与具体的硬件有关的少量基础镜像组。
镜像选择的这种过剩不仅在生产环境中,而且也在诸如工程、测试、质量保证、服务等之内的其他领域中是一种负担,在这些领域中,软件和/或应用程序必须被配置或者重配置为从制造可得的当前或先前配置中的任一种。为了创建这些硬盘驱动器镜像,创建了模块化镜像下载程序,其加载基础镜像以及将被安装在硬盘驱动器上的预定一组应用模块镜像。对于任何一种版本的硬件和/或软件,可以存在许多不同种类的镜像程序,例如用于工厂、工程、测试、质量保证、服务部门等的版本。
通常,在CTO环境中,关于什么将被加载到给定系统的确定如果不是完全地、也至少是部分地响应于包含在桌面管理接口(DMI)内的信息而确定的。DMI是计算机设备的硬件中的区域,其中包含在这里被称为Mcode的字符串。DMI还包括被称为UUID的部分,其提供用于硬件的单元序号。DMI中所保持的Mcode的位表示关于设备的信息,例如硬件特性以及加载了或者将要加载什么样的基础镜像和其他模块。由于Mcode未包含在硬盘驱动器上,因此硬盘驱动器可以被根据需要而重分区和格式化,而不影响Mcode的状态。在镜像下载到硬盘驱动器上之前,Mcode被写到DMI中。
大约十几年前,工业主要依赖于使用批处理文件来将镜像下载到新系统的硬盘驱动器上。批处理文件使用多个数据源并且严重缺少灵活性,使得考虑支持大量不同镜像组是很难的或者甚至是不现实的。另外,配置的任何改变都必须在多个数据源和批处理文件上实现,其中该处理是劳动密集、易出错且乏味的。
最近,引入了模块化网络镜像,其依赖于单个数据源和一组以高级语言编写的程序,这组程序通常平衡在操作系统的应用编程接口(API)内可用的功能。响应于分别的可执行文件的执行而执行下载处理。Sony所使用的一个这样的下载配置程序被称为MINDS(模块化网络下载系统)版本1,其与称为Pacific Tools的程序工具集结合使用。
应该认识到,用不同的基础模块和应用模块建立系统的能力对于支持客制化(CTO)计算机的销售是必要的,CTO计算机向客户提供了不同组的软件。一个示例是允许客户选择将要加载到他们的机器上的字处理和多媒体软件。获得基础镜像并增加模块以创建镜像的处理在这里被称为Sony模块化技术。该技术的好处在于可以向客户提供呈指数增加的数目的镜像。例如,令x等于基础镜像数,y等于模块数,z等于可以提供的独特镜像数;等式z=x2y描述了不同镜像的数目大小。以具有23个基础镜像和33个模块为示例,可以提供给客户的独特的可能镜像的数目超过八百七十亿,尽管通常在任一时刻仅提供这些数目的一个子集。具有提供并支持大量的可能镜像能力的制造商提供了有竞争力的优点。
可以认为镜像的生命期具有许多阶段。(1)计划——程序管理决定什么样的软件将被放置在特定类型的PC上。(2)镜像组件的开发——软件集成到基础镜像、模块和恢复组件中。(3)测试镜像组件——测试集成、软件和各种CTO选项。(4)发布和交付镜像组件——将组件送到生产位置。(5)支持——通过维持、刷新和修复来支持产品。
通常,镜像生命期的最有技术性挑战的阶段是开发,而劳动最密集的阶段是测试。在任一种情况下,系统都被频繁地用新软件重镜像。重镜像的基本原因之一是要测试各种CTO选项。另一个原因是要让系统返回到出厂状态。
由于这需要频繁地对系统进行重镜像,尤其在测试期间,因此镜像处理由于其所需要的时间量而在历史上已经成为瓶颈。系统直到镜像处理完成才可用。此外,工程师必须通过提供输入或者换CD而花费时间来对系统进行镜像,这通常是易出错的非常耗时的处理。因此,对系统进行镜像的处理需要工程师的时间并且使得系统在镜像发生期间不可用。将认识到,可以从最小化这些时间中得到许多好处以减小或者消除瓶颈。对解决方案已经进行了许多尝试,但是在时间要求和灵活性方面都有所不足。
早期的镜像解决方案是使用被称为“安装CD”的CD来对系统进行镜像的手动处理。在开发诸如MINDS版本1之类的第一个模块化镜像网络下载解决方案之前,依赖于该处理。安装CD通常使用MS-DOS作为操作系统并且在CD上(与更快速的介质相反),其中其通常需要一个工程师大约半天的时间来对系统进行镜像。该处理也具有在系统可以被镜像之前必须复制CD的额外成本和延迟,这甚至更进一步地增加了瓶颈。此外,选项的选择是非常复杂和有限的。
在第一个模块化镜像网络下载解决方案(即,MINDS版本1)被开发时,想出了一种新方法来对系统进行镜像。该方法提供一种手动处理,与CD相反,该处理在局域网(LAN)上对系统进行镜像。虽然MS-DOS仍然是所使用的操作系统,但是这种从CD到LAN的转换将镜像系统的总时间从半天减少为大约三个小时。虽然速度增加,但是各种CTO选项不可测试。
此外,由于该处理被手动执行,因此在镜像处理中具有一个基本弱点,使得难以两次以相同方式镜像系统。这种一致性的缺乏是由于必须在镜像过程中手动地执行许多步骤而出现的,并且引起很大的问题。消除对执行这些手动步骤的需要将会消除不一致性。
MINDS版本1镜像软件被创建以平衡PC中的新进步的能力,并且产生能够在大约一小时内镜像系统而仅需要大约十分钟的工程时间的处理,这是相对于使用安装CD的实质改进。MINDS v1也被配置为与软件管理系统(SMS)数据库交互以允许第一次测试CTO选项,并且也具有将镜像上载到LAN上的能力。MINDS v1的部署意味着镜像第一次被以一致的方式上载和下载,这也增加了测试的准确性。
虽然如工业上所使用的类似配置程序一样,当前的MINDS v1程序提供许多优点,但是其仍然具有降低了下载处理的灵活性并且使用户交互复杂的许多缺点。
因此,需要模块化网络下载系统内的增强软件来提供增加的灵活性和容易使用,本发明实现这些需要以及其他需要。
发明内容
本发明所描述的模块化镜像网络下载系统(MINDS版本2)是软件的集合,所述软件从存储区域(SAN)下载软件镜像到目标计算机系统,并且/或者从目标计算机网络上载镜像到SAN。新的下载系统被关于树构建的动作环境而组织,树结构的动作环境克服了在前的下载系统所具有的许多缺点。
在配置系统的过程期间,通过写桌面管理接口(DMI)、设置硬盘驱动器、下载基础镜像、安装模块和清理而在系统中构建镜像。系统的另一目的允许软件镜像被从计算机上载到网络以用于其他用户的下载访问。根据本发明的MINDS软件允许利用当前或以前镜像组进行重新镜像。
虽然第一MINDS系统(版本1)提供许多优点,但是也发现其在其他一些领域有所不足。具体而言,一个所识别出的问题是用于下载的镜像组基本上是静态的,其中任何将要作出的变化都要求程序被重新编译。用于镜像系统的复杂过程已在快速地发展,恒定的变化阻碍要求对MINDSv1作出比预期更多的代码变化;有时要每天作出变化。理想地,这些软件变化应该被全面测试,但是,时间和资源限制经常使得这样是不切实际的。此外,因为这些变化的快速配置经常是至关重要的,所以可以包括创建很好地设计并且高效的解决方案的实践。
MINDS v1的实现方式要求创建程序的多个并行版本,这些并行版本具有不同的用户流程和功能以支持各种用户组。这些并行版本导致软件维护时间的增加和配置时间的增加。
在利用当前的模块化下载系统(MINDS v1)的下载过程期间,一些文件必须通过局域网传输数次,导致镜像系统所需要的总时间的增加以及网络负载的增加。镜像过程的一部分在所有的用户输入被聚集之前执行,导致镜像系统所需要的工程时间比必要的工程时间更多,这是由于用户在继续提供输入之前将必须等待诸如在网络和目标系统之间传输文件之类的任务的事实引起的。另一个缺点是用户不能回退并纠正错误,例如不正确的输入或选择。纠正错误的仅有方法是重新开始整个过程,其中损失了到达过程中出错的点所花费的时间和努力。
为了克服这些缺点,MINDS v2系统被设计为允许用户响应于动作并且更具体地响应于动作树而创建镜像。用于该过程的数据被从软件管理系统(SMS)中取回,SMS在Sony VAIO环境的情况下被称为VSMS(VAIO软件管理系统)。MINDS系统被优选地配置为从子网开始操作,该子网是被配置用于系统镜像加载的计算机设备制造商、增值转售商,集成商等的子网。当选择希望的镜像配置时,仅网络上可用的镜像选择被示出给用户。
在MINDS内所利用的动作和动作树允许过程被从单独的任务(动作)放在一起。利用根据需要而增加或删除的动作,可以容易地改变任务的顺序。MINDS的内部动作树结构允许同一可执行文件在给定下载过程的多个步骤中执行。动作类中的所有动作实例都异步于管理类而运行,动作将消息发送回管理类(例如,完成消息、错误消息、警告消息等等)。尤其在动作被拖延或者是特性密集型的情况下,可以在分开的线程内执行动作以减小延迟问题。
在一个优选实施例中,与执行多个分开的可执行文件相比,在MINDS v2中响应于外部设定文件而控制单个可执行文件。除非另外规定,否则MINDS的以下描述涉及根据本发明的MINDS版本2。动态链接库(DLL)与增加测试的可靠性并使测试变得容易的单个MINDS可执行文件一起使用。与在前的系统不同,可以基于在下载过程被制定之前执行动作的动态绑定,在即将用于具体下载过程的时候配置新的MINDS系统。例如,在增加新动作的过程中,信息被增加到字符串表和动作列表中,为动作定义任何用户交互。应该容易地知道,改变这些绑定与编辑系统内的代码不同。因为即使代码的单个错误行都可能使程序不能工作,或者更坏,创建错误的或者未如实表达的镜像,所以无论何时作出编码变化都要保证全面的测试。但是,当仅改变绑定时,因为每个被绑定的模块已经被全面地测试,所以不需要进一步测试软件。测试步骤的消除尤其在配置经常改变的环境中可以节省大量资源。
动作树的使用提供创建快速变化而不重新编译代码的机制。可以定义一个或多个动作树,每个动作树通常包括多个树节点,每个树节点包括一个动作实例。每个树节点都包括动作以及定义树内关系的指针。通过示例而不是限制,描述了一个实施例,其中树结构内的指针支持子关系和下一兄弟关系。因此,每个节点都具有两个指针,一个指针更深入地指向下一个子节点,一个指针向旁边指向最近的兄弟节点。树的这种安排简化了例如通过递归的树游历,而节约了存储器。动作由管理类来控制并且被作为分开的线程而载入。
代码被划分为多个层,例如用户接口、基础设施(或者管理层)和一组单独的动作。这种分开允许在其他应用中重新使用单独的动作,而同时可以为一组动作和/或分开的动作执行用户接口操作。管理层指引具体动作的执行,信息从管理层穿越至树,而不是相反。应该知道,使用相同的管理代码而不管正在执行的动作,其中,软件的升级和测试被大大简化。对于给定的构造,进行选择过程以确定哪个动作树将被执行。例如,用户接口可以允许用户选择动作树,或者在仅指定了一个动作树的情况下或者响应于足够的时间段的过去却没有接收到用户响应,而使用缺省值。
在一个实施例中,MINDS系统的功能被与用户接口分开,以增加MINDS核的使用的灵活性。根据系统的一种模式,在MINDS会话期间所执行的每个动作都被记录到例如VSMS中,优选地包括日期和时间、动作、登录的人和关于所配置的系统的信息。
可以在诸如用于开发工作、作为MIS(管理信息服务)功能的软件分布等的各种镜像应用中利用MINDS装置和方法。例如,响应于专门的许可、关于系统本身的信息、部门信息和/或在镜像创建是可用的其他信息,模块可以将选择性的软件镜像提供到系统上。
本发明适应于以多种方式实施,包括但不局限于下面的描述。
根据本发明的一个实施例,描述了一种用于自动配置计算机上的软件程序镜像的装置,该装置包括:(a)模块化网络下载程序,其被配置为访问来自网络的镜像文件以配置计算机上的程序镜像;(b)多个动作例程,所述动作例程中的每一个都被配置为执行模块化网络下载程序内的具体操作;以及(c)用于定义将由模块化网络下载程序执行的动作例程的树。
所述动作例程被动态地链接到模块化网络下载程序,其中不需要重新编码、编译和测试以修改将要执行的一组动作,或者创建与新模式相关联的新动作组或新的PC配置。优选的是,用文本配置文件来创建动作历程的树。所述模块化网络下载程序包括:(i)管理层,其被配置为在动作树的游历期间执行动作;以及(ii)用户接口,其被配置为针对正在执行的所希望的自动安装,控制管理层的操作。
本发明的另一个实施例可以被描述为一种用于自动配置计算机上的软件程序镜像的装置,该装置包括:(a)具有多个动作的动作树层,所述动作可以被动态地链接并且然后在自动软件安装期间执行;(b)至少一个具有多个节点的动作树,所述节点中的每一个都包含至少一个指向来自动作树层的动作的指针;(c)管理层,其被配置为在动作树的游历期间执行动作;以及(d)用户接口,其被配置为针对正在执行的所希望的自动安装,控制管理层的操作。所述动作在功能上是独立的并且可以在给定的动作树内和不同的动作树之间重新使用。另外,可以在分开的执行线程内载入动作,从而允许系统快速地响应于用户,而其仍然在执行长的动作步骤之中。
由MINDS软件所创建的程序镜像或者包括单个基础镜像,或者更典型地包括单个基础镜像与至少一个应用程序模块的组合。但是,将会知道,MINDS系统可以支持多个基础镜像,尽管这在当前具有较少的实用价值。
可以执行来自动作树内的任何希望数目的不同动作。通过示例,在该实施例中所支持的动作可以从一组处理的动作中选择,这组处理的动作基本上包括:创建Mcode介质、从系统的桌面管理接口(DMI)上载Mcode、下载基础镜像到系统硬盘驱动器、下载应用模块镜像到系统硬盘驱动器、从系统硬盘驱动器上载基础镜像、从系统硬盘驱动器上载应用模块镜像、从恢复分区恢复基础镜像、介质版本验证、位块传送(blitter)、分配目标驱动器、选择基本单元、清理镜像移除不必要的文件、将镜像复制到恢复分区、将模块复制到分区、创建镜像CRC、创建Mcode软盘、显示飞溅(splash)屏幕、显示桌面管理接口比较、弹出介质、找到正确的目标驱动器、获得硬盘驱动器信息、验证是否在网络子网上、结束日志会话、映射网络驱动器、分区询问、分区硬盘驱动器、重新启动、受限登入、返回主菜单、验证镜像组件存在以及创建线程。根据本发明一实施例,任何数目的另外的或不同的动作可以被创建以支持镜像下载或其他活动。
根据另一个实施例,本发明被描述为一种用软件程序镜像配置计算机的方法,该方法包括:(a)创建和编译一组可分开执行的动作以执行计算机上的镜像配置动作;(b)创建和编译管理层,该管理层执行在所选择的动作树内所定义的动作;(c)创建和编译用户接口层,该用户接口层控制动作树选择和通过动作树的前进;(d)创建具有多个节点的动作树结构,所述节点包括指向动作和动作树中的其他节点的指针;以及(e)将动作、管理层、用户接口和动作树链接到程序中,所述程序根据用户输入而执行在动作树中所定义的动作。
树结构优选地包括根据子指针关系、兄弟指针关系或者更加优选地根据子指针关系和兄弟指针关系彼此的组合而连接的节点。动作树内的指针关系优选地包括指向动作所位于的动作树中的节点位置的指针。优选地执行的动作被堆栈所跟踪,堆栈提供允许用户返回到任何在前的处理步骤的方便机制。使用堆栈优于在动作树内包括父节点指针。
通过实现新的MINDS系统可以得到许多好处,包括但不局限于下列好处。
本发明的一个方面是提供一种模块化镜像网络下载系统,其动作可以被更容易地适应。
本发明的另一个方面是提供一种网络下载系统,其中可以从动态链接的动作树中增加或者删除动作。
本发明的另一个方面是提供一种网络下载系统,其中用户可以回退到任何在前的动作。
本发明的另一个方面是提供一种网络下载系统,其中用户可以暂停、单步调试和继续处理步骤。
本发明的另一个方面是提供一种网络下载系统,其具有改进的错误处理。
本发明的另一个方面是提供一种网络下载系统,其可以支持具有增加数目的可支持选项的更全面的用户接口。
本发明的另一个方面是提供一种网络下载系统,其取决于部门(例如,工厂车间(factory floor)、工程、服务、测试、质量保证等等)而消除了对网络下载编程介质(即,CD)的多个版本的需要。
本发明的另一个方面是提供一种网络下载系统,其直接与软件管理系统(SMS)交互。
本发明的另一个方面是提供一种网络下载系统,其可以支持不同类型的镜像,例如基础镜像、整体镜像、加基础的镜像和使用Ghost的镜像。
本发明的另一个方面是提供一种网络下载系统,其可以被适应于使用小的操作系统,例如称为WinPE的Windows XP按比例缩小的预安装版本。
本发明的另一个方面是提供一种网络下载系统,其仅可以从指定的网络子网内执行,从而防止制造商设备之外的滥用。
本发明的另一个方面是提供一种网络下载系统,其将完整的材料清单(BOM)复制到目标系统。
本发明的另一个方面是提供一种网络下载系统,其可以利用系统UUID作为用于创建Mcode软盘的缺省值。
本发明的另一个方面是提供一种网络下载系统,其在用于创建Mcode软盘的主菜单中提供分开的选择。
本发明的另一个方面是提供一种网络下载系统,其能够从现有的系统中上载镜像。
本发明的另一个方面是提供一种网络下载系统,其支持许多不同的操作模式,例如无人看管模式、工厂模式、SKU选择模式、高级模式、基础图像上载模式、自由式镜像上载和下载模式等等。
本发明的另一个方面是提供一种网络下载系统,其中用户在执行任何动作之前必须被认证。
本发明的另一个方面是提供一种网络下载系统,其中新的动作树可以被定义而无需重新编译和测试。
本发明的另一个方面是提供一种网络下载系统,其中所有的用户选择和交互都在执行任何动作之前执行。
本发明的进一步的方面将在说明书的下面部分中出现,其中详细描述是为了全面公开本发明的优选实施例的目的,而不对其进行限制。
附图说明
通过参考仅用于说明性目的的附图,本发明将被更全面地理解:
图1是下载到计算机硬盘驱动器上的软件镜像的框图。
图2是根据本发明一实施例的模块化网络下载系统的输入和输出的框图,在左侧示出了与MINDS程序交互的网络资源。
图3是根据本发明一实施例的模块化网络下载系统的流程模型。
图4是根据本发明一实施例的模块化网络下载系统的类层次模型。
图5是根据本发明一实施例的模块化网络下载系统内的层的框图,示出了用户接口(UIF)层、管理层和动作层。
图6是根据本发明一实施例的模块化网络下载系统内的模块的框图。
图7是根据本发明一个方面的请求动作运行的管理器层的流程图。
图8是根据本发明一个方面的互连动作的树模型,示出了可用的动作和所实现的使用那些动作实例的动作树的示例。
图9是示出根据本发明一个方面的动作树示例的树行图,示出了仅提供树内的一个或多个子关系的树。
图10是示出根据本发明一个方面的动作树示例的树形图,示出了在树的每个节点处利用单个子和单个兄弟关系的树。
图11A-图11F是根据本发明一个方面的树游历示例,示出了关于堆栈内容的动作执行。
图12是根据本发明一个方面的示例错误屏幕的屏幕截图。
图13是根据本发明一实施例的示例主菜单屏幕的屏幕截图,示出了可以选择的操作模式。
图14是根据本发明一实施例的示例状态和控制屏幕的屏幕截图,示出了动作历史、时间、当前操作以及命令选项。
图15A-图15B是根据本发明一实施例的示例基本单元选择屏幕的屏幕截图。
图16是根据本发明一实施例的示例模块和开关选择屏幕的屏幕截图。
具体实施方式
更具体地参考附图,为了说明性目的,在图1至图16所一般示出的装置中实施本发明。将会认识到,装置可以在配置和部件的细节方面来变化,并且方法可以在具体步骤和顺序方面来变化,而不脱离这里所公开的基本概念。
在这里被称为MINDS的模块化镜像网络下载系统是Sony设计和开发的用于快速部署PC的整个软件方面的解决方案。虽然将软件放置在特定PC上的过程看起来简单,但是那些熟悉该过程的人认识到当前过程既不简单、静态,也不迅速(快速)。为了满足关于简单性、速度、灵活性、降低开销和可靠性的目的,MINDS v2系统是在前的MINDS v1模块化下载系统的从零开始的完全再设计。结果,该设计没有先前的解决方案的限制或问题。
MINDS的一个目的是加速和简化响应于应用程序和/或用户选择而合并软件镜像变化的过程。根据本发明执行这些功能的简易和效率可以贯穿PC开发、配置、质量保证、测试和维护过程提供很大的好处。根据本发明的MINDS v2系统被设计为使得过程的变化可以被快速和可靠地实现。该设计扩展地利用了封装、继承和多态性(polymorphism)的面向对象编程原理。因此,MINDS v2(在下文中简称为MINDS)的新颖和重要的方面不仅是它做什么,而且是它如何做。
图1示出了用于下载到计算机(PC)系统上的软件镜像10。在该实施例中,所示出的镜像包括基础镜像12、软件应用模块14和可选的恢复模块镜像16。在PC的硬盘驱动器分区上装载的整个软件包被称为镜像。应该知道,一些情况下,至少在Sony的一些情况下,至少存在两个在PC上所定义的分区,至少一个供客户使用的分区和另一个用于恢复目的的隐藏分区,以下称为恢复组件16。这些组件不仅在为客户制造时必须被放置在系统上,而且在开发和测试期间也必须被重复地放置在系统上。也可以使用通常是一组DVD的介质套件来将镜像放置在系统上。
镜像的主要组件是基础镜像12。镜像包括一个基础镜像,该基础镜像包含操作系统18、驱动程序20以及一组特定硬件共用的应用程序和/或实用程序22。模块14是另外的多个软件,这些软件被增加到硬盘驱动器上以支持来自PC制造商或者更典型地来自第三方供应商的具体安装应用程序,例如生产率套件(productivity suite)(即,包含文处理器、电子表格、演示软件的应用程序)、浏览器、电子邮件程序、声卡应用程序、媒体PC应用程序等。
任何希望数目的模块可以包含在镜像内,由模块24a至24n表示。恢复组件16允许客户将他们的PC的状态恢复为出厂时一样。恢复组件例如可以包括经压缩和包装的一组文件(一般称为PAC文件),在基础镜像被还原之后需要这些文件来将针对项目(project)而定的应用程序还原到硬盘驱动器上。数据文件28是包含用PAC文件或模块来恢复应用程序所必需的针对项目而定的配置文件的模块化可执行文件。WinPE文件30或者类似物是可以在还原过程中利用的小操作系统。因此应该知道,虽然将各种组件放在一起以创建镜像的概念是简单的,但是实际的实现方式是复杂的,由许多步骤组成。
图2通过示例示出了具有MINDS软件42和用户接口44的下载系统40,下载系统40被配置用于下载镜像到硬盘驱动器46,或者较次优选地从硬盘驱动器中上载镜像。在优选实施例中,MINDS系统结合局域网或者子网而操作,提供对数据库的访问和操作MINDS系统的机构的功能。在这种情况下,网络包括用于镜像过程的网络镜像和模块的存储库48、桌面管理接口(DMI)数据存储库50、软件管理系统(SMS)52、工厂信息54(即,MINDS.csv)和Mcode加密数据56。
图3通过示例示出了MINDS系统过程的一般操作流程60。在节点62处加载主菜单,并且在节点64处系统等待用户的菜单选择。如果仅存在单个菜单项,或者如果所分配的时间过去却没有作出选择,则选择缺省模式,其中节点64被绕过。在节点66处,加载节点树以供选择,其中可以收集用户信息。如果动作和选择是有效的,则过程进行到节点68,运行动作树内的顺序动作。本发明的一种模式允许用户暂停(中断)和继续该过程的执行,以及单步调试(step through)处理步骤或者甚至回到先前所执行的步骤(例如改变该步骤所作出的选择并且从该点继续)的能力,因此不需要用户重复整个序列的步骤。一旦动作树中的动作已被执行,则动作树退出到节点70。
图3的节点64中的菜单选择可以提供任何数目的动作树选择,通常与MINDS程序的操作模式相关联。另外,例如可以利用第一屏幕上的多种操作来嵌套菜单,以提供对大量模式的选择,所述操作导致所选择的种类内的具体模式。应该知道,可以利用选择前端的任何形式,而不脱离本发明的教导。
在本发明的一个实施例中,MINDS v2提供不同的操作模式以消除对MINDS v1所要求的并行版本的需要。这些各种模式提供完全自治的操作或者允许用户选择他们想要在镜像过程中实行多少控制。具有较多用户控制的模式帮助调试和故障检修,而具有较少控制的模式更适合于自动过程和用于诸如制造之类的领域,在制造过程中,控制硬盘驱动器镜像很重要。另外,这些不同的操作模式允许诸如在工厂中镜像的不同过程被仿真。当工厂过程被仿真时,依赖于与工厂所使用的相同数据源,这促成更准确的测试并且允许某些类型的错误在到达工厂之前被捕捉。
一种操作模式在这里被称为“无人看管模式”,在加载之后用户不与MINDS交互的条件下,其自动开始(因此绕过图3的节点64)。该操作模式除了MINDS的初始加载之外不需要用户输入就执行整个镜像过程。为了获得将要使用什么样的镜像组件,唯一镜像组件标识符被从给定系统的桌面管理接口(DMI)取回并且与VSMS中的项目信息匹配。该操作模式的价值在于工程师仅需要几秒钟的工程时间来下载镜像。平均工程时间的减少(尤其在无人看管模式中)是MINDS v2的重要好处。因此,每年可以节省数百个工程人员小时。另外,由于总的镜像时间也减少了,因此可更快地用于测试,这等同于实际的节省。
对系统进行镜像的复杂过程不断地改变,MINDS v2考虑了这种事实而设计。代码被以可以快速和可靠地实现变化的方式构建。通常,改变将要下载的镜像组和配置的混合不需要重新编译MINDS代码。另外,MINDS的设计是相当灵活的,允许快速变化和维护。
在较早的MINDS v1的使用过程中发现,镜像过程连续展开并且要求镜像下载程序中的频繁的软件变化,以支持新的系统和新的系统配置变化或选项。应该知道,如果需要任何新的基础镜像,例如与新硬件相关联的新基础镜像,或者任何新软件变得对于系统可用,则在许多情况下必须改变MINDS功能。因此,MINDS v2的设计目的是要使得这种维护简单和快速并且可靠。
MINDS v2中的一个基本概念是动作和动作树的概念。动作是执行一个任务的功能上独立的代码段,所述任务例如是对硬盘驱动器进行分区、提示用户进行某个输入或者读取DMI。由于每个动作都优选地执行单个任务(即,或者较次优选地是密切相关元素的集合),因此每个动作的行为都与其他动作分开并且它们之间的耦合被最小化。让动作执行极小的操作可以提供耦合的显著减小,这是现代软件工程的关键目的。
图4通过示例实施例示出了一组动作的类层次70。动作优选地都从抽象基本类得出,该抽象基本类在这里称为AbstractAction(抽象动作)72。通过使用抽象基本类,存在所有动作共用的最小组的行为。这些在AbstractAction中定义的共用功能是纯虚拟功能,所以动态绑定被执行以选择适当的功能来执行。动作也可以从提供许多优点的其他动作得出。首先,通过从其他动作中得出动作,可以改变功能而不改变父动作,从而隔离变化并且促进很好地策划的软件维护。另外,动作的层次可以被创建为使得一组动作所共用的功能可以被封装在一个动作或抽象基本类动作中。
抽象动作类的继承方面是动作的分区HD类74、GetModules动作类76和动作的GetDMI类78。分区动作类74被配置用于执行HD清理和分区操作。GetModules动作类76获得给定系统的所有模块的所有版本。GetDMI动作类78读取写入系统的DMI。所示出的另外的动作类GetSKUModules 80从GetModules类76得出,用于获得给定系统的当前分配版本的模块。应该知道,仅通过示例示出上述动作类,可以在层次内定义任何希望数目的类而不脱离这里的教导。取决于动作共用什么样的元素以及编程者希望利用该继承的程度,类层次可以被定义为数层或者许多层。
图5通过示例示出了将MINDS可执行文件90分层为最上面的GUI层92、中间的管理层94和低级别的动作层96,这些层具有动作库、动作树和动作。因为通过层之间的接口来控制交互,所以将MINDS分区为这些不同的层可以提供许多好处,而变化通常与进一步降低风险和提高可靠性的一层隔离。本领域普通技术人员将会认识到,系统可以被分区为任何希望数目的层而不脱离本发明的教导。
应该知道,GUI层92在较次优选的情况下是可选的,其功能被外部提供给MINDS系统或者从单独的动作内提供。该实施例示出了GUI的组件包括状态窗口GUI 98、主菜单GUI 100和动作“n”GUI 102。GUI层92与管理器层94相关联,然而其也可以耦合到其他可执行文件以提供系统的严格镜像与其他相关操作之间的协作。
GUI层92和管理层94之间的所示出的动作例示为用户通过状态窗口控制管理器104和在框106处接收用户输入。
中间层是管理层94,其包含管理器本身、动作库和动作树。管理器是直接或间接控制MINDS系统的所有其他部件(包括动作、动作树、动作树中的节点和动作库)的可执行文件。管理器具有动作树的实例,该动作树由动作库应要求而从可编辑的文本文件创建。
管理器控制动作在动作树内的排序并且将此与用户交互关联。当动作成功地完成时,其向管理器发送信号告知该情况。在这种方式下,管理器可以确定是否已到达动作树的叶(leaf)、是否存在要执行的动作或者是否动作树已完成执行。如果仍然存在要执行的动作,则管理器通常向树发回信号以执行下一个动作。在动作被告知由管理器进行时,管理器将等待动作已完成的信号。
管理器94的示例实施例被示出为具有动作管理器例行程序108,其既可以控制动作树的建立,又可以控制动作树的执行。动作树的建立被示出为每个框110从动作库112内的动作形成动作树114以供执行。动作树的执行被示出为从框116开始,其中管理器被针对给定的树而初始化并且执行被建立为每个框118的动作树。如框120所确定的,只要剩下动作树的至少一个节点,则动作被选择为每个框122并且每个节点执行其代码驻留在动作层96中的单个动作。管理器也被示出为通过用户输入框132将用户接口层GUI 92与动作相连,所述动作被描述为框130处的动作n。
最低层是动作层96,其包含被描述为动作Alpha 126、Bravo 128…至动作“n”130的预编译动作。应该知道,动作层96内的每个动作优选地包括单个(极小的)动作。动作树具有一个或多个节点,动作树中的每个节点指向一个动作实例。应该记住,每个分开的动作也可以具有其自己的GUI。这些各种GUI优选地向用户提供接口以与MINDS系统通信。
图6示出了适合图5所述的分层结构的模块140的示例。在这里被称为MINDS2x.exe 142的MINDS可执行文件包含管理层的代码。应该容易地知道,不必针对每个新建立的操作来修改该代码。在这里被称为ActionLibrary.dll 144的动作库包含动作库、动作树以及动作树节点类。动作类中的一组可用动作在Actions.dll 146中描述。在整个MINDS系统中使用的设置类和库在这里被称为MindsCom.dll 148,其与ActionLibrary.dll144和Actions.dll 146两者相关联。用于控制已产生的程序线程的活动的线程类在MindsThreads.dll 150中描述。与SMS系统和镜像配置数据库交互所必需的类被描述为Minds2.dll 152,其被示出为将Actions.dll 146与MindsThreads.dll 150相关联。
图7示出了管理器层如何控制动作160,例如请求动作被进行并且在动作完成时被通知。管理器在框162处执行并且在框164处进行树中的下一个动作。请求可以被传递到另外的树节点,如开始进行框168所示的动作X的每个框166。可以为动作创建线程,如每个框170,以改善用户接口的响应性,这尤其适合于资源或时间密集的活动(例如,在网络和硬盘驱动器之间下载/上载文件等)。线程的完成被描述为动作X完成。来自动作的严重错误被示出为导致返回到管理器。返回到管理器优选地通过将消息传递给管理器而执行。事实上,根据一个实施例,每个执行中的动作都将消息传递回管理器(通知消息从框168传递到框162)以将成功的完成或者具体失效通知给管理器。在接收到严重失效消息之后,管理器确定程序不能继续并且停止处理动作树内的进一步动作。如图12所示,可以针对错误消息显示对话框,其允许用户选择管理器应该如所推荐的那样完全停止还是不管警告而继续。
由上面的图可见,多线程是MINDS所利用的另一个软件工程概念。如果动作将要执行密集型任务,例如下载基础镜像,则线程被载入以执行该密集型任务。通过载入分开的线程,动作可以自由地响应于其他请求。在该实施例中,MINDS不使用动作的多线程,而是异步地执行动作。在MINDS内执行“多线程”的原则性目的是用于用户经历的好处,其中系统更多地响应于用户。在MINDS执行诸如用一个线程从网络复制文件之类的动作期间,用户仍然可以查看状态信息并且开始或停止该过程,因为这使用另一个线程。相反,如果MINDS仅使用了单个线程,则当从网络复制文件时,整个程序和监控器显示将被锁定并且不允许任何用户交互或进行显示。当线程完成时,消息被发送回管理器,向其通知线程已完成。最终结果是系统对条件更具响应性。但是应该知道,可以利用真正的多线程、多任务、中断或者本领域普通技术人员已知的其他机制来获得用户动作的类似异步。
动作实例被分组成称为动作树的逻辑树。MINDS中的特定操作模式对应于不同的动作树。这意味着特定的镜像过程变成分开的动作树或者变成经过动作树的具体路径。用户从MINDS的执行开始时所出现的主菜单中选择执行哪个操作模式。如果在给定的时间段(例如三分钟)内未作出选择,则执行缺省操作模式。缺省的通常是无人看管模式,其允许重复地执行共用操作。
图8示出了被组织成动作树180的动作的示例。可用的动作由动作Alpha 182至Echo 190表示,然而任何数目的动作是可用的(通常多于五个动作)。因为这些是动作库中可用的动作,所以在图的上面部分所示出的可用动作用虚线描述。图的下面部分描述了根据本发明从库中已链接到可执行的动作树中的动作。在该示例中,动作树具有动作Charlie 186作为其基础,并且分裂为第一分支和第二分支,第一分支在终止之前具有动作Bravo 184和动作Alpha 182,第二分支具有动作Echo 190,接着是动作Charlie 186,然后动作Charlie 186被形成分支为动作Alpha 182或者动作Delta 188。应该知道,因为动作库中的动作的代码是可重新进入的(尽管可以支持诸如用于具体功能的不可重新进入的动作),所以每个动作都可以被实例化任何希望的次数。
动作树中的每个动作都指定其在动作树中可以具有的子动作的确切数目。这些子动作被排序并且被分配序号。当动作完成时,进行询问以确定接下来应该进行哪个子动作或者兄弟动作。用说出接下来进行哪个动作的响应来答复该询问。应该注意,在优选实施例中,动作不指定接下来进行的具体动作,而是仅指定哪个号码,其中动作保持彼此独立。
例如,考虑其中存在消息框的情况,所述消息框是具有是和否这两个按钮的对话。点击这两个按钮中的一个使得动作完成。当动作树询问已完成关于接下来进行哪个子动作的消息框时,其在点击了是的情况下用“进行子动作1”来答复,或者在点击了否的情况下用“进行子动作2”来答复。动作不用“接下来进行模块复制动作”来答复。结果,因为在动作树的特定层次中没有一组排序或者绑定的某些动作在一起,所以任何动作都可以被指定为任何其他动作的子动作。将会了解到,动作树本身包含对具体动作的所有引用,而动作中的每个都以“通配”的方式向后响应于管理器,在上面的示例中,提供被解释为与动作树和其中所定义的指针有关的号码。
虽然每个动作都独立于其他动作,但是动作进行通信以在动作之间中继信息,例如用户输入。例如,一个动作可以询问用户他们愿意将哪些模块用于客制化(CTO)镜像。用户的响应必须稍后传送给对模块进行复制的动作。根据一个实施例,提供这种通信的解决方案是通过MINDS设置类。该设置类是所有可能必须从一个类中继到另一个的信息的容器。动作树在其运行时将MINDS设置类传递给每个动作。
图9示出了动作树200的示例,该示例示出了简单的父子树格式的动作流程。框202处的指向根的指针连接到动作Alpha 204,动作Alpha 204具有四个子动作Bravo 206、Charlie 208、Delta 210和Echo 212。子动作的选择取决于DMI值、用户输入等等。可以从每个父顺序地执行其他动作,如作为Bravo 206的子动作而执行的动作Foxtrot 214和Golf 216所示。类似地,动作Hotel 218、India 220、Juliet 222和Kilo 224耦合到各自的父节点。但是应该认识到,所示的父子关系具有缺点,例如为每个动作预留多少个指针以及如何可以在树中执行递归。在该示例中,每个动作都具有其可以在动作树中具有的设定数目的子动作,并且该数目不可改变。因而存在能够定义逻辑上不正确的树的问题,例如没有分配给每个动作的子动作的适当数目的问题。如果MINDS使用逻辑上不正确的树,则动作树的节可能永远不会到达,或者更糟,某些节点可能指定下一个进行的动作是不存在的动作,其中可能发生崩溃。
图10示出了动作树的优选实施例,其中动作树被以已知的第一子-下一兄弟方法内部地表示。每个动作树节点都配置有指向子动作(如果不存在则为空)和指向兄弟动作(如果不存在则为空)的指针。在该实现方式中,树中的每个节点都有两个指针:一个指向其第一子,另一个指向其下一个兄弟,其中仅需要少量固定数目的指针。在优选实施例中,诸如利用堆栈之类的历史机制相对于使用父指针提供许多好处。子-下一兄弟实现方式提供数个优点,包括动作树存储器的守恒,这是因为每个节点仅需要两个指针。另一个优点是通过树来导航路径是简单的过程,如同通过递归对树进行游历。审视图10可以看出,相同的通用结构被表示,但是,该程序可以确定移动是纵向的还是横向的。
这些动作树被存储在MINDS在运行时间所读取的文本文件中。应该认识到,树包含指向动作和其他树节点的“指针”,而动作本身和管理层本身这两者都不直接引用动作。通过将各种树存储在这些文件中,树的内容和排序可以被改变而不需要重新编译任何代码。只要动作的功能不是必须被修改,这就允许对MINDS作出快速变化。有选择在执行之前对所组装的树检查逻辑的正确性,其中逻辑上不正确的树被优选地禁止。
图11A至图11E示出了子-兄弟树的游历230。在图11A中,利用开始于动作Alpha 234的执行指针236来游历树,栈顶(TOS)包含指向动作Alpha的指针238。在图11B中,执行从Alpha进行到Charlie,其中执行指针236现在指向动作Charlie 246,堆栈包含Alpha指针238和栈顶(TOS)上的Charlie指针252。在图11C中,执行指针236在动作Foxtrot248处,动作Foxtrot 248的指针在TOS上。在该示例中,向用户提供已执行的动作列表和他们可以从其选择返回任何在前的动作步骤的历史列表。在图11D中,用户选择了返回到动作Alpha 234,其中堆栈Foxtrot指针254和堆栈Charlie指针252从堆栈中出栈并且执行指针236从堆栈中重新加载,产生图11E,其中动作Alpha的执行重新开始。
将会认识到,动作树节点优选地不包含沿着树“向上”至父节点的指针。利用如上所述的堆栈机制来提供向后沿着树至先前执行的动作的移动。堆栈包含动作的名称和指向该特定动作的该实例的指针,将会记住的是动作可以具有给定动作树内的许多实例。当前的动作总是在栈顶,并且这些指针可以从堆栈中出栈以返回到任何在前的动作。堆栈机制的另外好处在于用户可以返回到任何在前的动作步骤,而保持当到达该步骤时所存在的参数和配置,这是因为该数据可以作为历史的一部分而保持在堆栈中。
当对新的动作进行编码时,根据该示例实施例,许多步骤必须被执行,尽管其他实施例可能不必执行这些步骤。在该示例实施例中,Start()、SetNumChoices()和Terminate()都应该是所得出的类中的虚拟函数。在这种方式下,发生动态绑定并且在运行时间执行所希望的代码。下面是用于增加新的动作到MINDS中的基本过程。
(1)检查以确定Minds2x工作空间开放。
(2)使“动作”成为活动项目(项目|设定活动项目|动作)。
(3)在字符串表中增加字符串,该字符串是树文件中所指定的该动作的名称。也向字符串表增加显示名称的字符串,或者作为该动作的描述而向用户示出的内容。优选地,提供两种描述,一种以现在时写入,一种以过去时写入。确定在构建器中条用SetDisplayName()以将所显示的名称设定为新创建的字符串。
(4)如果创建需要用户接口的动作,则进行如下过程:
(A)创建要使用的对话并且将ID设定为所希望的对话ID(每个所创建的对话资源都具有唯一ID)。
(B)从刚才创建的对话的ID中创建从CDialog所得出的新的类。
(C)为刚才创建的类打开头文件并且将“AbstractAction.h”增加到包括文件中。
(D)在头文件中,添加“,public AbstractAction”到声明类中。示例类“UIAction:public CDialog”变成“UIAction“publicCDialog,public AbstractAction”。
(E)在构建器中增加“Create(IDD,pParent);”以使得模块对话被创建。
(F)实现Finished()以消灭窗口并调用AbstractAction::Finished。如果创建不需要用户接口的动作,则其被从AbstractAction中得出。
(5)在新创建的动作的头文件中,将“resource.h”增加到包括文件中。
(6)实现以下来自AbstractAction的纯虚拟函数:Start(),Terminate()和SetNumChoices()。
(7)在构建器中,向SetNumChoices增加调用。(与第一号码为0的基于0的情况相比,这是基于1的情况,其中第一号码是1)。
(8)在构建器中,从增加到字符串表中的字符串设定显示名称(历史操作和当前操作)。
(9)检查以确定在动作完成时设定iSelectedChoice(这是零基)。这可以通过为该类实现Finish()并且将其设定为在那里或者别的地方而执行。
(10)如果动作也从CDialog得出,则在窗口被消灭或创建的情况下需要留意,这是因为所有的动作都具有被调用多于一次的可能性。这可以通过增加布尔类型的专用成员变量并且在窗口被创建或者消灭时对其进行设定。然后,在构建器中设定该变量并且在Start()、Terminate()和DestroyWindow()中执行设定/检查。
(11)动作被增加到动作列表中。为此,执行以下过程:
(A)打开“ListOfActions.h”。
(B)为新创建的类增加包括。
(C)在ListOfActions.cpp中的AllocateAction::Create(LPCTSTRsName)中,增加一节以使其创建新的动作。对于示例动作“NewAction”,将增加以下代码:
sCheck.LoadString(IDS_NEWACTION);
if(cCheck.CompareNoCase(sName)==0)
return new NewAction;
如果动作将要执行密集型功能,例如产生CRC或者位块传送,则密集型动作应该被作为新的线程而载入。在这种情况下,不应该利用WaitForSingleObject(),这是由于其将因为应用程序线程在花费其时间等待并且不能响应于其他事件而使得MINDS看起来是挂起的。相反,该线程应该在动作完成时向其传递回消息,以使得在等待线程执行的完成期间,其他消息可以被处理。
当操作模式被选择时,指定动作树得到相应文本文件被传递给动作库。库检查以确认树逻辑上正确,如果不正确,则MINDS显示错误并退出。如果树逻辑上正确,则动作库通过动态地分配动作树的组件而创建动作树。结果,动作库不仅确保树逻辑上正确,而且还优选地负责构成动作树的组件的分配和解除分配。因此,在运行时间动态地创建了MINDS所使用的许多动作树。
系统在建立动作树期间以及在执行期间提供许多检查。虽然诸如警告之类的不严重错误被传送给用户,但是执行却继续。严重错误被定义为在动作进行时发生的防止动作成功完成其任务的错误。
图12描述了示例严重错误消息框260,其例如将被在遇到严重错误时显示。该动作显示详述错误的消息框,然后完成其执行并且向动作树发送信号告知发生了严重错误。然后,动作树向管理器传递回消息,告知动作已完成运行并且发生了严重错误。然后通过消息框告知用户遇到了严重错误。在这点上,用户可以选择重试动作、忽略错误或者中止动作树的执行。
为了使用根据本发明一实施例的MINDS系统,用户将系统通电并且例如从MINDS启动CD将其启动。MINDS启动CD优选地启动至包含在该CD中的WinPE操作系统(或者任何其他希望的OS)。在用户提供所有必要的输入之后,镜像处理开始。在这点上,由于不需要更多的用户输入,因此在所选择的镜像处理被执行期间,工程师/技术员或者其他用户不必留在系统处并且可以离开去进行其他活动。当镜像处理开始时,硬盘驱动器被配置并且必要的文件被加载到系统上。然后系统重新启动并且启动至最近加载到硬盘驱动器上的操作系统。然后,MINDS安装模块、清理系统并且关闭。在关闭之后,系统被完全镜像并且准备使用。
为了确保用户被真正地释放去执行其他任务,系统的一个可选方面提供用户用于通过公司网络在给定PC上检查镜像处理的状态的机制,其中用户不必亲自返回去确定镜像处理是否已被成功完成或者确定出现了致命错误。或者,MINDS可以响应于镜像错误或者镜像完成而自治地向用户产生消息,例如电子邮件消息。
应该注意,当MINDS在WinPE下操作时,以.NET所写的程序和Visual Basic 6.0下的程序将不会运行。结果,MINDS以Microsoft VisualC++6.0 Service Pack 6编码。C++语言的使用也提供了实现MINDS v2的设计所必需面向对象的编程特征。
MINDS的复杂源代码被划分,例如,当前所描述的实施例的实现方式涉及超过二百五十(250)个文件。为了隔离变化并且使源代码更容易管理,这些源代码文件被封装成六个项目,每个项目等于一个可执行文件或者动态链接库(DLL)。将代码分成六个项目具有允许代码被更加快速地编译的所增加的好处,这是因为当作出变化时,通常仅必须编译一个项目。
软件工程的典型生命期范例在过去被用于MINDS。因此,MINDS的整个设计在任何编码开始之前被形成文档。这允许在进行任何编码之前识别并改正设计缺陷。另一个好处在于因为所有的设计问题都已经在设计阶段解决,所以写MINDS的代码是快速的过程。
根据本发明一实施例,存在用户与其交互的数个GUI。管理器GUI总是存在并且允许用户控制MINDS。管理器是允许用户暂停镜像过程或者回到先前步骤的GUI,这在更早的MINDS或者其他镜像系统中是不可能的。另外,用户可以打开命令提示窗口、查看MINDS设置类的内容或者查看用户指南。还应该知道,单独的动作也可以具有GUI。
通过示例而不是限制,在当前的系统实现方式中,存在六十九(69)个在MINDS中可用的动作。动作树从这些动作连接在一起。操作模式通常对应于不同的动作树,并且当载入MINDS时,操作模式被从首先出现的主菜单GUI中选择。虽然存在无穷多的可能操作模式,但是实际上,仅实现少数几个操作模式。少数几个操作模式需要用户名称和密码以针对该模式而授权用户;这些模式被称为受限操作模式。根据该当前的实现方式所实现的操作模式包含九至四十一之间的节点,并因此包含这么多的动作实例。镜像过程包含四十一个动作的事实说明了镜像不是简单过程的事实。
图13示出了指示可以由用户选择的许多模式的主菜单屏幕270的示例实施例。在上述实施例中,主菜单屏幕是在启动之后MINDS用户所遇到的第一个对话。屏幕标题行272被示出为邻近提供指令274的屏幕,可选的超时指示在该情况中指示,如果在XX秒内未作出选择,则将会自动选择无人看管模式。所示出的菜单选择列表278允许用户例如通过对所希望的列表元素进行双击来选择任何所列出的模式。
虽然在这里未示出,但是应该知道,取决于用户的授权级别、系统操作到其上的子网和其他限制标准,某些模式可能是不可访问的或者甚至不被列出。在该实施例中,需要用户用他们的SMS(或者Sony的VSMS)用户名称和密码来登入。尝试执行用户对其缺少权限动作可能产生错误。或者,如果用户无权执行给定的动作,则该列表项是不可选择的并且被优选地显示为指示该事实,例如以模糊的轮廓、阴影显示或者根本不显示。
应该知道,MINDS可以支持任何数目的镜像操作模式,包括通过示例而不是限制在图中所示出的模式。(1)无人看管模式——这是MINDSv2的缺省操作模式,其在用户未在开始的三分钟内作出可替换的选择的情况下运行。在该模式中,用由给定系统的DMI在VSMS中所识别的组件来镜像系统。(2)工厂模式——这除了使用工厂数据源而不是VSMS之外,类似于无人看管模式。(3)SKU选择——该模式允许用户基于所选择的项目而挑选组件。(4)高级模式——除了用户被给予更多的选项(包括选择一些组件的更旧版本的能力)之外类似于SKU选择。该模式为用户提供所有操作模式的最多定制。(5)自由式下载——允许用户下载基础镜像到系统上而不执行整个镜像过程的受限操作模式。(6)单体(monolithic)镜像下载——类似于SKU选择的受限操作模式,其允许用户对镜像过程进行更多的控制。(7)上载镜像——允许基础镜像被从系统中捕获并且被上载到镜像存储服务器的受限操作模式。在进行上载之前,镜像被清理并且镜像标识符被设定。(8)自由式上载——这是允许镜像被上载到局域网上的任何地方的受限操作模式。这些镜像与用上载镜像模式上载到服务器的镜像不同,是不变的。(9)创建Mcode软盘——该模式允许用户创建Mcode软盘,这些软盘写入系统的DMI。应该知道,可以执行其他模式以创建任何与希望的镜像有关的功能。
图14示出了在本发明的该示例实施例中使用的状态屏幕290。该状态屏幕优选地在一旦MINDS模式被选择时就显示,并且只要MINDS系统在操作就显示。标题框292被示出为在屏幕的提供一系列用户命令选择296-306的状态部分之上,所述命令选择被显示为虚拟屏幕按钮。“按钮”可以通过任何传统的方法来显示,例如根据基于窗口的GUI范例和选择性地使用指示设备、触摸屏等的按钮和其他选择器。通常,仅可以在给定时间进行选择的用户状态命令被示出为可选择的,例如以浅色显示不可选择的项或者根本不显示。
所示出的“退出MINDS”按钮296允许用户退出应用程序并重新启动系统。“主菜单”按钮298允许用户优选地一旦暂停就丢弃当前的活动,并且返回主菜单以选择另一个操作模式(或者重新开始当前所选择的模式)。在该实施例中选择主菜单会丢弃当前在使用的数据或者将其存储起来以使得其不干扰新的模式和配置。主菜单的选择允许MINDS系统从头开始而不需要重新启动。“步骤”按钮300允许用户单步调试该过程的步骤,例如动作树内的动作。步骤可以仅在系统暂停时例如响应于“中断”命令或者先前的“步骤”命令而执行。“帮助”按钮302可以引入用户可得到的关于模式和其他选择的信息。
“细节”按钮304提供利用由MINDS所使用的当前数据来打开或关闭(即,“细节>>”用于打开并且“细节<<”用于关闭)窗口。该数据组包括软件组件、当前的操作模式等等。“中断”/“继续”按钮306允许用户在当前操作完成之后暂停执行。当系统执行中断和暂停时,该按钮显示“继续”以允许用户继续执行。在该实施例中,除非执行已经暂停,例如通过按下“中断”按钮,否“主菜单”、“退出MINDS”和“步骤”按钮被禁止。另外,在暂停期间,用户可以通过选择列表中的先前步骤而在过程中选择回到任何先前步骤。
状态行308显示当前的操作模式。历史状态区域310显示动作执行了什么的日志,例如在假设极小的动作的情况下为每个动作显示一行。根据本发明的该实施例,列表中的最后项是最近所执行的动作。当过程暂停时,用户可以例如通过双击所希望的列表元素来选择这些步骤中的任何步骤,以跳回到该先前步骤。所示出的另一个状态行312显示动作树内在被执行的当前操作。
所示出的调试屏幕314允许用户对镜像过程进行另外的控制。在该示例中,用户可以从Ini文件中加载设置316、保存来自Ini的设置信息318、从Pacific Ini中获得设置信息320、清除设置322并且引入命令提示窗口324。
所示出的时间状态显示区域326显示当前系统时间、自从MINDS开始执行时所过去的时间,以及可选地显示其他时间相关的方面,例如过程的给定步骤的时间等等。
图15A和图15B示出了基本单元选择屏幕330,其用于确定那些镜像将被放在一起以供当前的镜像下载情形使用。标题行332被示出为在显示执行的状态显示框334和一些列的选择336之上。可以在选择窗口336中输入许多参数以建立基本单元,所述参数例如由组合框338-350所描述。
当以某些操作模式操作时必须选择基本单元,这些操作模式例如是SKU选择、高级模式、镜像上载和创建Mcode软盘。通过示例而不是限制,基本单元选择取决于操作模式,这将被简要地描述。在SKU模式中,如果当前分配的镜像存在于网络上,则仅允许用户为基本单元选择它。如果用户尝试选择没有为其找到镜像的项目,则他们被给予镜像不可用的警告并且被指引选择另一个镜像。在高级模式中,用户可以选择任何分配给基本单元的镜像,只要其在网络上可用。在镜像上载模式中,允许用户挑选任何曾经分配给项目的镜像。由于用户在从目标系统中上载镜像,因此将会知道,基本单元的镜像不必在上载之前存在于网络上。在创建Mcode软盘模式中,允许用户挑选任何曾经分配给项目的镜像。
选择基本单元包括在许多字段中作出选择或者接受缺省值,对于该实施例来说,这些字段被例示为项目338、基本单元型号340、Pcode 342、销售类型344、组件346、BLID 348和软件版本350。下拉菜单被设计为让用户下拉以选择具体镜像以供下载。因此,选择用户接口(UI)开始于具有型号/名称(基本单元)340(即,PCG-S260)的最高级别,并且向下工作直到单元被充分地指定。应该知道,这些字段的大小和组成是为本发明的实施例描述的,其中本领域普通技术人员无需发明性努力就可以容易地修改这些字段;所产生的实施例仍然保持在本发明的教导内。
Pcode 342是PC的子种类(即,VAIO机型),并且在该实施例中包括四位字母数字的说明符。通过示例,对于型号PCG-S260可以存在两个不同的Pcode,例如用于没有无线LAN模块的PCG-S260的S001和用于具有无线LAN模块的PCG-S260的第二Pcode S002。型号和Pcode字段都优选地在镜像期间写入BIOS的DMI区域以供使用。
销售类型344是可以在SMS数据库中分配以指定每个销售渠道的不同软件模块。例如,具有零售客制化(“CTO”)销售类型的PC机型相对于具有为企业对企业(“B2B”)所设定的销售类型的PC机型,可以具有镜像到其的完全不同的可选软件列表。在这种情况下,销售类型CTO可以通过一般包含游戏和音乐软件的电子解决方案提供给家庭用户,而B2B类型将为大宗商业销售渠道提供并且可以包含生产率软件。在这种方式下,制造商可以面向具体的市场分段(例如家庭、企业、游戏者、多媒体、CAD、服务器等等)而提供各种应用程序。因此,不同的销售类型可以进一步精炼PC的特性,而不改变型号或者Pcode。
组件346是内部测试选项。该选项可以提供用于选择为系统递送什么的信息,例如是否在软件模块已经被组装到一个完整镜像中的情况下递送“整体”镜像。“组件”的选择一般允许诸如测试之类的部门来选择使用哪个镜像组。
BLID 348代表“BIOS LOCK ID”,并且是识别一组用于PC机型的具体镜像的字符串。例如,Windows XP HE(家用版)镜像将与WindowsXP Pro(专业版)镜像具有不同的BLID。在一些情况中,装有XP HE的PC可能与具有相同硬件但却装有MS XP Pro的PC具有不同的机型名称或Pcode。但是,由于在一些情况中,机型名称和Pcode是相同的,因此该选项允许制造商控制该第二种情况,尤其当型号和分配在制造商的跨学科领域上执行时。
BLID还优选地用于保护所装的镜像以防盗版。如果用户载入系统恢复过程,并且恢复镜像中的BLID与制造商放在BIOS的DMI节中的BLID不匹配,则恢复过程停止并且向用户显示警告消息。这种安全措施例如防止购买了具有XP HE的PC的用户将恢复介质用于装有XP Pro的相同机型PC。
软件版本350允许选择同一镜像的不同标准。在制造商或者制造商的部门的现今开发周期中,由于缺陷被改正并且更新的版本被发布,因此具有同一镜像的两个或多个不同标准是罕见的。该字段优选的缺省选择是分配给基本单元的最新测试版本,但是,下拉菜单允许缺省值在测试期间被覆盖以选择不同的镜像版本。
因此,应该认识到,可以响应于允许用户设定一个或多个参数或者接受缺省选择而确定哪个系统将被MINDS系统下载。
一旦条目已被选择并且/或者被文本地输入,基本单元屏幕就可以表现为像图15B一样,其中提示用户点击OK按钮以接受选择。应该知道,基本单元屏幕可适应于缺省元素选择的任何希望的形式,而不脱离本发明的该方面。例如,可以根据最近的活动、使用的图案等等而在新的屏幕中填充字段。一旦满足选择,用户就可以按下OK按钮352以执行基本单元的选择。
图16通过示例示出了根据本发明该实施例的模块和开关选择屏幕370的示例。标题行372被示出为在一组选择374之上,这些选择被描述为组合框以及OK(提交选择)按钮。模块和开关选择仅在MINDS操作的某些模式中必需或者允许,具体而言,这些模式是SKU模式、高级模式和创建Mcode软盘模式。如果该元素应该包括在镜像组中,则选择框被选择。取决于基本单元的类型,因为一些选择框是所需要的,所以它们是不可选择的。出现在一个基本单元中的项可能不会出现在其他基本单元选择屏幕上,这将是所期望的,因为基本单元选择确定可以与基础一起使用的模块和开关的范围。通常,在创建零售单元的情况下,所有的组合框都是不可选择的,而在高级模式和创建Mcode软盘模式中,在前的版本和配置对于用户来说是可用的。因此,MINDS配置有将完整的材料清单(BOM)复制到目标系统的能力。
应该认识到,镜像过程是不断地进行的,结果,MINDS将被频繁地更新以与那些变化保持同步。MINDS有时候也被更新以容纳目标计算机系统上的新特征,RAID是一个示例。在进行这些更新时的关键优先级之一也是保持设计文档为最新。这是现代化软件工程的基本维护原则之一。
在多数基于计算机的系统的开发和测试期间频繁地执行重新镜像系统的任务。MINDS系统具有数个创新的方面,这些方面结合起来可以从降低支持开销(工时)、减小镜像时的时间延迟、降低软件开发成本以及提供容易地支持宽范围的镜像组的能力而提供对投资的实际回报。所描述的一个重要创新在于MINDS内类似于可交换的构建块的动作的使用,所述动作被组装以形成定义所希望的过程的动作树。本发明的该方面改变如何创建新的镜像过程。将会知道,以前是软件开发练习的过程在MINDS下被转换为构建块组装过程——就像一个人可以用一批足够的块来建立任何希望的小结构。除了软件镜像之外,MINDS的灵活框架还可以用在许多其他类型的过程中,而不脱离本发明的教导。
虽然上述描述包含许多细节,但是这些不应该被解释为限制本发明的范围,而仅仅是提供本发明的一些当前优选的实施例的说明。因此,将会知道,本发明的范围全面包括对本领域技术人员来说可以变得显而易见的其他实施例,并且本发明的范围因此只由所附的权利要求来限制,其中对单数形式的元素的引用不是意味着“一个和仅仅一个”,除非明确地这样声明,否则意味着“一个或多个”。上述优选实施例的元素的所有对本领域普通技术人员来说已知的结构和功能等同物被通过引用而明示地包含在这里,并且希望被当前的权利要求所包括。此外,设备或方法不必解决本发明想要解决的每个问题,因为其将被当前的权利要求所包括。此外,本说明书中的元素、组件或者方法步骤都不希望专用于公用,而不管该元素、组件或者方法步骤是否在权利要求中明确地叙述。这里的权利要求元素都不要解释为符合35 U.S.C.112的第六款的规定,除非用短语“用于…的装置”来明示地叙述该元素。
Claims (20)
1.一种用于计算机上的软件程序镜像的自动配置的装置,包括:
模块化网络下载程序,被配置为访问来自网络的镜像文件以配置计算机上的程序镜像;
多个动作例程,所述动作例程中的每一个都被配置为执行所述模块化网络下载程序内的具体操作;以及
用于定义将由所述模块化网络下载程序执行的所述动作例程的树的装置。
2.如权利要求1所述的装置,其中,所述动作例程被动态地链接到所述模块化网络下载程序。
3.如权利要求1所述的装置,其中,所述动作例程的所述树由不需要被编译的配置文件内的文本来定义。
4.如权利要求1所述的装置,其中,所述模块化网络下载程序包括:
管理层,被配置用于在所述动作树的游历期间执行动作;以及
用户接口,被配置用于针对正在执行的希望的自动安装,控制所述管理层的操作。
5.一种用于计算机上的软件程序镜像的自动配置的装置,包括:
具有多个动作的动作树层,所述动作可以在自动软件安装期间被动态链接执行;
至少一个具有多个节点的动作树,所述节点中的每一个包含至少一个指向来自所述动作树层的动作的指针;
管理层,被配置用于在所述动作树的游历期间执行动作;以及
用户接口,被配置用于针对正在执行的希望的自动安装,控制所述管理层的操作。
6.如权利要求5所述的装置,其中,所述动作例程的所述树由不需要被编译的配置文件内的文本来定义。
7.如权利要求5所述的装置,其中,所述动作是可以在给定的动作树内和不同的动作树之间重用的功能上独立的动作。
8.如权利要求5所述的装置,其中,所述动作中的任何一个可以作为分别的执行线程而被载入,从而允许所述动作对其他请求进行响应。
9.如权利要求5所述的装置,其中,不同的动作树可通过所述用户接口作为操作模式来选择。
10.如权利要求5所述的装置,其中,用户可以通过所述用户接口或者使用由动作本身所产生的用户接口或这两种用户接口的组合,与所述动作交互。
11.如权利要求5所述的装置,其中,所述软件程序镜像包括单个基础镜像或者单个基础镜像与至少一个应用程序模块的组合。
12.如权利要求5所述的装置,其中,所述管理层不必响应于所述动作树中的变化和来自所述动作树层内的不同动作的链接或释放而被重新编译。
13.如权利要求5所述的装置,其中,所述动作树的每个所述节点包含指向动作的指针、指向所述动作树的子节点的指针和指向所述动作树的兄弟节点的指针。
14.如权利要求5所述的装置,其中,所述用户接口被配置为允许用户为所述装置选择操作模式。
15.如权利要求14所述的装置,其中,所述操作模式可以从一组操作模式中被选择,所述一组操作模式基本上包括:无人看管模式、工厂车间、组件选择模式、扩展组件选择模式、基础镜像上载以及自由式镜像上载和下载。
16.如权利要求5所述的装置:
其中,所述指向动作的指针不指定具体的动作,而是指定所述动作树中与该动作相关联的位置;并且
其中,所述动作本身保持彼此独立。
17.如权利要求5所述的装置,其中,可以在动作树内从一组处理的动作中选择所述动作的一个或多个以供执行,这组处理的动作基本上包括:创建Mcode介质、从系统的桌面管理接口(DMI)上载Mcode、下载基础镜像到系统硬盘驱动器、下载应用模块镜像到系统硬盘驱动器、从系统硬盘驱动器上载基础镜像、从系统硬盘驱动器上载应用模块镜像、从恢复分区恢复基础镜像、介质版本验证、位块传送、分配目标驱动器、选择基本单元、清理镜像移除不必要的文件、将镜像复制到恢复分区、将模块复制到分区、创建镜像CRC、创建Mcode软盘、显示飞溅屏幕、显示桌面管理接口比较、弹出介质、找到正确的目标驱动器、获得硬盘驱动器信息、验证是否在网络子网上、结束日志会话、映射网络驱动器、分区查询、分区硬盘驱动器、重新启动、受限登入、返回主菜单、验证镜像组件存在以及创建线程。
18.一种利用软件程序镜像配置计算机的方法,该方法包括:
创建和编译用于执行计算机上的镜像配置动作的一组可分别执行的动作;
创建和编译管理层,所述管理层执行在所选择的动作树内所定义的动作;
创建和编译用户接口层,所述用户接口层控制动作树选择和穿过所述动作树的行进;
创建具有多个节点的动作树结构,所述节点包括指向动作和指向所述动作树中的其他节点的指针;以及
将所述动作、管理层、用户接口和动作树链接到程序,所述程序根据用户输入而执行在所述动作树中所定义的动作。
19.如权利要求18所述的方法:
其中,所述动作树结构包括根据子指针关系、兄弟指针关系或者子指针关系和兄弟指针关系彼此的组合而连接的节点;并且
其中,所述指针关系包括指向动作所位于的动作树中的节点位置的指针。
20.如权利要求18所述的方法,其中,所述软件程序镜像包括单个基础镜像与至少一个应用程序模块的组合。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/090,637 | 2005-03-25 | ||
US11/090,637 US7653903B2 (en) | 2005-03-25 | 2005-03-25 | Modular imaging download system |
PCT/US2006/010936 WO2006104940A2 (en) | 2005-03-25 | 2006-03-23 | Modular imaging download system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101501637A true CN101501637A (zh) | 2009-08-05 |
CN101501637B CN101501637B (zh) | 2013-08-21 |
Family
ID=37036668
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200680009729.9A Expired - Fee Related CN101501637B (zh) | 2005-03-25 | 2006-03-23 | 模块化镜像下载系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7653903B2 (zh) |
JP (1) | JP2008538026A (zh) |
CN (1) | CN101501637B (zh) |
WO (1) | WO2006104940A2 (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102902770A (zh) * | 2012-09-26 | 2013-01-30 | 东软集团股份有限公司 | 一种镜像文件拼装方法及系统 |
CN103838563A (zh) * | 2012-11-27 | 2014-06-04 | 台博机器人股份有限公司 | 自动装置的程序开发方法 |
CN103858392A (zh) * | 2011-08-02 | 2014-06-11 | 凯为公司 | 包分类规则的增量更新 |
CN104699556A (zh) * | 2015-03-23 | 2015-06-10 | 广东威创视讯科技股份有限公司 | 计算机的操作系统crc校验方法和系统 |
CN105579962A (zh) * | 2013-09-27 | 2016-05-11 | 西部数据技术公司 | 用于将镜像加快加载到存储装置上的系统和方法 |
US9430511B2 (en) | 2013-03-15 | 2016-08-30 | Cavium, Inc. | Merging independent writes, separating dependent and independent writes, and error roll back |
CN105930230A (zh) * | 2016-04-18 | 2016-09-07 | 乐视控股(北京)有限公司 | 多层镜像的管理方法 |
US9595003B1 (en) | 2013-03-15 | 2017-03-14 | Cavium, Inc. | Compiler with mask nodes |
US10083200B2 (en) | 2013-03-14 | 2018-09-25 | Cavium, Inc. | Batch incremental update |
US10229139B2 (en) | 2011-08-02 | 2019-03-12 | Cavium, Llc | Incremental update heuristics |
CN110091323A (zh) * | 2018-01-30 | 2019-08-06 | 优必选教育(深圳)有限公司 | 一种智能设备及机器人的控制方法、具有存储功能的装置 |
US10460250B2 (en) | 2013-03-15 | 2019-10-29 | Cavium, Llc | Scope in decision trees |
CN115515001A (zh) * | 2021-06-22 | 2022-12-23 | 荣耀终端有限公司 | 屏幕镜像方法、装置、设备及存储介质 |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6886038B1 (en) * | 2000-10-24 | 2005-04-26 | Microsoft Corporation | System and method for restricting data transfers and managing software components of distributed computers |
US7890543B2 (en) * | 2003-03-06 | 2011-02-15 | Microsoft Corporation | Architecture for distributed computing system and automated design, deployment, and management of distributed applications |
US8122106B2 (en) * | 2003-03-06 | 2012-02-21 | Microsoft Corporation | Integrating design, deployment, and management phases for systems |
US8489728B2 (en) * | 2005-04-15 | 2013-07-16 | Microsoft Corporation | Model-based system monitoring |
US20060241954A1 (en) * | 2005-04-22 | 2006-10-26 | International Business Machines Corporation | Method and system for adaptive action management for business solutions |
US7886269B2 (en) | 2005-04-29 | 2011-02-08 | Microsoft Corporation | XML application framework |
US8132148B2 (en) * | 2005-04-29 | 2012-03-06 | Microsoft Corporation | XML application framework |
US20070016393A1 (en) * | 2005-06-29 | 2007-01-18 | Microsoft Corporation | Model-based propagation of attributes |
US8549513B2 (en) | 2005-06-29 | 2013-10-01 | Microsoft Corporation | Model-based virtual system provisioning |
US7941309B2 (en) * | 2005-11-02 | 2011-05-10 | Microsoft Corporation | Modeling IT operations/policies |
US8370423B2 (en) | 2006-06-16 | 2013-02-05 | Microsoft Corporation | Data synchronization and sharing relationships |
KR101288970B1 (ko) | 2006-11-28 | 2013-07-24 | 삼성전자주식회사 | 렌더링 장치 및 방법 |
US7900203B2 (en) * | 2007-04-24 | 2011-03-01 | Microsoft Corporation | Data sharing and synchronization with relay endpoint and sync data element |
US20080288622A1 (en) * | 2007-05-18 | 2008-11-20 | Microsoft Corporation | Managing Server Farms |
US8924920B2 (en) * | 2008-02-29 | 2014-12-30 | Red Hat, Inc. | Providing a software appliance based on a role |
US9092243B2 (en) | 2008-05-28 | 2015-07-28 | Red Hat, Inc. | Managing a software appliance |
US8868721B2 (en) | 2008-05-29 | 2014-10-21 | Red Hat, Inc. | Software appliance management using broadcast data |
US10657466B2 (en) | 2008-05-29 | 2020-05-19 | Red Hat, Inc. | Building custom appliances in a cloud-based network |
US9032367B2 (en) | 2008-05-30 | 2015-05-12 | Red Hat, Inc. | Providing a demo appliance and migrating the demo appliance to a production appliance |
US9477570B2 (en) | 2008-08-26 | 2016-10-25 | Red Hat, Inc. | Monitoring software provisioning |
US8266684B2 (en) | 2008-09-30 | 2012-09-11 | General Instrument Corporation | Tokenized resource access |
EP2340484A1 (en) * | 2008-10-27 | 2011-07-06 | Hewlett-Packard Development Company, L.P. | Imaging process |
US9081747B1 (en) | 2012-03-06 | 2015-07-14 | Big Bang Llc | Computer program deployment to one or more target devices |
US11861363B2 (en) * | 2021-10-22 | 2024-01-02 | Sap Se | Development landscape build system |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5809251A (en) * | 1996-10-09 | 1998-09-15 | Hewlett-Packard Company | Remote installation of software by a management information system into a remote computer |
US6378127B1 (en) * | 1998-09-21 | 2002-04-23 | Microsoft Corporation | Software installation and validation using custom actions |
US7103647B2 (en) | 1999-08-23 | 2006-09-05 | Terraspring, Inc. | Symbolic definition of a computer system |
US7093005B2 (en) | 2000-02-11 | 2006-08-15 | Terraspring, Inc. | Graphical editor for defining and creating a computer system |
US20020124245A1 (en) * | 2000-08-14 | 2002-09-05 | Alvin Maddux | Method and apparatus for advanced software deployment |
US20020107959A1 (en) | 2001-02-05 | 2002-08-08 | Koninklijke Philips Electronics N.V. | Customization of decision-tree based control process |
US20020167546A1 (en) | 2001-05-10 | 2002-11-14 | Kimbell Benjamin D. | Picture stack |
US20030208378A1 (en) | 2001-05-25 | 2003-11-06 | Venkatesan Thangaraj | Clincal trial management |
US20030001903A1 (en) * | 2001-06-08 | 2003-01-02 | Michael Duffy | Software-based system for educational tools |
US20040103220A1 (en) | 2002-10-21 | 2004-05-27 | Bill Bostick | Remote management system |
US7392165B2 (en) | 2002-10-21 | 2008-06-24 | Fisher-Rosemount Systems, Inc. | Simulation system for multi-node process control systems |
US20040146272A1 (en) | 2003-01-09 | 2004-07-29 | Kessel Kurt A. | System and method for managing video evidence |
US7249353B2 (en) | 2003-04-17 | 2007-07-24 | Hewlett-Packard Development Company, L.P. | Image-formation device firmware having modular upgrade capability |
CA2432631A1 (en) | 2003-06-17 | 2004-12-17 | Ibm Canada Limited - Ibm Canada Limitee | Method for managing tree presentations in graphical user interfaces |
-
2005
- 2005-03-25 US US11/090,637 patent/US7653903B2/en not_active Expired - Fee Related
-
2006
- 2006-03-23 WO PCT/US2006/010936 patent/WO2006104940A2/en active Application Filing
- 2006-03-23 CN CN200680009729.9A patent/CN101501637B/zh not_active Expired - Fee Related
- 2006-03-23 JP JP2008503253A patent/JP2008538026A/ja not_active Withdrawn
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103858392B (zh) * | 2011-08-02 | 2018-12-14 | 凯为公司 | 用于更新规则编译数据结构的方法和装置 |
CN103858392A (zh) * | 2011-08-02 | 2014-06-11 | 凯为公司 | 包分类规则的增量更新 |
US10229139B2 (en) | 2011-08-02 | 2019-03-12 | Cavium, Llc | Incremental update heuristics |
CN102902770B (zh) * | 2012-09-26 | 2015-04-15 | 东软集团股份有限公司 | 一种镜像文件拼装方法及系统 |
CN102902770A (zh) * | 2012-09-26 | 2013-01-30 | 东软集团股份有限公司 | 一种镜像文件拼装方法及系统 |
CN103838563A (zh) * | 2012-11-27 | 2014-06-04 | 台博机器人股份有限公司 | 自动装置的程序开发方法 |
CN103838563B (zh) * | 2012-11-27 | 2017-07-28 | 台博机器人股份有限公司 | 自动装置的程序开发方法 |
US10083200B2 (en) | 2013-03-14 | 2018-09-25 | Cavium, Inc. | Batch incremental update |
US10460250B2 (en) | 2013-03-15 | 2019-10-29 | Cavium, Llc | Scope in decision trees |
US9430511B2 (en) | 2013-03-15 | 2016-08-30 | Cavium, Inc. | Merging independent writes, separating dependent and independent writes, and error roll back |
US10229144B2 (en) | 2013-03-15 | 2019-03-12 | Cavium, Llc | NSP manager |
US9595003B1 (en) | 2013-03-15 | 2017-03-14 | Cavium, Inc. | Compiler with mask nodes |
CN105579962B (zh) * | 2013-09-27 | 2019-06-28 | 西部数据技术公司 | 用于将镜像加快加载到存储装置上的系统和方法 |
CN105579962A (zh) * | 2013-09-27 | 2016-05-11 | 西部数据技术公司 | 用于将镜像加快加载到存储装置上的系统和方法 |
CN104699556B (zh) * | 2015-03-23 | 2017-12-08 | 广东威创视讯科技股份有限公司 | 计算机的操作系统crc校验方法和系统 |
CN104699556A (zh) * | 2015-03-23 | 2015-06-10 | 广东威创视讯科技股份有限公司 | 计算机的操作系统crc校验方法和系统 |
CN105930230A (zh) * | 2016-04-18 | 2016-09-07 | 乐视控股(北京)有限公司 | 多层镜像的管理方法 |
CN110091323A (zh) * | 2018-01-30 | 2019-08-06 | 优必选教育(深圳)有限公司 | 一种智能设备及机器人的控制方法、具有存储功能的装置 |
CN110091323B (zh) * | 2018-01-30 | 2020-11-24 | 优必选教育(深圳)有限公司 | 一种智能设备及机器人的控制方法、具有存储功能的装置 |
CN115515001A (zh) * | 2021-06-22 | 2022-12-23 | 荣耀终端有限公司 | 屏幕镜像方法、装置、设备及存储介质 |
CN115515001B (zh) * | 2021-06-22 | 2023-10-24 | 荣耀终端有限公司 | 屏幕镜像方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101501637B (zh) | 2013-08-21 |
JP2008538026A (ja) | 2008-10-02 |
WO2006104940A2 (en) | 2006-10-05 |
US20060218547A1 (en) | 2006-09-28 |
WO2006104940A3 (en) | 2009-04-16 |
US7653903B2 (en) | 2010-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101501637B (zh) | 模块化镜像下载系统 | |
JP3492755B2 (ja) | ワークプロセスモデル作成システム | |
JP5160808B2 (ja) | ビジネスプロセスの展開 | |
JP5242942B2 (ja) | ビジネスプロセステンプレートとしてのアドホックワークフロー | |
US7343587B2 (en) | System for creating, managing and executing computer testing and task management applications | |
US8881105B2 (en) | Test case manager | |
US5864480A (en) | Computer-implemented electronic product development | |
US5671415A (en) | System and method for facilitating software development | |
Wasserman et al. | The future of programming | |
US20170364843A1 (en) | Process Visualization Platform | |
US7240297B1 (en) | User assistance system | |
US20040107415A1 (en) | Web-interactive software testing management method and computer system including an integrated test case authoring tool | |
EP0841614A2 (en) | System and method for building, testing and integrating a graphical touch user interface | |
US20040205691A1 (en) | Interactive agent for a topological multi-tier business application composer | |
Hindel et al. | Robotic process automation: Hype or hope? | |
US9507587B2 (en) | Application-centric resources and connectivity configuration | |
US20070028174A1 (en) | Grid processing dynamic screensaver | |
Mahey | Robotic Process Automation with Automation Anywhere: Techniques to fuel business productivity and intelligent automation using RPA | |
AU5401498A (en) | Data processing system and method | |
US20080172669A1 (en) | System capable of executing workflows on target applications and method thereof | |
US7707017B2 (en) | System modeling facilitating method and apparatus | |
Connors | Software development methodologies and traditional and modern information systems | |
CA2098415A1 (en) | Computerized general purpose process control system and method employing generic process building blocks | |
US9256857B2 (en) | Scheduling start-up and shut-down of mainframe applications using topographical relationships | |
Lano et al. | Software design using Java 2 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1137239 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1137239 Country of ref document: HK |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130821 |