Updater Application Block v1.0 - 1.7 应用程序加载器设计
应用程序加载器就像“解靴带”或“垫子”一样,通过它可以启动由应用程序升级器更新的应用程序。这一章节将介绍下面的几个关于应用程序加载器的方面:
问题描述
设计目标、权衡和问题
解决方案描述
具体实现
问题描述
在应用程序运行时升级应用程序是一件困难的事情,Updater Application Block需要提供一种方法,该方法允许应用程序升级器下载并且安装升级文件,同时又要允许用户继续使用正在更新的应用程序。
设计目标、权衡和问题
Updater Application Block开发人员识别出了以下一些与应用程序加载器相关的设计目标、权衡和问题
1. 应用程序加载器应该在一个独立进程中启动最新版本的应用程序
2. 设计中的主要权衡问题是用户必须通过应用程序加载器启动应用程序,而非直接启动。
3. 每一次升级创建一个新的、指定版本的目录
4. 应用程序加载器配置应该能够被应用程序升级器访问和使用(以便获得当前安装的版本信息,并在升级完成后更新升级版本和执行路径信息),这意味着应用程序设计器使用的安全准则(Security Principal)必须对应用程序加载器的配置文件有访问权限。
解决方案描述
应用程序加载器使用它的配置文件来确定最新版本的应用程序的位置,并且启动它。图1展示了应用程序加载器如何使用配置文件来定位和启动应用程序。
使用应用程序加载器,而不是直接启动应用程序,允许在应用程序运行时,安装应用程序的新版本。应用程序加载器配置文件会被升级,这样在下一次执行时,新版本的应用程序会被启动。
图2 展示了应用程序加载器如何在升级后启动最新版本的应用程序。
具体实现
应用程序设计器集合(AppStart)主要包含三个类:AppStart, AppStartConfiguration和ConfigSectionHandler。ConfigSectionHandler包含用于反序列化应用程序加载器的配置文件到一个AppStartConfiguration对象的代码,AppStart使用该对象启动应用程序。
当应用程序加载器初始化启动时,它会检查是否它已经为一个在配置文件中指定的应用程序启动并且运行着。如果不是,应用程序会传递相同的命令行参数给AppStart.exe来启动应用程序。
更多信息可以参考 客户端文件设计。
问题描述
设计目标、权衡和问题
解决方案描述
具体实现
问题描述
在应用程序运行时升级应用程序是一件困难的事情,Updater Application Block需要提供一种方法,该方法允许应用程序升级器下载并且安装升级文件,同时又要允许用户继续使用正在更新的应用程序。
设计目标、权衡和问题
Updater Application Block开发人员识别出了以下一些与应用程序加载器相关的设计目标、权衡和问题
1. 应用程序加载器应该在一个独立进程中启动最新版本的应用程序
2. 设计中的主要权衡问题是用户必须通过应用程序加载器启动应用程序,而非直接启动。
3. 每一次升级创建一个新的、指定版本的目录
4. 应用程序加载器配置应该能够被应用程序升级器访问和使用(以便获得当前安装的版本信息,并在升级完成后更新升级版本和执行路径信息),这意味着应用程序设计器使用的安全准则(Security Principal)必须对应用程序加载器的配置文件有访问权限。
解决方案描述
应用程序加载器使用它的配置文件来确定最新版本的应用程序的位置,并且启动它。图1展示了应用程序加载器如何使用配置文件来定位和启动应用程序。
![](/images/cnblogs_com/tonyqus/updater8.jpg)
使用应用程序加载器,而不是直接启动应用程序,允许在应用程序运行时,安装应用程序的新版本。应用程序加载器配置文件会被升级,这样在下一次执行时,新版本的应用程序会被启动。
图2 展示了应用程序加载器如何在升级后启动最新版本的应用程序。
![](/images/cnblogs_com/tonyqus/updater9.jpg)
具体实现
应用程序设计器集合(AppStart)主要包含三个类:AppStart, AppStartConfiguration和ConfigSectionHandler。ConfigSectionHandler包含用于反序列化应用程序加载器的配置文件到一个AppStartConfiguration对象的代码,AppStart使用该对象启动应用程序。
当应用程序加载器初始化启动时,它会检查是否它已经为一个在配置文件中指定的应用程序启动并且运行着。如果不是,应用程序会传递相同的命令行参数给AppStart.exe来启动应用程序。
更多信息可以参考 客户端文件设计。
版权声明:本文由作者Tony Qu原创, 未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。