SCCM包和应用程序#

本篇文章主要讨论ConfigMgr中包(Package)和程序(program)概念

包是ConfigMgr中的逻辑概念,其主要用于满足企业向客户端安装软件、执行特定程序等部署和管理上的需求,包主要由以下这些元素构成:

  • 基本信息:名称、版本、开发商、语言等
  • 程序:具体见下文,一个包可以包含多个程序,也可以不包含任何程序
  • 源文件:定义执行程序时所需要使用的文件位置

程序

程序是定义客户端如何执行待安装软件程序的逻辑概念,包含以下主要定义:

  • 命令行:定义ConfigMgr客户端如何处理包中的源文件
  • 开始于:定义命令行的执行位置,如果不指定则默认从包中源文件所在位置开始执行
  • 最长允许运行时间:告诉ConfigMgr客户端在执行命令行中指定命令所允许运行的最长时间

当客户端运行命令行中指定命令实际时间超出此项定义时间后,客户端并不会实际停止运行命令,而是不在等待此命令行运行的返回结果并认为命令行运行已失败

  • 运行模式:定义以当前登录用户权限还是系统账户权限运行命令行

部署

包部署的基本单位是程序,即如果包中含有多个程序时,我们必须明确指定一个程序部署到客户端

应用程序

应用程序是ConfigMgr 2012开始引入的新模型,它不同于包的概念,主要简化、降低了向客户端分发程序的难度

应用程序是一个容器,在这个容器内包含了以下主要信息:

  • 基本信息:名称、开发商、版本等
  • 应用程序目录信息:包含用户在应用程序目录站点上看到此程序的信息,如:语言、本地化名称、分类、描述、关键词等
  • 替代:如果此应用程序替代了其他应用程序(可能是一个旧版本的程序),可以定义先卸载被替代的应用程序后,再安装此应用程序
  • 部署类型:见下文,一个应用程序可以包含多个部署类型

部署类型

部署类型包含以下定义:

  • 基本信息:此部署类型的描述
  • 内容:定义此部署类型所需要的源文件位置
  • 程序:定义安装、卸载此部署类型时所调用的命令行
  • 检测方法:定义此应用程序在目标计算机上是否已存在的判定逻辑

检测方法可以通过文件夹、文件、脚本、注册表等方式进行判定

  • 用户体验:定义安装此部署类型使用系统还是当前登录用户凭据
  • 要求:用于定义部署类型安装前客户端需要满足的特定条件,如:操作系统版本、CPU频率、磁盘空间大小、内存大小、Active Directory站点等
  • 依赖:用于定义此部署类型是否依赖其他应用程序,如果有依赖关系的话,ConfigMgr会先安装依赖的应用程序后,再安装此应用程序

部署

应用程序部署的基本单位是应用程序本身,如果一个应用程序包含多个部署类型,则客户端会按顺序评估部署类型中定义的要求,一旦满足某个部署类型中的要求,则运行此部署类型

包和应用程序的区别

  • 基于应用程序的部署特点可以看出,应用程序模型适用于跨平台程序的部署,比如说我们可以定义一个应用程序,如:Office 2016,并在其中添加3种类型的部署类型:

    • Windows 10
    • IOS
    • Android
  • 应用程序简化了管理员向客户端部署程序的难度,因为应用程序模型中自身已包含了检测方法、要求、依赖等定义信息,而包如果要达到相同的效果,必须通过在命令行中指定脚本的方式进行判定,难度差别不言而喻

  • 包由于自身没有检测程序是否已安装的机制(应用程序通过检测方法定义),适用于让客户端运行对自身状态没有特定要求的命令,比如定期复制一些特定文件到客户端、清理客户端上的某些文件、注册表等


为读者提炼SCCM涉及的基础知识、注意事项、运行机制以及排错方法等信息是本系列文章的初衷,对于SCCM各组件及功能部署步骤方面的信息,网络中已有较多文章可以参考,因此本系列文章并不侧重于提供类似Step-by-Step的部署指南,还请见谅。同时由于个人能力和知识水平的限制,文中不免有纰漏和出错的地方,还望大家可以指正,非常感谢。