Share via


System Center Update Publisher 2011 由于补丁KB2530678安装问题无法成功将自定义更新发布到WSUS上

  【本文作者为APGC System Center 支持组 工程师 Winds Wu

近期,随着System Center Update Publisher 2011(SCUP 2011)和System Center Configuration Manager 2012 beta (ConfigMgr 2012 Beta) 版本的发布,SCUP 2011无法将补丁成功发布到WSUS上的问题日趋增多。就目前的情况上来看,我们碰到的主要问题是由于.Net Framework 4.0 RTM版本的功能不稳定,导致WSUS的一个重要补丁安装不成功导致的。

在这里同大家分享该问题的排查以及解决方案,希望对大家有所帮助。

1. 在安装SCUP 2011之前,我们需要先下载安装WSUS补丁WSUS-KB2530678-x86 或WSUS-KB2530678-x64 。您可以从如下链接下载:

https://support.microsoft.com/kb/2530678

 2. 如果补丁没有安装或者安装失败,那么当你使用SCUP2011或者ConfigMgr 2012 Beta 向计算机发布定制更新时,就会在 %temp%\SCUP.log里看到下面的错误信息:

at System.IO.__Error.StreamIsClosed()
at System.IO.MemoryStream.Write(Byte[] buffer, Int32 offset, Int32 count)
at System.Xml.XmlUtf8RawTextWriter.FlushBuffer()
at System.Xml.XmlUtf8RawTextWriter.Flush()
at System.Xml.XmlWellFormedWriter.Close()
at System.Xml.XmlWriter.Dispose(Boolean disposing)
at System.Xml.XmlWriter.System.IDisposable.Dispose()
at Microsoft.UpdateServices.Internal.BaseApi.Publisher.VerifyAndPublishPackage()
at Microsoft.UpdateServices.Internal.BaseApi.Publisher.PublishPackage(String sourcePath, String additionalSourcePath, String packageDirectoryName)
at Microsoft.UpdateServices.Internal.BaseApi.Publisher.PublishPackage(String sourcePath, String packageDirectoryName)

 

顺便说下,这个补丁在界面上经常显示为已成功安装即使实际上并没有成功,另外,我们并不能卸载该补丁。

 

3. 安装补丁KB2530678后,请查看下面信息以确保其安装成功。

(1 )WSUS数据库和WSUS控制台在同一台计算机上

a. 查看%temp%\MWusCa.log日志以确定补丁是否安装成功

b. 查看下面的文件以确保它们的版本已经更新

对于所有支持的基于X86的WSUS 3.0 SP2版本— > 这些文件都位于C:\Program Files\Update Services\Database 目录下

File name

File version

File size

Date

Time

Platform

Microsoft.updateservices.baseapi.dll

3.1.7600.236

546,728

24-Mar-2011

17:36

x86

Mwus_database_schema.sql

Not applicable

762,923

22-Mar-2011

18:15

Not applicable

Popdb.sql

Not applicable

92,119

22-Mar-2011

18:15

Not applicable

Wsuscertserver.exe

7.4.7600.236

66,984

24-Mar-2011

17:30

x86

Wsussigndb.cer

Not applicable

689

16-Mar-2011

13:58

Not applicable

Wsussigndb.dll

Not applicable

8,104

24-Mar-2011

17:30

x86

Wsussigndb.sql

Not applicable

269,339

16-Mar-2011

13:58

Not applicable

 

对于所有支持的基于X64的WSUS 3.0 SP2版本— > 这些文件都位于C:\Program Files\Update Services\Database 目录下

File name

File version

File size

Date

Time

Platform

Microsoft.updateservices.baseapi.dll

3.1.7600.236

546,728

24-Mar-2011

17:36

x86

Mwus_database_schema.sql

Not applicable

762,923

23-Mar-2011

09:53

Not applicable

Popdb.sql

Not applicable

92,119

23-Mar-2011

09:53

Not applicable

Wsuscertserver.exe

7.4.7600.236

77,224

24-Mar-2011

17:31

x64

Wsussigndb.cer

Not applicable

689

16-Mar-2011

13:58

Not applicable

Wsussigndb.dll

Not applicable

8,104

24-Mar-2011

17:31

x86

Wsussigndb.sql

Not applicable

269,339

16-Mar-2011

13:58

Not applicable

C. 同时,我们还需要查看c:\windows\assembly\gac_msil\microsoft.updateservices.baseapi\3.1.6001.1__31bf3856ad364e35\microsoft.updateservices.baseapi.dll 文件, 以确保这个DLL文件的版本号是 3.1.7600.236 ,即使我们已经在C:\Program Files\Update Services\Database 里确认过了.

*由于该文件无法通过正常的文件系统找到,您可以使用下面的方法来验证该文件的版本信息:

(a). 使用管理员权限打开命令提示符(cmd.exe)

(b). 进入如下的路径.

c:\windows\assembly\gac_msil\microsoft.updateservices.baseapi\3.1.6001.1__31bf3856ad364e35

(c). 运行如下命令,将 microsoft.updateservices.baseapi.dll 拷贝到C盘根目录下.

copy microsoft.updateservices.baseapi.dll \

(d). 在 C:\下,请检查Microsoft.updateservices.baseapi.dll的文件版本号是不是最新的。

 下面是装完补丁后的版本.

Microsoft.updateservices.baseapi.dll

3.1.7600.236

 

(2 )WSUS数据库和WSUS控制台安装在两台计算机上。

a. 查看 %temp%\MWusCa.log 日志以确定补丁是否安装成功, 你可能会在日志中看到下面的记录.

             Changed database context to '<WSUS Database Name>'.

 

b.查看下面的文件以确保它们的版本已经更新

对于所有支持的基于X86的WSUS 3.0 SP2版本— > 这些文件都位于C:\Program Files\Update Services\Database 目录下

File name

File version

File size

Date

Time

Platform

Microsoft.updateservices.baseapi.dll

3.1.7600.236

546,728

24-Mar-2011

17:36

x86

Mwus_database_schema.sql

Not applicable

762,923

22-Mar-2011

18:15

Not applicable

Popdb.sql

Not applicable

92,119

22-Mar-2011

18:15

Not applicable

Wsuscertserver.exe

7.4.7600.236

66,984

24-Mar-2011

17:30

x86

对于所有支持的基于X64的WSUS 3.0 SP2版本— > 这些文件都位于C:\Program Files\Update Services\Database 目录下

File name

File version

File size

Date

Time

Platform

Microsoft.updateservices.baseapi.dll

3.1.7600.236

546,728

24-Mar-2011

17:36

x86

Mwus_database_schema.sql

Not applicable

762,923

23-Mar-2011

09:53

Not applicable

Popdb.sql

Not applicable

92,119

23-Mar-2011

09:53

Not applicable

Wsuscertserver.exe

7.4.7600.236

77,224

24-Mar-2011

17:31

x64

C.   同样,我们还需要查看c:\windows\assembly\gac_msil\microsoft.updateservices.baseapi\3.1.6001.1__31bf3856ad364e35\ microsoft.updateservices.baseapi.dll 文件, 以确保这个DLL文件的版本号是 3.1.7600.236 ,即使我们已经在C:\Program Files\Update Services\Database 里确认过了.

*由于该文件无法通过正常的文件系统找到,您可以使用下面的方法来验证该文件的版本信息:

(a). 使用管理员权限打开命令提示符(cmd.exe)

(b). 进入如下的路径.

 c:\windows\assembly\gac_msil\microsoft.updateservices.baseapi\3.1.6001.1__31bf3856ad364e35

(c). 运行如下命令,将 microsoft.updateservices.baseapi.dll 拷贝到C盘根目录下.

copy microsoft.updateservices.baseapi.dll \

(d). 在 C:\下,请检查Microsoft.updateservices.baseapi.dll的文件版本号是不是最新的。

下面是装完补丁后的版本.

Microsoft.updateservices.baseapi.dll

3.1.7600.236

 

4. 如果你发现在安装了补丁 2530678后,上述的DLL版本号并不正确,这是由于.NET  Framework 4.0RTM版本的功能不稳定导致补丁2530678没有被成功安装。请使用下面的解决方案来解决。

 a. 在SCUP 2011服务器下载并且安装如下更新。

Reliability Update 1 for the .NET Framework 4https://support.microsoft.com/kb/2533523

b. 安装好更新后,请重启服务器。

c. 重新安装补丁2530678.

d. 确认DLL版本号:

Microsoft.updateservices.baseapi.dll

3.1.7600.236

- Winds Wu 

 

[本博文仅供参考,微软公司对其内容不作任何责任担保或权利赋予]