管理ConfigMgr客户端补丁

在ConfigMgr升级过程中,一些Service Pack或者hotfix要求在客户端安装补丁程序而不仅仅是在服务器端。这篇文章主要讨论客户端补丁部署的一些技巧:如何在客户端请求安装方式安装ConfigMgr客户端的同时安装一个ConfigMgr客户端补丁;如何卸载一个ConfigMgr客户端补丁以及如何在手动创建一个部署ConfigMgr客户端补丁的包/程序时得到正确的报告。

如何通过客户端请求安装的方式安装CONFIGMGR客户端补丁

http://support.microsoft.com/kb/907423/zh-cn介绍了一个适用于SMS2003客户端安转的方法,它依然适用于ConfigMgr客户端。具体步骤如下:

1. 打开SMS站点服务器上的SMS管理控制台

2. 导航到客户端安装方法,并双击客户端请求安装

3. 打开客户端请求安装的属性对话框,点击客户端标签

4. 在安装属性框中输入适当的参数:

SMSSITECODE=AUTO PATCH=\\SERVER\SMSCLIENT\i386\patches\update1.msp

点击确定。

管理ConfigMgr客户端补丁_ConfigMgr

使用该设置后,所有新安装的客户端将会在CCM客户端安装后安装在参数中指定的客户端补丁。

注意:只有一个更新(.msp文件)可在安装客户端的同时安装。如果您尝试安装多个更新时,可能会导致客户端安装失败。

如何卸载一个ConfigMgr客户端补丁

ConfigMgr客户端补丁不会出现在添加/删除程序中。您需要使用命令行来卸载客户端补丁。下面一步一步演示如何通过CONFIGMGR软件分发模块来卸载一个ConfigMgr客户端补丁。

1. 找出你的客户端产品代码。

你可以在客户端的注册表里面找到产品代码信息:HKLM\Software\Microsoft\SMS\Mobile\ProductCode。

管理ConfigMgr客户端补丁_客户端_02

2. 找出补丁代码

你可以在注册表中找到:HKLM\SOFTWARE\Microsoft\Updates\Configuration Manager Client\4.00.6221.1000\CONFIGMGR2007AC-SP1-KBxxxxxx-x86.msp\ (补丁ID)

管理ConfigMgr客户端补丁_管理_03

3. 创建一个包和一个程序包含以下设置:

在常规选项中做如下设置

命令行: msiexec /package {产品代码} /uninstall {补丁代码} /q  REINSTALL=ALL REINSTALLMODE=maus

运行之后:程序重新启动计算机

管理ConfigMgr客户端补丁_客户端_04

在环境选项卡进行如下设置:

程序可以运行:无论用户是否登陆

管理ConfigMgr客户端补丁_管理_05

· “程序重新启动计算机”设置并不意味着卸载之后计算机会被重新启动。卸载一个ConfigMgr客户端补丁会重新启动“SMS Agent Host”服务。如果你不使用这个设置,ConfigMgr客户端会认为重新启动“SMS Agent Host”服务是非正常的,就会报告该程序运行失败。如果您选择“程序重新启动计算机”选项,则ConfigMgr客户端会认为“SMS Agent Host”服务被重新启动是预期的,这样您就能得到这个播发的正确的状态报告。

4. 分发这个程序给客户端

如何手动创建CONFIGMGR客户端补丁安装包/程序

如果您安装一个包含客户端组建的ConfigMgr补丁,您可以选择补丁安装程序为您创建一个包和程序。如果由于某些原因,您需要手动创建一个包/程序来部署客户端补丁,您可以按下面一步一步操作:

(以下内容引用于ACReadme.txt。你可以在<SMS安装路径>\logs\<更新ID>目录下找到ACReadme.txt:。

1. 创建一个包,填写以下所需资料:

数据源选项卡-源目录:

\\<站点服务器>\sms_<sitecode>\client\<platform>\hotfix\<updateid>(如\\Server1\CONFIGMGR_123\client\I386\hotfix\KB977384

管理ConfigMgr客户端补丁_休闲_06

2. 此外,为了确保客户端补丁程序返回准确的状态报表,您必须在“报表”一项填写正确的MIF文件名。例如, 如果Msp文件名是:“SCCM2007AC-KB891073-x86.msp”,那么您需要输入“CMclient.SCCM2007AC-KB891073-x86.mif”(不包括引号)。

因为这个客户端补丁程序在安装完成后会停止并重新启动“SMS Agent Host”服务, 所以ConfigMgr客户端不能监测到这个补丁程序的运行返回代码,必须依靠服务重启后找到一个状态匹配的MIF来检测程序运行的结果是否成功。如果MIF文件没有找到,即使安装成功,ConfigMgr客户端仍然会报告安装失败(1603)。

管理ConfigMgr客户端补丁_管理_07

3. 在这个新的包里,创建一个程序并填写以下所需信息:

常规选项卡-命令行:Msiexec /p <文件名> /L*v <日志文件> /q REINSTALL=ALL REINSTALLMODE=mous

<文件名>是补丁提供的.msp文件的文件名。通常情况下,文件名的形式是:CONFIGMGR2007AC-<补丁ID>-<平台>.msp

例: msiexec.exe /P SCCM2007AC-KB891073-X86.msp /L*v %temp%\SCCM2007AC-KB891073-X86.log /q REINSTALL=ALL REINSTALLMODE=mous

4. 指定该程序“运行”为最小化并设置“运行之后后”选项为程序重新启动计算机。

管理ConfigMgr客户端补丁_管理_08

·      同上“程序重新启动计算机”设置并不意味着卸载之后计算机会被重新启动。卸载一个ConfigMgr客户端补丁会重新启动“SMS Agent Host”服务。如果你不使用这个设置,ConfigMgr客户端会认为重新启动“SMS Agent Host”服务是非正常的,就会报告该程序运行失败。如果您选择“程序重新启动计算机”选项,则CONFIGMGR客户端会认为“SMS Agent Host”服务被重新启动是预期的,这样您就能得到这个播发的正确的状态报告。

安装ConfigMgr补丁的已知问题:

您可以在ccmsetup.exe的命令行中指定属性值来修改client.msi的行为。这里的设置可以包括例如DNSSUFFIX, FSP, SMSMP, SMSSLP 等属性。 不过,这些设置在以下情况下会失效:

· 运行ConfigMgr客户端修复程序

· 安装一个客户端补丁程序,且在安装命令行中没有再次指定这些属性;

· 在ccmsetup.exe的命令行中使用了PATCH参数

解决办法: 当你用软件分发来向ConfigMgr客户端部署ConfigMgr补丁,你需要修改程序命令行来包含这些设置。你可以在http://technet.microsoft.com/zh-cn/library/bb680980.aspx查到client.msi的所有属性。

如果你在你的环境中使用客户端推送安装,你应该能够从客户端请求安装的属性对话框找到并重新使用您的Client.msi设置。