`
lovnet
  • 浏览: 6828443 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

Updater Application Block v1.0 - 1.7 应用程序加载器设计

阅读更多
应用程序加载器就像“解靴带”或“垫子”一样,通过它可以启动由应用程序升级器更新的应用程序。这一章节将介绍下面的几个关于应用程序加载器的方面:
问题描述
设计目标、权衡和问题
解决方案描述
具体实现


问题描述
在应用程序运行时升级应用程序是一件困难的事情,Updater Application Block需要提供一种方法,该方法允许应用程序升级器下载并且安装升级文件,同时又要允许用户继续使用正在更新的应用程序。

设计目标、权衡和问题
Updater Application Block开发人员识别出了以下一些与应用程序加载器相关的设计目标、权衡和问题
1. 应用程序加载器应该在一个独立进程中启动最新版本的应用程序
2. 设计中的主要权衡问题是用户必须通过应用程序加载器启动应用程序,而非直接启动。
3. 每一次升级创建一个新的、指定版本的目录
4. 应用程序加载器配置应该能够被应用程序升级器访问和使用(以便获得当前安装的版本信息,并在升级完成后更新升级版本和执行路径信息),这意味着应用程序设计器使用的安全准则(Security Principal)必须对应用程序加载器的配置文件有访问权限。

解决方案描述
应用程序加载器使用它的配置文件来确定最新版本的应用程序的位置,并且启动它。图1展示了应用程序加载器如何使用配置文件来定位和启动应用程序。

使用应用程序加载器,而不是直接启动应用程序,允许在应用程序运行时,安装应用程序的新版本。应用程序加载器配置文件会被升级,这样在下一次执行时,新版本的应用程序会被启动。
图2 展示了应用程序加载器如何在升级后启动最新版本的应用程序。


具体实现
应用程序设计器集合(AppStart)主要包含三个类:AppStart, AppStartConfigurationConfigSectionHandlerConfigSectionHandler包含用于反序列化应用程序加载器的配置文件到一个AppStartConfiguration对象的代码,AppStart使用该对象启动应用程序。

当应用程序加载器初始化启动时,它会检查是否它已经为一个在配置文件中指定的应用程序启动并且运行着。如果不是,应用程序会传递相同的命令行参数给AppStart.exe来启动应用程序。

更多信息可以参考 客户端文件设计。

分享到:
评论

相关推荐

    Python库 | kali_source_updater-1.0-py3-none-any.whl

    python库。 资源全名:kali_source_updater-1.0-py3-none-any.whl

    解读 Microsoft Practice & Patterns(2):Updater Application Block

    该系列涵盖了许多关键的软件设计和架构模式,其中“Updater Application Block”(更新器应用模块)是一个专门针对应用程序自动更新和维护的组件。 【描述】:提供的资料包括PPT、视频和文档,全面解析了Updater ...

    Updater Application Block组件及详细文档

    "Updater Application Block"是微软提供的一种自动更新组件,主要用于帮助开发者构建具有自动更新功能的应用程序。这个组件简化了软件更新的复杂性,使得用户能够轻松地获取并安装最新的应用程序版本,确保始终运行...

    openEuler V1.0 培训教材-PPT.zip

    综上所述,openEuler V1.0 培训教材涵盖的内容广泛,旨在帮助用户全面理解和掌握openEuler操作系统的使用和管理,从基本操作到高级特性的应用,为成为合格的系统管理员奠定了坚实的基础。通过深入学习和实践,用户...

    nuiton-updater-3.0-alpha-1.zip

    《ais-commons-infrastructure:构建应用程序基础架构的开源组件库》 在当今的软件开发领域,开源项目扮演着至关重要的角色,它们为开发者提供了丰富的工具和框架,极大地提高了开发效率和代码质量。"ais-commons-...

    PyPI 官网下载 | updater-0.1.14-py3-none-any.whl

    标题中的"PyPI 官网下载 | updater-0.1.14-py3-none-any.whl"表明我们正在讨论的是一个从PyPI官方获取的Python库的特定版本,即`updater`库的0.1.14版。 描述中提到"资源来自pypi官网,解压后可用",这暗示我们下载...

    electron-updater-gh-releases-example:electronic-updater-gh-releases的示例应用

    如何尝试从下载应用程序包(例如example-win32-ia32-v1.0.0.zip)。 您必须选择“旧版本”。 提取zip文件并执行该应用程序的可执行文件(example或example.exe)。 该示例应用程序将启动,并将检查更新。 这是一个...

    Node.js-electron-simple-updater自动更新electron应用

    标题 "Node.js-electron-simple-updater自动更新electron应用" 指的是使用 Electron 框架结合 Node.js 开发桌面应用程序时,利用 `electron-simple-updater` 这个库来实现应用的自动化更新功能。Electron 是一个允许...

    Python库 | updater4pyi-0.7-py2-none-any.whl

    资源分类:Python库 所属语言:Python 资源全名:updater4pyi-0.7-py2-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    nw-updater:基于 Node-webkit 的应用程序自动更新器(直接或使用 torrent 分发)

    在后台自动(和静默)更新 node-webkit 应用程序 这个怎么运作? 此代码将联系更新 API 端点,如果有新版本可用,将下载并安装它。 var gui = require('nw.gui'); var currentVersion = gui.App.manifest.version...

    Python库 | updater-0.2.5-py3-none-any.whl

    安装"updater-0.2.5-py3-none-any.whl"的方法是通过Python的包管理器pip。在命令行中,用户只需输入`pip install updater-0.2.5-py3-none-any.whl`的路径,pip就会自动处理剩下的安装步骤。不过,在安装之前,确保...

    Electron项目中通过electron-vue + electron-builder + electron-updater实现远程更新(包含源码)

    在电子应用开发中,使用Electron框架可以构建跨平台的桌面应用程序。为了保持软件的最新状态,开发者通常会采用远程更新机制。本项目利用`electron-vue`、`electron-builder`和`electron-updater`这三款强大的工具,...

    三甲医院管理系统HIS(C#版)

    在HIS Demo中,我们使用了三个Microsoft Application Blocks,数据访问应用程序模块(Data Access Application Block, DAAB)、更新应用程序模块(Updater Application Block, UAB)以及异常管理应用程序模块...

    三甲医院管理系统HIS(完整无错)

    在HIS Demo中,我们使用了三个Microsoft Application Blocks,数据访问应用程序模块(Data Access Application Block, DAAB)、更新应用程序模块(Updater Application Block, UAB)以及异常管理应用程序模块...

    aio-switch-updater:多合一Nintendo Switch更新器

    4. Hekate引导加载器:Hekate是NS上的高级引导加载器,提供了丰富的系统控制选项,包括备份/恢复系统,管理 NAND 分区等。aio-switch-updater与Hekate兼容,用户可以通过该工具便捷地使用Hekate的各项功能。 5. ...

    switch-cheats-updater:Nintendo Switch自家应用程序可自动更新已安装游戏的作弊文件

    不再支持,请使用此说明: :虽然此应用程序仍然可以运行,但我建议使用AIO-switch-updater,它增加了QOL改进,选择了不使用GUI更新的作弊手段开关作弊更新 Nintendo Switch自制软件可自动为您安装的游戏,游戏卡和...

Global site tag (gtag.js) - Google Analytics