(计算机应用技术专业论文)自动软件发布系统的研究和实现.pdf_第1页
(计算机应用技术专业论文)自动软件发布系统的研究和实现.pdf_第2页
(计算机应用技术专业论文)自动软件发布系统的研究和实现.pdf_第3页
(计算机应用技术专业论文)自动软件发布系统的研究和实现.pdf_第4页
(计算机应用技术专业论文)自动软件发布系统的研究和实现.pdf_第5页
已阅读5页,还剩68页未读 继续免费阅读

(计算机应用技术专业论文)自动软件发布系统的研究和实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

浙江大学硕上学位论文摘要 摘要 企业的信息化在提高企业效率的同时,也带来了管理和运营上的负担。企业 中的i t 部门通常需要负责操作系统安装和升级,安全补丁的部署,应用程序的部 署和升级等任务。随着企业规模的扩大,这些任务大多数情况下需要跨越不同的 时问、地域和软硬件平台。这样复杂的部署环境,再加上多变的部署需求,不仅 增加了管理的难度和成本,也降低了管理的效率,如果不采取措施,管理成本将 迅速增加,并远远超过软件本身的价值。因此,开发可重用的部署过程管理软件, 实现对软件部署的统一管理,成了当务之急。 z s d t ( z j us o f h v a 陀d e i i v c r y1 o o l k t ) 自动软件发布系统就是在这种需求下 诞生的。z s d t 能够降低企业软件部署的风险和复杂度。该系统可以自动完成软 件部署的各个环节,包括计划、执行、报告等。然而,z s d t 中核心功能是软件 包的无人值守安装通过本论文将要介绍的z s d t 打包器和z s d t 发布代理, z s d t 实现了软件包的无人值守安装和卸载,并能监控整个过程。 z s d t 打包器通过在一台“样本计算机”上安装需要发布的软件,并通过截 获系统调用以“记录软件行为”,从而创建z s d t 自定义的软件包而z s d t 发 布代理是一个运行于终端计算机上的程序,它接受z s d t 的控制,负责在终端计 算机上部署软件包或回滚已经部署的软件包。本文介绍了这两个模块的设计思路 和实现方法。主要工作包括: 针对z s d t 支持各种安装包格式等特点,设计和实现了z s d t 打包器。通过 分析打包器设计的设计目标,提出了多种可能的设计方案,并最终选择了最有效 的“记录软件行为”的方案。设计和开发了该方案所依赖的内核态模块和用户态 模块调查和解决了开发过程中的多项难题,包括系统调用截获、注册表和文件 系统的实时监视、软件安装过程中重新启动计算机并在重启后自动继续打包等。 针对z s d r r 需要( 1 ) 按需安装软件包( 2 ) 无人值守部署,并监视安装过程 ( 3 ) 可回滚部署的软件等特点,设计和实现了z s d t 发布代理。主要包括以下 模块;控制命令监听模块,使终端计算机能接受z s d t 的统一管理:软件包下载 模块,实现软件包的按需下载和断点续传;软件包部署和回滚模块,实现软件的 无人值守部署,以及按需回滚。 关键词自动软件发布系统,软件部署,打包器,系统调用截获 浙江大学硕上学位论文 a b ! 由1 c t a b s t r a c t w h i i et i ”印p l i c a l i o no fi n 如加a t i o n t h n o l o g yi ne n t e r p f i s m p r o v e d e f n c i 朗c y t a 1 9 0 b r i n g se x 妇b u r d e n i i i m 卸a g e m e n ta i l d o p c 】r a t i o n s t h e i t d e p a r h t l e n t si ne n t e 巾r i s 嚣a 俺u 鲫a i l y 他s p o n s i b i ef o rt i l ei n s t a l i a t i o n 卸du p g m d i n go f t i l eo p e r a t i n gs y s t c i i i ,s c c u r 时p a l c h 髂锄da p p l i c a t i o n s a s 协es c a l eo fe n 蛔甲r i 螂 e x a g g e m t e s t h em 勾硎t yo ft i e t a s k sr e q u i 佗c r o 豁d i f r c r 锄tt i m e ,p l c 卸dm c h a r d 黼卸ds o f h v a 障p i a 响帅s u c hc o m p l c xc n v i 砌帅e 址w 油e v e h h 锄g i n g n c c d so ft h ed c p l o y m e n th 硒n o to n i yi n c r dt l l ed m c u 时柚dm a n a g 伽朋tc o s t s b i i ta i f e d u c c dt l l ce 伍c i e n c yo fm a n a g c m e n t i f t i i s 协k c n ,m ec o s to f m a n a g e m e n tw i i ii n c r e a q u i c k i y 柚df i n a h yf 打愀e d e d 嘲e i u eo fl t l es o 胁a 阳 i t i f t h e 陀f b 喧t h cd e v c i o p m e n to f 陀u 照b l ed e p i o y m e n tp r o c e 站m a n a g e m e n t s 0 胁a mt ou n i 母t i l em a n a g e m e n to f s o f h v a 心d e i i v e f yh 勰b e c o m ea nu r g e n tt a s k z s d t ( z j us o f h v 珊d c i i v e r y1 b o l k i t ) a u t o m a t i cs o 脚瓣d e l i v e r ys y s t c mi s b 0 忸n 鲫c hd e m 卸d z s d tr c d u c 髓r i s k s 卸dc o m p l e x 时o fs o f i 、v a 他d e p l o y m e n ti n 蜘t e l p r i s t h es y s t c m 啪a u t o m a 把s o 胁a 佗d e p l o y m 朋t na 豁p e c t s ,i n c l u d n g p l 锄n i n g j l l l p l 啪朋协t i o f l 陀p o r t i n g h o w e v t 量l cc o 他f h n c t o no fz s d 下i sm e u n a n c n d e dp k a g ei n s t a l l a t i o n t h i sp a p 盯w i l li n 们d u c cz s d tp a c l 【a g e r 锄dz s d t d e l i v e l ya g e 鹏w i n lw h i c hz s d tf “z c dt i i cu n a t t c n d e d 胁a 陀i n s t a h a t i o n 柚d m b l c ,卸db c 曲i et 0s u p c r v i s et h ew b o l ep r o c e s s b yi n s t a l i n gs o f t w a 他o nas 姗p l ep c ,柚db yh k i n gs y s t 咖n s 粕dr e c o r d i n g i n s 诅l i a t 自p r o c c s s z s d tp l ( a g 盯c 佗a l 鼯p a c l c a g c sw h o 旬m 砒i sd e f i n e db y z s d t 散mt l m 辩o r i g i n a ls 0 胁撇p k a g c s a n dz s d td e i i v e r ya g 朋ti s r e s p o n s j b l e 如rt i l ed c p i o y m e n to f t h cp a c k a g c st 0 锄1 i l i n a ic o m p u t e 瞧t h i sp a p e rw 1 l m t r o d u c eh o wt l l e t w op r o g 舢si sd e s i g i l e d 锄di m p l e m e n 自e d 1 1 1 cm a i nc o n 咖t s 锄dc 伽t r i b u t i o n so f t t i ew o r i ca r ea sf b n o w s : d e s 咖柚di m p l 伽e n tz s d tp k a g e r w h i c h 蛐p 聊t sa nk i n d so fp a c k a g e f o m a t s b y 锄a l y z i n gd e s i 印o b j e c t i v w ep 陀n tt h r p 0 骆b l e l l l t i o n s 锄d f i n a l i yc h o t h em o s te f f k t i v e ”化c o r ds o 胁a ”s o l u t i o n d e s j g n 锄di m p l e m e n tt l l e k c m e lm o d em o d u l e 锄dt l l cu s 盯m o d cm o d u l eo fz s d tp k 鸩i n v e s t i g a 忙卸d r e l v ean u m b c ro f p r o b i e m sr a i s e dd u r i n gd e v e t o p m e “i n c l u d i n gs y s t e mc a l i sh o o k s t l l er e a l t i m em o n i t o i o f 佗g i 蚰y 粕df i l es y s t 锄,r e b o o t 锄dc o n t i n u cp a c k a g ;n g d e s 细锄di 呷l 锄c n tz s d td c i i v 吖a g c n t 搬o r d i n gt oi t sd e s 晒0 b j e c t i v 酷 w h i c hi i i c l u d c :( 1 ) 一d e m 锄ds o f t w a 坤d o w n l o a d 锄di n s 嘲i a t i o n ( 2 ) u n a n 明d e d s o f t 啪d e p i o y m 曲l 卸dp r o c e 鼹m 伽i t 啊( 3 ) 伽- d 鲫彻dm b a c k o fp 心v i o 憾 i 1 1 s 协i l a t i d l c s 细锄di m p l c 眦n tt h ef o l l a w i n gm o d u i e so fz s d td e i i v e r ya g 朗t : 浙江大学硕士学位论文a k t r a c i c o n h ic 啪m 锄d sm o n i t o r i n gm o d u l e ,w h i c h p t 咖m e dm 彻a g e m e n to fz sd ,r ; f t w a d o w n l o a dm o d u l 岛w h i c hd o w n l o a dp k a g eo nd e m a n d ;s o f t w a r e d e p l o y m e n t 锄df o l l b a c km o d u l e ,w h i c hd c p l o y 柚dm n b a c ks o r w a 他叫蛔叭a t i c a y k e ”o r d s a u t o m a t e ds o f t w a 糟d e | i v e r ys y s t e m ,s o f t w a md c p l o y m e n t p a c l ( a g e r s y s t e m c a n h o o k 浙江大学硕士学位论文田目录 图目录 图i 1z s d t 自动软件发布系统的系统结构图 图3 1c 瑚嘲:i l e 的触发的调用链 图3 2w i n d o w sn t 体系结构 图3 3n 1 1 ) l l 中的n t c r e a t e f i l e 汇编代码。 图3 4n t o s k m l e 船中的z w c 瞅l t e f i l c 的汇编代码 1 。1 2 1 4 1 5 图3 5k e s e r v i c c d e s c r i 肿) r r a b l c 与k i s e r v i c e t a b i e 的关系1 6 图3 6s y 咖ms e r v 妇t a b l e 相关数据结构 图3 7 链接到k e s e r v i c e d e s c r i p t o r l a b l c 图3 8 修改k i s e r v i t a b i c 以截获n t c 他a t e f i i e ( 1 ) 图3 9 修改k i s e r v i c c t 抽l e 以截获n t c r e a t c f i l c ( 2 ) 图3 1 0 截获文件系统调用 图3 1 1 文件系统截获实现 图3 一1 2 通过w i n d b g 查看一e p r o c e s s 结构体 图3 1 3z a p i h 0 0 k :h o o k 1 7 1 7 1 7 1 8 2 0 图3 1 4 正确的z w d e l 舶e v a l k e y 声明。 图3 1 5 错误的z w d e i e t e v a l u e k e y 声明 图3 1 6w d m _ 一m a j o r v e r s i o n 和w d m m i n o r v e r s i o n 图3 一1 7 使用d l l j m p o r t 声明时的反汇编代码 图3 1 8 不使用d l j i m p o r t 声明时的反汇编代码 图4 - lz s d t a p p 模块划分 图4 - 2 z s d t a p p 的打包流程 图4 3 监视状态下的z f i l d t h 陀a d 图4 5z f ;l e l i i r e a d :d u m p s t 0 他 图4 - 6 向导容器与向导页类图 图4 - 7w i n d o w s 系统进程的父子关系 图5 1z s d t a 臼1 1 s v r 模块划分 图5 - 2 部署回滚命令交互过程 图5 - 3 控制命令监听模块的运行流程 圈5 4 包数据库的结构 图5 5 部署过程 图5 6 回滚过程。 图5 7 部署,回滚命令的内容 图5 8s t o p l n s t a l l 交互过程 图5 9 取消过程。 图5 1 0 包的下载过程 图5 1 lz t t m 引0 c k 和z s d t l h s v r 交互 图5 1 2z s d t l n s l l l r c a d 的部署过程 图5 1 3z s d t i n s t a l i c r 的流程 图5 - 1 4z f i l e i i i s t a l i 的流程 筋巧拍;号拍”勰加如弛叭铊铊钉帖拍钉铝如孔观铝舛 浙江大学硕上学位论文 圈目录 图5 - 1 5o p c 】r a l i o n d a t a 有关文件系统的子类 图5 1 6c r e a t e f i l e c i p e r a t i o l l 类的继承关系 图6 1 输入包信息界面 图6 - 2 正在监视界面 图6 - 3 提示先运行一次成功安装的软件 图6 - 4 分析安装界面 图6 5 配置安装界面 图6 - 6 设置重启选项界面 v 5 5 5 6 5 6 5 9 6 0 6 l 6 l 6 2 6 3 浙江大学硕士学位论文 表目录 表2 1 文件系统操作 表2 2 注册表操作 表 表 表目录 3 - 2 i o 控制接口 l o l l 2 3 2 8 浙江大学硕士学位论文 第1 章绪论 1 1 研究背景 第1 章绪论 企业的信息化在提高企业效率的同时,也带来了管理和运营上的负担。企 业中的i t 部门通常需要负责操作系统安装和升级,安全补丁的部署,应用程序 的部署和升级等任务随着企业规模的扩大,这些任务大多数情况下需要跨越 不同的时问、地域和软硬件平台。这样复杂的部署环境,再加上多变的部署需 求,不仅增加了管理的难度和成本,也降低了管理的效率,如果不采取措施, 管理成本将迅速增加,并远远超过软件本身的价值因此,开发可重用的部署 过程管理软件,实现对软件部署的统一管理,成了当务之急。 1 1 1z s d t 介绍 z s d t ( z i us o f t 、忸心d e i i v e r y1 o o l k n ) 自动软件发布系统就是在这样的背 景下开发的它的系统架构如( 图1 1 ) 所示。z s d t 能够降低企业软件部署的风 险和复杂度。该系统可以自动完成软件部署的各个环节,包括计划、执行、报 告等。如果需要,z s d t 还可以回滚部署过程,使计算机恢复到最初的状态 整个过程通过图形化界面,或、b 界面完成。 b b 暇务器 ( z 州t - e b 破截器车 _ 目目吟 飙教器肆获瞻任务 。、 黼争l 昌 龠夸服务摹 ( z | d t c - 以v r ) 飞二固篙 舱舯“嘲 攒罂茹 震黜柚 图1 1z s d 下自动软件发布系统的系统结构图 每个软件在安装时都会提供一个曼裳召,如w i n d o w s 平台上的软件的安装 包通常会包括一个黄凌:蠢炉( 如s 咖p 艇e ) 和该程序依赖的资源。用户通过运 浙江大学硕士学位论文 第l 章绪论 行安装程序,并输入定制化信息,完成软件的安装软件在安装过程中,通常 会创建角藉盘,它通常包括一个勿蜜霍垆( 如u n i 协l i e x e ) 和该卸载程序依赖 的资源。 通过z s d t ,管理员( 即负责统一管理企业中的计算机的人员) 在安装软 件时的工作就可以简化为以下步骤: ( 1 ) 首先,基于某些考虑( 后而将有描述) ,z s d t 要求管理员根据软件 原有的安装包,创建一个新的安装包。这个过程需要管理员在一台参考:莠统匕, 使用一个为称为抛嚣( z s d t p 姆) 的程序完成。参考系统就是指与终端计算机 的软硬件环境基本相同的系统。 ( 2 ) 管理员通过w 曲界面注册该安装包,这时安装包将被上传到劈鹈锾 务篙艮传输服务器时软件的安装包的存储场所。 ( 3 ) 管理员通过、b 界面发毋i 芰囊庄夯z s d t 里面定义了任务这一概 念,任务通常会包含执行时间、任务类别( 安装或卸载) 、任务的目标终端计算 机( 即在哪些终端计算机上执行任务) ,任务所需资源( 如安装包) 等信息。 ( 4 ) z s d t 会在终劈劳芽祝安装一个发j 声褶醒程序称为z s d 认n n s v r ,它从 命令服务器( z s d t c m d s v r ) 得到命令,并根据命令描述。适时地把软件从传输 服务器( z s d f r h s v r ) 下载到终端计算机,并适时的安装到终端计算机。 ( 5 ) 管理员通过w 曲界面查询该软件包的安装状态。查询可以在发布安 装任务后的任意时间进行 ( 6 ) 如果需要,管理员可以发布劫裁定务,z s d t 会自动完成卸载工作。 根据上面的描述,软件的安装包需要管理员的协助创建。软件的卸载包是 z s d t 在利用安装包安装软件时创建的,它对管理员来说是透明的因此,在 z s d t 中又把软件的安装包称为贸斧盘。另外,还把软件的安装成为艚 ( d c p 研) ,把软件的卸载成为凰游( r o n b a c k ) ,把发布安装任务和卸载任务统 秣兔发布任务, 本人所从事的工作,包括z s d t 打包器( z s d t p k f ) 的设计与开发、z s d t 发布代理( z s d t a n l l s v r ) 的设计与开发,就是在这样的背景下产生的。 1 1 2z s d t 特点 从终端计算机的角度来看,z s d t 具有以下特点: ( 1 ) 支持各种常见软件。不管软件的安装包为何格式,z s d t 都能实现对其 的自动安装、卸载。 ( 2 ) 按需部署( 安装) 软件,并监视部署过程z s d t 能根据终端计算机的 软件部署状况以及管理员的部署计划,按时按需地部署软件,并实时得 报告安装的状态 ( 3 ) 按需回滚( 卸载) 如果需要( 例如不再终端不再需要某个软件时) , 2 浙江大学硕士学位论文 第l 章绪论 z s d 下可以回滚根据该软件部署时记录的日志,回滚系统达到卸载特定 软件的目的。 ( 4 ) 自动同滚部署失败的软件。当在部署过程中发生错误时,z s d t 能使终 端计算机自动回滚到部署发生前的状态。 ( 5 ) 无人值守,定时部署,定时回滚。z s d t 只需要管理员事先制定部署( 或 回滚) 计划并做好准备操作,就可以在指定。 z s d t 打包器和z s d t 发布代理正是以上述特点为设计目标的。 1 2 研究现状 市场上有很多用于管理企业内桌面计算机的软件,他们被称为桌面计算机 管理软件。例如,现有的桌面计算机管理软件包括:a i t i r i s 的客户端管理套件; c a 的u n i c e n t c 资产管理、软件分发和远程控制:l a n d c 竦的管理套装;m o b i i e a u t o m 砒i o n 的移动生命周期管理套装;n e t s u p p o f t 的t c o ;v e c t o r n e m o r i ( s 的 p c - d u oe m e r p r i :p o w e 心u e s t 的p o 眦r i ) e p l o ys u 沁;n o v e l l 的z e n w o r k s ; x c e i l e n e t 的a f a r i a 等。 这些桌面计算机管理软件大多提供了软件分发的功能。它们能支持所谓的 “应用程序修复”功能“应用程序修复”这一概念最早在m i c r o f io 衢c c 中 提出最新版本的m i c r o s o f lw i n d o w si n s t a l l e r 已经直接支持按需安装和应用程 序自修复但问题是,并非所有的应用程序都会使用w i n d a w sl n s t a i i e r 或者 m i c r o s 0 1 ti n s t a l l e r ( m s i ) 格式的安装包。因此,这些应用程序的安装包必须被 转化。 创建软件分发的包,通常需要包括几个步骤。首先,需要一个目标系统的 安装前快照其次,在目标系统上安装软件。最后,获得目标系统上安装软件 后的快照。通过比较这两个安装i i f 后的快照,就能获得一个软件包了。 x c e l l e n e 竹使用p r i s md e p l o y 作为它的软件分发组件。可以通过这个工具 把桌面系统返回到以前的某个状态,其中的状态信息包括文件系统,注册表设 置以及其他的一下信息。而州锄d 印l o y 创建的软件包即包含了相应的状态信 息。p f i 锄d e p l o y 还支持分发m s i 格式的软件包。 n o v e i i 的z e n d e s k 引入了应用程序对象这一概念。这一概念使软件分发过 程更加清晰。应用程序对象包含了应月j 程序安装或运行时的环境和资源信息。 这其中包括运行所需的文件,执行目录,执行参数,系统位置,注册表设置等。 当因文件损害、注册表设置错误等原因导致应用程序不能正常运行时,应用程 序对象中包含的详细资料能让z e n d e s k 自动地修复错误。 m o b i l e a u t 咖a t i o n 的移动生命周期管理套装使用类似的快照技术创建软件 发布包为了实现软件修复,该软件会周期性的检查客户端,以保证被管理的 应用程序没有因为缺失设置或其他信息而不能正常的运行 a l t i r i s 的客户端管理套件包含了一个迁移工具,它能实现标准的软件分发 功能。这个工具使用安装前快照和安装后快照创建软件分发包。p c - d u o 本身 不能创建软件分发包,它需要依赖第三方的工具,例如i n s t a s h i e i d 。c a u n i 啪t 盯使用类似的快照技术创建软件发布包,它页支持m i c r o ni n s t a l 衙文 件并使用这个技术实现软件修复n c t s u p p o r t t c 0 也是使用快照技术创建软件 发布包的。 3 浙江丈学硕士学位论文 第l 章绪论 1 3 研究挑战 市场上软件包的格式多种多样。例如,有些安装包通过脚本文件执行安装 工作;有些则通过提供规定格式软件包,再由系统自带的软件安装模块负责安 装( 如粥i 软件包由w i n d o - si n s t a l l e r “1 完成安装过程,r 蹦软件包由r p m m 鲫a g e r 。3 程序安装) :还有些是其他一些安装包生成工具生成的格式并且 随着计算机技术的发展,必将出现新的软件包格式时。如何让z s d t 支持如此众 多的格式就成了一个关键问题。 软件在部署过程中,通常要求用户输入一些定制性信息而z s d t 需要自 动的向大量的计算机发布软件,这些计算机可能是位于不同的地点,不可能让 管理员到每台电脑上输入这些信息。因此z s d t 必须自动化部署过程,使之能在 无人值守时顺利进行 另外,软件的部署并不是都能成功的由于一些内外部原因,软件很可能 会部署失败。失败的原吲如软件包无法下载、下载软件包不正确、需要创建的 目标文件已存在且正被使用,部署的目标软硬件环境与软件包预期的软硬件环 境不同等等。因此不能假定每次安装肯定是能成功的,在失败时必须执行相应 的措施,例如回滚错误发生前所做的系统修改,报告错误的原因等。 z s d t 还需要保证,终端计算机系统在当机后能保持正确的状态。终端计算 机断电、操作系统挂起等异常情况在所难免,重要的是在情况恢复正常后能继 续正常的工作,并保证状态的正确。例如,在安装软件过程中,如果发生断电 情况,在之后系统启动后,必须回滚并报告错误,或者继续安装软件。在终端 计算机可能与管理员处于不同的城市甚至更远( 例如银行里的a n i 取款机就是 这样一个例子) 的情况中,这一要求变得更加重要。 1 4 主要工作 z s d t 中的打包器( z s d t p k g r ) 程序负责把所有其他类型的软件包格式,转 化为z s d t 规定的格式。而发布代理( z s d t a t m s v r ) 负责把转化后的软件包部署 到终端计算机上目前z s d t p k f 和z s d t a t 皿s v r 已支持i nn t 4 、w i n2 k ,w i n 职。w i n2 0 0 3 等n t 平台。本人正是负责z s d t 中这两个模块的设计和开发工作。 具体的工作如下: 针对z s e r r 支持各种安装包格式等特点,设计和开发z s d t p k g r 程序通过 分析打包器设计的设计目标,提出了多种可能的设计方案,并最终选择了最有 效的“记录软件行为”的方案设计和开发了该方案所依赖的内核态模块和用 户态模块调查和解决了开发过程中的多项难题,包括系统调用截获、注册表 和文件系统的实时监视、软件安装过程中重新启动计算机并在重启后自动继续 4 浙江大学硕士学位论文 第1 章绪论 打包等设计了z s d r r 软件包格式,并使z s d t p k f 创建此格式的软件包。为 z s d t p k g r 实现了内核态模块z s d t s y s 和用户态模块z s d t a p p 针对z s d t 需要( 1 ) 按需安装软件包,并监视安装过程( 2 ) 无人值守, 自动部署软件( 3 ) 可回滚部署的软件等特点,设计和开发了z s d t a t m s v r 程序, 包括了以下模块:z s d t a t m s 、,r 通讯处理模块,使终端计算机能自动接受z s d t 的统一管理;软件包部署和回滚模块,实现软件的无人值守部署,以及根据需 求回滚部署;软件包数据库模块,记录软件包在终端的部署状态,并负责在异 常情况下保证状态的正确性。 1 5 组织结构 本文共分为六章。各章内容如下: 第一章通过分析企业对自动软件发布系统的强烈需求,引入了z s w 自动 软件发布系统,并引入了其中的核心功能,即软件包的创建、部署和回滚。 第二章概述了软件包创建、部署和同滚的设计方案列举了多种可选方案, 并通过分析对比最终选定了“记录软件行为”这一方案。在此基础上,通过分 析软件安装程序的安装行为,归纳了通过截获系统调用,创建软件包的基本思 路。最后,构思了这一思路的实现方案,提出了打包器和终端计算机模块的设 计思路,并定义了它们之间的接口,即软件包的格式。 第三章分析了打包器中的内孩态模块的设计思路首先通过分析w i n d 州s n t 系统调用过程,提出了截获系统调用的方法。在此摹础上,通过分析w i n d o w s n t 上文件创建、修改和删除过程,归纳了截获文件系统a p i 时的问题;通过分 析w i n d 舛sn t 上注册表的k e y 创建、删除以及注册表v a l u e 的创建,修改和删 除过程,归纳了截获注册表a p i 时的问题。最后,总结了系统截获中的其他一 些遇到的问题,如路径获取,截获进程例外等。并提出了解决方法 第四章分析了打包器中的用户态模块的设计思路。分析在打包时的流程, 把打包器细分为g u i 模块、文件系统截获处理模块和注册表截获处理模块通 过结合打包器的内核模块的构架,设计了处理文件系统截获和注册表截获的模 块详述了g u i 模块的设计思路。最后提出了开机时自启动打包器的需要,以 及解决办法。 第五章分析了发布代理的设计思路。首先分析发布代理的功能需求,划分 了功能模块,阐述了工作流程。分析了软件包下载模块传输策略,以及设计特 点,并解释了设计思路。分析了软件包部署的各个环节,并提出了相应的设计 方案。最后简要描述了发布代理的信息查询模块和第三方软件接口模块 第六章描述了打包器的应用实例以及打包器的使用流程 第七章总结了本文的工作,并对将来要做的工作做了展望。 浙江大学硕士学位论文 第2 章系统架构分析与设计 第2 章系统架构分析与设计 2 1 设计方案选择 为了实现软件的自动发布,必须实现软件的无人值守情况下的部署和回 滚。但是大多数软件在安装时都需要用户输入定制性信息,包括用户名、安装 路径、序列号、需要安装的组件等,而卸载时则需要用户确认是否真需要卸载。 有些软件的安装包和卸载包提供了“安静模式”,如用胃i n d o w si n s t a l l e r 安装 璐i 软件包的时候,提供的q u i e t 选项。在安静模式下,只要启动安装或卸载 程序,就能在不需要用户参与的情况下完成安装或卸载。 问题是并非所有的安装包都支持安静模式,而z s d t 的设计目标是实现对 所有软件的自动发布,因此必须找到一种即能让用户定制信息,又能达到类似 于安静模式效果的方法。 2 1 1 解析软件包 每个操作系统通常都有一种或几种比较流行的包格式,如l i 肌x 上的l l p m 格式。曹i n d 佣s 上的粥i 格式。这些格式通常都是文档化的,因此可以通过解 析安装包,并从中提取安装信息,创建z s d t 白定义包。但是,因为如下缺点, z s d t 并没有采用该方案: 支持格式有限。因为有些软件包是二进制的可执行程序,或者是不公 开内部格式的,这时就不能支持这些格式了。 灵活性差。不能有效应对多变的安装包格式, 格式出现时,z s d t 需要修改。 工作量大。流行软件包的格式通常都很复杂, 当格式版本升级或新的 并且软件包格式很多 2 1 2 记录用户操作 一个方案是:记录用户在安装软件时的鼠标键盘操作( 如鼠标和键盘输 入) ,并在终端上向安装程序的进程发送模拟的鼠标键盘操作。具体步骤如下: ( 1 ) 首先让管理员在一台参考系统上执行一次安装和卸载操作,然后由一 个后台程序监视管理员的操作,并把记录的操作和软件自身的安装包发送到终 端计算机 ( 2 ) 终端计算机在需要安装软件时,启动安装包内的安装程序,然后通过 向安装程序进程发送模拟的用户输入,完成软件的安装。安装过程中,安装进 程会创建卸载包( 由安装包决定) ( 3 ) 如果用户需要卸载程序,则通过启动卸载程序,并向卸载发送模拟的 6 浙江大学硕士学位论文 第2 章系统架构分析与设计 用户输入。 但是,因为如下缺点,z s d t 并没有采用该方案: 无法有效处理异常情况因为我们只是向安装进程发送模拟的用户操 作,并不知道安装进程创建了哪些文件,修改了哪些注册表因此一 旦发生错误,如果安装程序没有回滚的功能,那些对终端计算机的修 改( 如创建文件) 将无法得知,更无法回滚 安装或卸载过程不可监控。唯一能确定的就是安装程序的进程是否开 始和是否结束。如果安装程序的进程创建了其他子进程执行安装操作, 并在所有予进程退出前退出了,那z s d t 就会误以为安装已经结束了。 容错性差。例如,因为需要向安装程序发送模拟输入,这就要求安装 程序必须按照z s d t 预期的流程m _ 现窗口,一旦出现一个预期之外的 窗口,安装过程就全部打乱了。 2 1 3 记录软件行为 软件部署的最终目的无非是修改系统信息,而在晰n d o w s 平台上,系统信 息可以分为文件系统信息和注册表信息。我们不需要模拟软件在部署( 安装 卸载) 过程中的行为,只要重现其最终的部署结果。也可以达到正确部署软件 的目的。而且,这个方案有如下优点: 适应多变的安装包格式。不管原有的安装软件是脚本、m i c m am s l 或是其他格式,该方案都只分析它们的安装结果。因此,可以说该方 案能把所有其他格式的软件包打成z s d 下规定的软件包。 能记录额外的管理操作在软件部署前后,管理员可能需要对系统做 一些操作,如安装前创建安装目录,安装后更改软件配置等。该方案 能记录这些操作,并一并打入软件包内 正确重现部署行为。即能正确把原安装包的行为记录并重复,不会遗 漏或错误地记录。 部署过程完全可监控。因为对终端计算机的修改实际上都是由z s d t 完成的,因此z s d t 可以根据需要记录部署的中问过程,并报告过程 中发生的错误以及错误的原因。 可随时回滚部署。因为记录了部署的中间过程,因此不管在软件部署 成功后,还是软件部署过程中,z s d t 都可轻易的实现回滚。 软件架构可扩展性强。在不同的软件平台上,软件的总体框架可以不 改变。只要稍作修改,就可以跨越不同的o s 平台 基于以上分析。我们将以该方案设计打包器。那么如何分析安装包安装时 对系统的更改,我们也有两种可选方案: 浙江大学碗上学位论文 第2 章系统架构分析与设计 幻在安装之前扫描系统状态,在安装之后再扫描一次系统状态( 如文件系 统状态和注册表状态) ,最后比较两次扫描的结果即,我们的打包程序只在安 装之前和之后监测系统的状态,在安装包安装的时候不做操作 这种做法的有点是编程简单:缺点是打包的效率低。当硬盘窄问很人时, 扫描整个硬盘的文件和目录结构非常耗费时间。一个修正的方案是限制扫描的 目录,例如排除那些安装包不太可能访问的盘符,排除一些临时目录。 ”在安装之前不做任何扫描,在安装时截获安装程序对系统的访问( 例如 对某个文件,某个目录,某个注册表项的访问) 并记录需要的信息,并在安装 结束时分析所有捕获的访问操作( 例如检查某个之前被访问文件的状态) 。 这种做法的优点是打包的效率高;缺点是需要涉及系统调用截获,编程难 度较大 为了提高程序的可用性,选择了方案b 2 2 软件行为抽象 通过上面的分析,z s d t 将以“记录软件行为”为基础设计打包器。那么 软件行为分为哪些呢? 安装程序在安装时,它实质上是进行了以下“操作”: 修改文件系统 修改注册表 2 2 1 修改文件系统 安装程序的目的之一是在硬盘上创建软件运行所需的文件和耳录但也不 仅限与此,具体可以分就为: 创建文件 删除文件 修改文件 创建目录 删除目录 2 2 - 2 修改注册表 安装程序的另一个目的是修改注册表,具体可以分为: 创建注册表k e y 删除注册表k e y 在注册表k c y 中创建v a i u c 修改注册表k e y 中的v h i 删除注册表k c y 中的v a l u e 0 浙江大学硕上学位论文 第2 章系统架构分析与设计 2 - 3 模块划分设计 在w i n d o w s 中创建文件可以调用c 他a t e f i l e ,创建注j j | 表k c y 可以调用 r e g c r e a t e k e y 以此类推,不管安装程序修改文件系统还是修改注册表,都需 要调用相应的系统a p l ( 系统调用) 。3 因此,就有了如下思路: 通过截获a p i 发现安装程序执行了哪些“操作” 把“操作”以及操作以来的数据打成包。 重现“操作”实现软件的安装。 因此,我们需要解决如下的问题: 需要截获哪些a p l ,如何截获这些a p i 截获以后如何提取“操作” 如何打包“操作”,即定义软件包格式 如何重现“操作” 2 3 1 打包器内核态模块( z s d t s y s ) 在w i n d o w s 中只有内核态模块才能修改内核,以截获我们所需的a p i 。因 此z s d t p k 伊中抽象出了z s d t s y s 模块负责a p i 的截获。 z s d t s y s 利用c 伽p u w a 的d r i v e r g t i l d i o 开发了一个内核服务模块 d r i v e r s t u d i o 可以大大加速w i n d o w s 设备驱动程序开发速度,特剐是其中的向 导功能d r i v e r w z a r d 、c + + 驱动框架d r i v e r w j r k s 、以及与m i c r o f tv i 辄a ls t u d o 的结合m 2 3 2 打包器用户态模块( z s d t a p p ) z s d t p k 伊通过z s d t a p p 这个用户态模块处理z s d t s y s 截获的信息并创建软 件包z s d 认p p 基于m f c ,是一个类似于安装向导的向导程序 2 3 3 发布代理( z s d t a t m s 、,r ) 为了在终端机计算机上自动地安装软件,z s d t 会在终端计算机安装一个 后台程序,即发布代理( z s d t a n n s v r ) ,该程序从命令服务器( z s d t c m d s v r ) 得到命令,并根据命令描述,适时地把软件从传输服务器( z s d t t m s v r ) 下载 到终端计算机,并适时的安装到终端计算机 9 浙江大学硕士学位论文 第2 章系统架构分析与设计 2 4 软件包格式定义 每个“修改”操作系统的操作都对应一定的信息。z s d t p k 旷创建的软件包 里只有包含这些信息,z s d 暖n s v r 才能成功的重现这些操作。本节将定义软件 包的格式。 2 4 1 1 文件系统修改 所有对文件系统的“操作”都被记录在一个日志( f i l c l i s t 胤) 里面。这个 日志文件是一个以行为单位的文本文件,每一个操作对应数行且第一行表示操 作类型,操作与操作之间用空行分隔。以下通过表格显示每个文件操作的格式: 表2 1 文件系统操作 浙江大学硕士学位论文 第2 章系统架构分析与设计 2 4 1 2 注册表修改 所有对文件系统的“操作”都被记录在一个日志( f i l e l i s t 戗t ) 里面。这个 日志文件是一个以行为单位的文本文件,每一个操作对应数行且第一行表示操 作类型,操作与操作之问用空行分隔。以下通过表格显示每个文件操作的格式: 表2 - 2 注册表操作 2 5 本章小结 本章概述了软件包创建、部署和回滚的设计方案列举了多种可选方案, 并通过分析对比最终选定了“记录软件行为”这一方案。在此基础上,通过分 析软件安装程序的安装行为,归纳了通过截获系统调用,创建软件包的基本思 路。最后,构思了这一思路的实现方案,提出了打包器和终端计算机模块的设 计思路,并定义了它们之间的接口,即软件包的格式。 浙江大学硕士学位论文 第3 章打包器内核态模块设计与实现 第3 章打包器内核态模块设计与实现 在w i n d 钾s 中只有内核态模块才能修改内核,以截获我们所需的a p i 。因 此z s d t p k g r 中抽象出了打包器内核态模块( z s d t s y s ) 模块负责a p i 的截获 z s d t s y s 利用c 0 叩啪r e 的d r i v e r s t u d i o 开发了一个内核服务模块 d r i v e r s t u d i o 可以大大加速w i n d w s 设备驱动程序开发速度,特别是其中的向 导功能d r i v e r 霄i z a r d 、c + + 驱动框架d r i v e r w 0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论