无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 11476|回复: 18
打印 上一主题 下一主题

[分享] Win8.1/8/7系统补丁、驱动集成与功能调整

[复制链接]
跳转到指定楼层
1#
发表于 2014-5-9 15:56:02 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 2011htpcfans 于 2014-5-9 16:00 编辑

Win8.1/8/7系统补丁、驱动集成与功能调整

发图片内容比较多的帖子实在难受,干脆以Word附件形式发出,懒得费劲,大家直接看Word更省力!!!!!!!


帖子内容不可能100%原创,前有大神,侧有同行,抄袭与盗版同来,借鉴与改进共鸣,我只是站在巨人肩上的吊丝,感谢所有具有Share精神的人!

这里所说系统补丁、驱动集成其实与Win8.1/8/7系统SysPrep封装是姊妹篇,只不过SysPrep封装名气更大,并且那个也确实更受欢迎一些,所以这篇文章出来得稍微晚一些。系统补丁、驱动集成理论上没有多大难度,就是过程稍微有点麻烦,费时费力,所以好多人就避而远之,我尽自己所能把这些任务分解,大事化小,最好能对看帖的人有那么一点帮助。
标题中提到系统功能调整,比如Win7系统默认是要安装几个游戏的,什么纸牌了,空档接龙了,但是这些东西对系统封装来说根本就是身外之物,占用宝贵的Wim容积,还浪费时间;系统功能很多也是暂时不用的,请看我的机子的功能组件, Win8.1系统,可开关的功能组件稍多一点。

在SysPrep封装时,我们完全可以在安装系统(Dism 、Imagex或者NT安装器应用wim映像) 前把上图中一些功能关闭,那么系统安装时间肯定要缩短一点,捕获映像时间也会要缩短一点,系统封装完毕可以使用Dism命令对wim映像操作再启用,或者封装完毕的系统安装(即部署)在其它机子上以后再启用,或者有些可以完全关闭,反正安装系统以后谁要使用他自己可以在控制面板中启用。
至于关闭这些功能最后的wim映像文件体积会不会变小,我认为是可以忽略的变小,微软的WinSxs文件夹是核心文件所在,好多其它文件都是通过硬链接生成的,安装(即部署)以后启用了哪项功能,就生成硬链接,我们看到系统盘空间占用很多,因为硬链接跟原始文件占用空间是一样大的,但是在wim映像文件中,基本上只有原始文件占用空间,硬链占用空间可以忽略不计。所以说,关闭部分功能,wim映像文件体积肯定会减小,但!@~!~!@#¥%……
对了关闭一部分功能还有没有什么好处呢,还真的有!比如说,要离线给系统映像集成补丁、集成驱动,我们的操作一般是要装载wim映像,表现在硬盘中就是在哪个分区或者文件夹下建立一个Mount文件夹,把wim映像解压(先这样简单理解)进去,集成完补丁和驱动以后,把所有变动保存到wim映像文件中。这个过程中如果某项功能是启用的,总是要建立那些硬链接的,操作完还要回收空间,再删除掉;如果没有启用该项功能,这个过程总是会简短一点。所以,我们还是先从系统功能调整开始吧。
1、系统功能调整
上图是控制面板中启用与关闭系统功能,这里既然说到要通过Dism命令对wim映像中功能进行关闭与启用,那就看看在命令行中到底是什么样子,在安装系统前的wim操作也必须借助Dism命令。等等,好像还有其它同行的许多工具,但是兼容性都有待改进啊,特别是微软系统版本更新这么快。
以管理员身份运行命令提示符

输入Dism /? ,又是出来一大票东西,看着很难受。

那就重定向吧,把这些信息导出到一个文本文件中吧,假如你的机子存在D盘,输入:”Dism /? >d:\HelpDism.txt”,再去看d:\HelpDism.txt文件的内容。刚才的帮助信息都很乖了。
部署映像服务和管理工具
版本: 6.3.9600.16384
DISM.exe [dism_options] {Imaging_command} [<Imaging_arguments>]
DISM.exe {/Image:<path_to_offline_image> | /Online} [dism_options]
         {servicing_command} [<servicing_arguments>]
描述:
  DISM 枚举、安装、卸载、配置和更新 Windows 映像中的功能和程序包。可以使用的命令取决于提供的映像以及映像是处于脱机还是运行状态。
通用映像处理命令:
  /Get-MountedImageInfo   - 显示有关安装的 WIM 和 VHD 映像的信息。
  /Get-ImageInfo          - 显示有关 WIM 或 VHD 文件中映像的信息。
  /Commit-Image           - 保存对装载的 WIM 或 VHD 映像的更改。
  /Unmount-Image          - 卸载已装载的 WIM 或 VHD 映像。
  /Mount-Image            - 从 WIM 或 VHD 文件装载映像。
  /Remount-Image          - 恢复孤立的映像装载目录。
  /Cleanup-Mountpoints    - 删除与损坏的已安装映像关联的资源。

WIM 命令:
  /List-Image             - 显示指定映像中的文件和文件夹的列表。
  /Delete-Image           - 从具有多个卷映像的 WIM 文件删除指定的卷映像。
  /Split-Image            - 将现有 .wim 文件拆分为多个只读WIM (SWM)拆分文件。
  /Export-Image           - 将指定映像的副本导出到其他文件。
  /Append-Image           - 将其他映像添加到 WIM 文件中。
  /Capture-Image          - 将驱动器的映像捕获到新的 WIM 文件中。捕获的目录包含所有子文件夹和数据
  /Apply-Image            - 应用一个映像。
  /Get-MountedWimInfo     - 显示有关安装的 WIM 映像的信息。
  /Get-WimInfo            - 显示有关 WIM 文件中的映像的信息。
  /Commit-Wim             - 保存对安装的 WIM 映像的更改。
  /Unmount-Wim            - 卸载安装的 WIM 映像。
  /Mount-Wim              - 从 WIM 文件安装映像。
  /Remount-Wim            - 恢复孤立的 WIM 安装目录。
  /Cleanup-Wim            - 删除与损坏的已安装 WIM
                            映像关联的资源。

映像规格:
  /Online                 - 以正在运行的操作系统为目标。
  /Image                  - 指定脱机 Windows 映像的根目录的路径。

DISM 选项:
  /English                - 用英文显示命令行输出。
  /Format                 - 指定报告输出格式。
  /WinDir                 - 指定 Windows 目录的路径。
  /SysDriveDir            - 指定名为 BootMgr 的系统加载程序文件的路径。
  /LogPath                - 指定日志文件路径。
  /LogLevel               - 指定日志(1-4)中所示的输出级别。
  /NoRestart              - 取消自动重新启动和重新启动提示。
  /Quiet                  - 取消除错误消息之外的所有输出。
  /ScratchDir             - 指定暂存目录的路径。

若要获得有关这些 DISM 选项及其参数的详细信息,请在紧挨着 /? 之前指定一个选项。示例:
    DISM.exe /Mount-Wim /?
    DISM.exe /ScratchDir /?
    DISM.exe /Image:C:\test\offline /?
    DISM.exe /Online /?
大家肯定看到“/Online   - 以正在运行的操作系统为目标”这句活了,对就找它。这个DISM命令从Win7时代都有了,所以你不用担心你找不到这样的运行环境,一部分WinPE也支持Dism操作。现在我们先只管怎么如何关闭系统功能,其它的不多过问。继续输入:“DISM.exe  /Online  /?  >D:\OnlineDism.txt”,内容如下:

部署映像服务和管理工具
版本: 6.3.9600.16384

映像版本: 6.3.9600.16384

可以使用以下命令来服务此映像:

WINDOWS 版本服务命令:
  /Set-ProductKey         - 设置脱机映像的产品密钥。
  /Get-TargetEditions     - 显示可以将映像升级到的Windows 版本列表。
  /Get-CurrentEdition     - 显示当前映像的版本。
  /Set-Edition            - 将映像升级到较高的版本。

默认关联命令:
  /Remove-DefaultAppAssociations - 删除 Windows 映像中的默认应用程序关联。
  /Import-DefaultAppAssociations - 向 Windows 映像导入一组默认应用程序关联。
  /Get-DefaultAppAssociations - 显示 Windows 映像中默认应用程序关联的列表。
  /Export-DefaultAppAssociations - 从运行的操作系统导出默认的应用程序关联。

APPX 服务命令:
  /Set-ProvisionedAppxDataFile - 将自定义数据放入指定的应用包 (.appx 或 .appxbundle)。指定的应用程序包必须已在映像中。
  /Remove-ProvisionedAppxPackage - 从映像中删除应用包(.appx 或 .appxbundle)。创建新的用户帐户时,将 不安装这些应用包。
  /Add-ProvisionedAppxPackage - 将应用包(.appx 或 .appxbundle)添加到映像并将其设置为对每个新用户进行安装。
  /Get-ProvisionedAppxPackages - 显示有关映像中设置为对每个新用户进行安装的应用包 (.appx 或 .appxbundle)的信息。

无人参与服务命令:
  /Apply-Unattend         - 将无人参与文件应用于映像。

驱动程序服务命令:
  /Remove-Driver          - 从脱机映像中删除驱动程序包。
  /Add-Driver             - 向脱机映像中添加驱动程序包。
  /Get-DriverInfo         - 显示有关脱机映像中或正在运行的操作系统中的特定驱动程序的信息。
  /Get-Drivers            - 显示有关脱机映像中或正在运行的操作系统中的所有驱动程序的信息。

国际服务命令:
  /Set-LayeredDriver      - 设置键盘分层驱动程序。
  /Set-UILang             - 设置安装的脱机映像中使用的默认系统用户界面语言。
  /Set-UILangFallback     - 设置安装的脱机映像中系统用户界面的回滚默认语言。
  /Set-UserLocale         - 设置安装的脱机映像中的用户区域设置。
  /Set-SysLocale          - 设置安装的脱机映像中的非 Unicode 程序的语言(也
                            称为系统区域设置)和字体设置。

  /Set-InputLocale        - 设置要在安装的脱机映像中使用的输入区域设置和键盘布局。
  /Set-TimeZone           - 设置安装的脱机映像中的默认时区。
  /Set-AllIntl            - 设置安装的脱机映像中的所有国际设置。
  /Set-SKUIntlDefaults    - 将安装的脱机映像中的指定 SKU 语言的所有国际设置都设置为默认值。
  /Gen-LangIni            - 生成新的 lang.ini 文件。
  /Set-SetupUILang        - 定义安装程序将使用的默认语言。
  /Get-Intl               - 显示有关国际设置和语言的信息。

应用程序服务命令:
  /Check-AppPatch         - 显示有关 MSP 修补程序是否适用于安装的映像的信息。
  /Get-AppPatchInfo       - 显示有关安装的 MSP 修补程序的信息。
  /Get-AppPatches         - 显示有关应用于所有安装的应用程序的所有MSP 修补程序的信息。
  /Get-AppInfo            - 显示有关特定安装的 MSI 应用程序的信息。
  /Get-Apps               - 显示有关安装的所有 MSI 应用程序的信息。

程序包服务命令:
  /Add-Package            - 向映像中添加程序包。
  /Remove-Package         - 从映像中删除程序包。
  /Enable-Feature         - 启用映像中的特定功能。
  /Disable-Feature        - 禁用映像中的特定功能。
  /Get-Packages           - 显示有关映像中所有程序包的信息。
/Get-PackageInfo        - 显示有关特定程序包的信息。
  /Get-Features           - 显示有关程序包中所有功能的信息。
  /Get-FeatureInfo        - 显示有关特定功能的信息。
  /Cleanup-Image          - 对映像执行清理和恢复操作。

若要获得有关这些服务命令及其参数的详细信息,请在紧挨着 /? 之前指定一个命令。

     示例:
         DISM.exe /Image:C:\test\offline /Apply-Unattend /?
         DISM.exe /Image:C:\test\offline /Get-Features /?
         DISM.exe /Online /Get-Drivers /?
大家肯定看到了程序包服务命令中的那几个命令,其中一个就是禁用映像中的特定功能,没错就是它,/Disable-Feature,/Enable-Feature。但别急,我们需要先大体看下系统中所有功能的开关状态,/Get-Features就是答案了。继续输入:“DISM.exe  /Online /Get-Features >d:\Features.txt”,命令行中结果的确与控制面板中显示不太一样:
部署映像服务和管理工具
版本: 6.3.9600.16384
映像版本: 6.3.9600.16384

程序包功能列表 : Microsoft-Windows-Foundation-Package~31bf3856ad364e35~amd64~~6.3.9600.16384
功能名称 : Microsoft-Hyper-V-All
状态 : 已禁用
功能名称 : Microsoft-Hyper-V-Tools-All
状态 : 已禁用
功能名称 : Microsoft-Hyper-V
状态 : 已禁用
功能名称 : Microsoft-Hyper-V-Management-Clients
状态 : 已禁用
功能名称 : Microsoft-Hyper-V-Management-PowerShell
状态 : 已禁用
功能名称 : Printing-Foundation-Features
状态 : 已启用
功能名称 : Printing-Foundation-LPRPortMonitor
状态 : 已禁用
功能名称 : Printing-Foundation-LPDPrintService
状态 : 已禁用
功能名称 : Printing-Foundation-InternetPrinting-Client
状态 : 已启用
功能名称 : FaxServicesClientPackage
状态 : 已启用
功能名称 : ScanManagementConsole
状态 : 已禁用
功能名称 : LegacyComponents
状态 : 已禁用
功能名称 : DirectPlay
状态 : 已禁用
功能名称 : SimpleTCP
状态 : 已禁用
功能名称 : SNMP
状态 : 已禁用
功能名称 : WMISnmpProvider
状态 : 已禁用
功能名称 : Windows-Defender-Default-Definitions
状态 : 已启用
功能名称 : Windows-Identity-Foundation
状态 : 已禁用
功能名称 : MicrosoftWindowsPowerShellV2Root
状态 : 已启用
功能名称 : MicrosoftWindowsPowerShellV2
状态 : 已启用
功能名称 : DirectoryServices-ADAM-Client
状态 : 已禁用
功能名称 : Internet-Explorer-Optional-amd64
状态 : 已启用
功能名称 : NetFx3
状态 : 已启用
功能名称 : IIS-WebServerRole
状态 : 已禁用
功能名称 : IIS-WebServer
状态 : 已禁用
功能名称 : IIS-CommonHttpFeatures
状态 : 已禁用
功能名称 : IIS-HttpErrors
状态 : 已禁用
功能名称 : IIS-HttpRedirect
状态 : 已禁用
功能名称 : IIS-ApplicationDevelopment
状态 : 已禁用
功能名称 : IIS-NetFxExtensibility
状态 : 已禁用
功能名称 : IIS-NetFxExtensibility45
状态 : 已禁用
功能名称 : IIS-HealthAndDiagnostics
状态 : 已禁用
功能名称 : IIS-HttpLogging
状态 : 已禁用
功能名称 : IIS-LoggingLibraries
状态 : 已禁用
功能名称 : IIS-RequestMonitor
状态 : 已禁用
功能名称 : IIS-HttpTracing
状态 : 已禁用
功能名称 : IIS-Security
状态 : 已禁用
功能名称 : IIS-URLAuthorization
状态 : 已禁用
功能名称 : IIS-RequestFiltering
状态 : 已禁用
功能名称 : IIS-IPSecurity
状态 : 已禁用
功能名称 : IIS-Performance
状态 : 已禁用
功能名称 : IIS-HttpCompressionDynamic
状态 : 已禁用
功能名称 : IIS-WebServerManagementTools
状态 : 已禁用
功能名称 : IIS-ManagementScriptingTools
状态 : 已禁用
功能名称 : IIS-IIS6ManagementCompatibility
状态 : 已禁用
功能名称 : IIS-Metabase
状态 : 已禁用
功能名称 : WAS-WindowsActivationService
状态 : 已禁用
功能名称 : WAS-ProcessModel
状态 : 已禁用
功能名称 : WAS-NetFxEnvironment
状态 : 已禁用
功能名称 : WAS-ConfigurationAPI
状态 : 已禁用
功能名称 : IIS-HostableWebCore
状态 : 已禁用
功能名称 : IIS-CertProvider
状态 : 已禁用
功能名称 : IIS-WindowsAuthentication
状态 : 已禁用

功能名称 : IIS-DigestAuthentication
状态 : 已禁用
功能名称 : IIS-ClientCertificateMappingAuthentication
状态 : 已禁用
功能名称 : IIS-IISCertificateMappingAuthentication
状态 : 已禁用
功能名称 : IIS-ODBCLogging
状态 : 已禁用
功能名称 : IIS-StaticContent
状态 : 已禁用
功能名称 : IIS-DefaultDocument
状态 : 已禁用
功能名称 : IIS-DirectoryBrowsing
状态 : 已禁用
功能名称 : IIS-WebDAV
状态 : 已禁用
功能名称 : IIS-WebSockets
状态 : 已禁用
功能名称 : IIS-ApplicationInit
状态 : 已禁用
功能名称 : IIS-ASPNET
状态 : 已禁用
功能名称 : IIS-ASPNET45
状态 : 已禁用
功能名称 : IIS-ASP
状态 : 已禁用
功能名称 : IIS-CGI
状态 : 已禁用
功能名称 : IIS-ISAPIExtensions
状态 : 已禁用
功能名称 : IIS-ISAPIFilter
状态 : 已禁用
功能名称 : IIS-ServerSideIncludes
状态 : 已禁用
功能名称 : IIS-CustomLogging
状态 : 已禁用
功能名称 : IIS-BasicAuthentication
状态 : 已禁用
功能名称 : IIS-HttpCompressionStatic
状态 : 已禁用
功能名称 : IIS-ManagementConsole
状态 : 已禁用
功能名称 : IIS-ManagementService
状态 : 已禁用
功能名称 : IIS-WMICompatibility
状态 : 已禁用
功能名称 : IIS-LegacyScripts
状态 : 已禁用
功能名称 : IIS-LegacySnapIn
状态 : 已禁用
功能名称 : IIS-FTPServer
状态 : 已禁用
功能名称 : IIS-FTPSvc
状态 : 已禁用
功能名称 : IIS-FTPExtensibility
状态 : 已禁用
功能名称 : MSMQ-Container
状态 : 已禁用
功能名称 : MSMQ-Server
状态 : 已禁用
功能名称 : MSMQ-Triggers
状态 : 已禁用
功能名称 : MSMQ-ADIntegration
状态 : 已禁用
功能名称 : MSMQ-HTTP
状态 : 已禁用
功能名称 : MSMQ-Multicast
状态 : 已禁用
功能名称 : MSMQ-DCOMProxy
状态 : 已禁用
功能名称 : WCF-Services45
状态 : 已启用
功能名称 : WCF-HTTP-Activation45
状态 : 已禁用
功能名称 : WCF-TCP-Activation45
状态 : 已禁用
功能名称 : WCF-Pipe-Activation45
状态 : 已禁用
功能名称 : WCF-MSMQ-Activation45
状态 : 已禁用
功能名称 : WCF-TCP-PortSharing45
状态 : 已启用
功能名称 : WCF-HTTP-Activation
状态 : 已禁用
功能名称 : WCF-NonHTTP-Activation
状态 : 已禁用
功能名称 : NetFx4-AdvSrvs
状态 : 已启用
功能名称 : NetFx4Extended-ASPNET45
状态 : 已禁用
功能名称 : MediaPlayback
状态 : 已启用
功能名称 : WindowsMediaPlayer
状态 : 已启用
功能名称 : Microsoft-Windows-MobilePC-Client-Premium-Package-net
状态 : 已禁用
功能名称 : Microsoft-Windows-MobilePC-LocationProvider-INF
状态 : 已启用
功能名称 : Printing-XPSServices-Features
状态 : 已启用
功能名称 : RasCMAK
状态 : 已禁用
功能名称 : RasRip
状态 : 已禁用
功能名称 : MSRDC-Infrastructure
状态 : 已启用
功能名称 : SearchEngine-Client-Package
状态 : 已启用
功能名称 : TelnetClient
状态 : 已禁用
功能名称 : TelnetServer
状态 : 已禁用
功能名称 : TFTP
状态 : 已禁用
功能名称 : TIFFIFilter
状态 : 已禁用
功能名称 : Xps-Foundation-Xps-Viewer
状态 : 已启用
功能名称 : WorkFolders-Client
状态 : 已启用
功能名称 : SMB1Protocol
状态 : 已启用

大家可以看到,系统组件功能状态列表,哇塞,太多了,我真的快受不了了。大家也别太认真,刚开始我不是太懂,其实到现在我也不懂里面好多东西,大家还是本着够用就好的原则,干什么事,了解哪一块的东西。大家可以把命令结果和控制面板中功能状态做一对比,那样自己要操作的东西就很好搞了。或者大家在控制面板中把哪项功能开关一下,再在命令行中看看对应那一项状态有变化,这样找总能找到吧。
以微软.NetFx3为例,我们要关闭这项功能,输入“Dism /online /disable-feature /? >d:\DisFeature.txt”试试看

部署映像服务和管理工具
版本: 6.3.9600.16384
映像版本: 6.3.9600.16384

/Disable-Feature /FeatureName:<name_in_image> [/PackageName:<name_in_image>] [/Remove]
  禁用由 FeatureName 命令参数指定的功能。
  如果 /PackageName 是 Windows Foundation 程序包,则你不必指定它。
  否则,使用 /PackageName 指定该功能的父程序包。

  如果这些功能是同一个父程序包中的组件,则可以
  使用多个 /FeatureName 参数。
  使用 /Remove 可删除某个功能但不会删除该功能在映像中的
  清单。该功能在使用 /Get-FeatureInfo 时将被列为“禁用已删除的负载”,
  并且可以通过结合使用 /Enable-Featurecan 和 /Source 选项进行还原和
  启用。

    示例:
      DISM.exe /Online /Disable-Feature /FeatureName:Hearts

      DISM.exe /Image:c:\offline /Disable-Feature /FeatureName:Calc
        /PackageName:Microsoft.Windows.Calc.Demo~6595b6144ccf1df~x86~en~1.0.0.0 /Remove

看看微软帮助也没那么难吗,是的,微软已经改进了,不再那么多神秘,参数意义一目了然。
最后我们输入:” DISM.exe /Online /Disable-Feature /FeatureName: NetFx3”,执行完结果如下:

想不想再看看控制面板显示呢,就看看吧!

我的系统是Win8.1,原版是没有.NetFx3的,那是借助Win8.1原始光盘ISO通过DISM命令添加进去的,现在.NetFx3已经包含在系统中了,怎么启用呢?现在大家应该能猜到9成了吧。输入以下命令就可以了:“DISM.exe /Online /Enable-Feature /FeatureName: NetFx3”。我们还可以在一条命令中启用指定的多项功能,或者禁用多项功能,但请注意,如果是编程处理的话最好别这么做,因为既然编程处理了,人就不用等了,还管电脑执行多久干什么!
Win8.1系统功能组件名称可能与Win7不同,实际上有很多不同,我的方法就是先Get-Features,把所有功能信息导出到文本文件中,然后针对每个需要操作的功能项,单独执行一次Enable-Feature或者Disable-Feature。有时我们想看看详细的错误信息,就是到底哪个功能组件没有操作好。这时,请看下面语句:
dism /image:!LPartSource!:\mount /add-package /packagepath:%%j  /Scratchdir:!LPartSource!:\tmp_Imagex  || echo %%j>>%temp%\InfoDism.txt
这条语句好奇怪,没关系,它是要给系统脱机映像添加补丁,/add-package就是这个意思,后面有两条竖线“||”,竖线一般在键盘字母符号键区右侧,靠近括号那旮瘩的地方。它在命令提示符中表示如果前面执行错误,就执行双竖线后面的语句,如果正确执行,就不执行。好,这个功能刚好用来记录我的Dism操作,如果出现错误,就让它把错误信息记下来,这样我执行一大票操作的时候就不怕了。
还有,如果系统组件已经关闭,再执行一次,不会对系统或者映像有任何影响的;如果系统根本就没有那个组件,或者输入了错误的组件名字,执行一次开关操作,理论上也不会对系统或者映像有任何影响,大家可以随便乱试,呵呵,反正WinSXS文件就在那里放着,这样又删不掉。Win7系统和Win8系统的系统组件名称可能不太一样,这个需要大家注意。下面是关闭Win7系统组件的命令,请大家参考。
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:TabletPCOC
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:WindowsGadgetPlatform   
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:MediaCenter     
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:FaxServicesClientPackage     
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:Printing-XPSServices-Features   
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:Xps-Foundation-Xps-Viewer     
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:Printing-Foundation-InternetPrinting-Client   
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:Hearts   
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:Solitaire
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:SpiderSolitaire
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:FreeCell     
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:Minesweeper      
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:PurblePlace     
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:Chess   
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:Shanghai   
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:InboxGames   
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:OpticalMediaDisc   
本来要说系统补丁、驱动集成的,怎么先说系统功能组件调整了,这个稍微简单一点,并且了解一点也没坏处。系统功能组件的调整就说到这里,大家就各取所需吧,开关哪个请随意吧。我写这么多,大家试试可能就10分钟了。
另外,大家是不是有感觉我怎么好像不识好歹,有图形化工具就是不用,偏要用那些什么命令,呵呵,用得多了,大家就有体会,一件事不明所以成不了内行,图形化工具好多时候只是命令的功能子集,并且灵活性和定制性远远不如命令,要想高效完成系统集成,只有命令才是深入了解系统映像的心灵通道,大家有没有想起某位民国时的女作家呢!先由简入繁,再由繁入简,最终活学活用。

Win8系统补丁驱动集成_20140509.rar

917.06 KB, 下载次数: 597, 下载积分: 无忧币 -2

评分

参与人数 1无忧币 +5 收起 理由
freesoft00 + 5 很给力!

查看全部评分

推荐
 楼主| 发表于 2014-5-9 15:59:06 | 只看该作者
3、硬件驱动集成
硬件驱动集成,很多人可能觉得,这年头还玩驱动集成,太Out了,大家不要以为掌握了补丁集成就很NB了,可以说你离系统集成高手差得远呢。比如说,单位用了二十种型号的打印机,如Epson 6200L,HP1007,松下多功能一体机,联想LJ2000,三星XXXX,兄弟XXXX,等等,如果你制作的Win7系统里面有所有这些型号的打印机驱动,那将是多么震撼的一件事啊,多少人要对你佩服得五体投地了,如果你再把单位里什么扫描仪、大批量主机配件的驱动都集成进去,别人在重装系统安装硬件到100%时把打印机、扫描仪驱动都装好了,那会节约大家多少功夫啊;还有我用的笔记本是K27,里面一个读卡器、一个TouchPad以前每次重装都要单独装驱动,我做好的系统能不能把这些冷门驱动也集成进来呢,免得手工安装,挺原始的,家里还有其它几台机子,能不能把所有Win7/8/8.1系统不包含的驱动都集成进来呢,这样做好的定制系统效率也太高了吧,没错,这种系统真的是量身定做的,最合身了。
随着版本的升级,原版系统也集成了好多硬件驱动。写下这段文字时是2014年5月7日星期三,杭州到宁波的火车上,微软最新系统是Win8.1,能很好地为Intel HD4000安装驱动,但有时就不能为Intel HD4600安装驱动,也可能连移动HD3000驱动都没有,估计到Win9的时候就能轻松安装HD4600驱动了。所以越新的系统硬件驱动集成任务越小,但也不见得,这里说下我的一点经历。家里有一台Epson 6200L打印机,10年开外了,Win7原版系统里是带有这种型号的驱动的,但是Win8原版光盘里就没有,需要联网像升级系统补丁一样从微软官方下载驱动,结果肯定是好用的。什么原因呢,一个是微软服务与联网战略,叫所有人访问它的网站,能吸引人的注意力,在这个社会里注意力就是成功,一个原因Win8系统太大了,所以好多不太主流的驱动都要为系统本身腾地方,实际上Win8系统本身没有任何打印机驱动,如果你没有打印机驱动,你就需要联网更新。
我们买电脑、配件、打印机、扫描仪和其它配件等等,往往会收到一片驱动光盘,里面Setup.exe双击运行就可以了这也是一种图形化界面,但这对我们仅有一部分帮助,因为这种驱动不大容易往系统映像里面集成。
这里,再说下国内驱动整理比较NB的两个代表,一个是IT TianKong的WanDrv,一个事驱动人生的驱动包,他们的确是下了很大力气,感谢他们。我对外发布的系统里面,一般都带了IT TianKong的WanDrv,简单易用,节约磁盘空间。相信好多人都用过这个驱动包,它只有一个让人稍微不爽的地方,更改主页,大家是不是都又改过来了,呵呵。WanDrv还有一个地方,多数情况下要人手工运行一次,麻烦。有一次,跟我同龄的一个医生,电脑总应该会操作了吧,我把软件界面给他打开,跟他说鼠标点一下那个开始,就能把显卡驱动程序装上去,他跟我说已经点开始了,但就是装不上去,后来我又亲自去,这么简单的事他怎么就把它搞那么复杂呢?WanDrv与Dism /add-driver相比,不是系统与系统有机集成的,那灵活性不可同日而语。
既然WanDrv已经搜集了这么多驱动程序,那直接把WanDrv中的驱动直接Dism /add-driver到系统映像里面多好?我想到了,但微软怎么就没有想到呢?原来,我们平常看似很简单的硬件型号,其实千差万别,比如AMD 6450独立显卡,同时期,兄弟姐妹型号可能有6230,6240,6350,6470,不要跟我说怎么有这么奇怪的型号,因为这是我碰到的实实在在的情况,阉割修改版实在太多了,一个6450都这么多衍生型号,这么多公司,这么多系列,如果都把驱动拿过来给微软帮我把驱动集成进去,微软会哭的。还有,我的确给单位制作了一个Win7 x86系统,把WanDrv里面所有驱动全部解压,全部集成进Win7 x86映像,映像体积增大了800多M,WanDrv原始压缩驱动500多M,还可以忍受吗,不错,但是当我给别人装系统时,问题来了,别人的机子只装了我的系统,除了虚拟内存文件,系统盘已经占用空间28G,而没有封装系统安装一般只占用16G,说明什么,在wim文件里,微软有复用索引技术,但安装解压缩后,硬链接文件也要占用与原始文件同样的体积,这样的系统占用磁盘空间实在太大了。如果给单位用,磁盘空间无所谓,但要是给带固态盘的个人使用,那就是灾难。所以把所有驱动全部集成进系统并不可取,我给别人的系统一般都是把WanDrv原始文件放在系统盘,第一次开机运行一次,把安装系统时硬件驱动全部装完就OK!但是我家里的机子都不用这种办法,驱动一般都是Dism /add-driver集成的。要制作比较好的小范围定制系统,如果原来机子硬件驱动已经安装好了,通过驱动精灵提取可以吧,这也是一种可以尝试的办法,但好多情况下备份出的驱动并不好用。
对了,WanDrv恶意不包含打印机和扫描仪驱动,并且这两种驱动非常难缠,怎么办?
这里还有一种古老的办法,但这种办法在解决问题时最彻底,当然也最复杂。它就是微软Catalog!
请大家看我的机子,里面有两个问号设备!

请继续看


我查到了这个设备的硬件ID,并且后来我知道VEN_8086表示Intel公司,DEV_表示产品型号。
接着,我访问微软Catalog官方网站。微软要安装个什么插件,Win8下不是管理员账号还不行,估计微软自己也大管理这个网站了。

这是装完的样子。

用我的硬件ID搜索

结果如下:

点添加,就进了篮子,我只要了一个,呵呵。

开始下载

有点慢。

下载到机子上就是这种样子的
实际上是cab压缩文件夹,解压缩以后就可以用Dism /Add-Driver往里面添加了。Dism /Add-Driver具体怎么用的,跟Dism /Add-package是一个妈生的,大家自己摸索。
用这种方法下载的驱动应该说针对性非常强,说不定你可以在Catalog官方网站找到单位的很老的打印机驱动,我的Epson 6200L,Epson网站找不到Win8.1驱动,但在这里确找到了,意外吧,当然那是因为我安装完Win8.1后打印机没有驱动多方偶所无果,有一天系统Update自动更新倒给我安装了驱动,我知道微软一定有,就想到了Catalog。有了这个强力帮手,你还怕找不到单位那几种硬件驱动,我不信。

实际上,好多配件的驱动安装光盘是硬件驱动+管理软件二合一的,我们有时就碰到这种情况:设备管理器中明明没有任何问号,但个别硬件就是不工作,比如K27笔记本的触控板看设备管理器驱动好好的,但它的开关管理软件在另外一个能源管理软件里,这一类驱动带管理的软件,那我们实在是没法集成的,无解。
另外,有些硬件是厂家设计有问题,驱动老是开发不出来,那找任何外人都没用,我的华硕H81I-Plus到现在还有一个硬件驱动装不上去,官方驱动都是浮云啊。
我终于可以长叹一口气了,希望大家也能把自己的东西拿出来分享一点,大家有没有意见。

请大家参考附件中Word原文
回复

使用道具 举报

18#
发表于 2014-11-8 17:00:25 | 只看该作者
很需要这样的贴子,谢谢楼主的分享,太需要了。一直想学学怎么在wim中加入驱动。
回复

使用道具 举报

17#
发表于 2014-11-8 16:06:41 | 只看该作者
来学习下 手动集成补丁 谢谢分享
回复

使用道具 举报

16#
发表于 2014-9-12 10:17:29 | 只看该作者
多谢,来看看学习学习。我的问题是在WM10装了WIN8.1PRO,为什么可以上网,但不能正常更新呢?一直提示正在检测。
回复

使用道具 举报

15#
发表于 2014-6-7 10:32:55 | 只看该作者
谢谢分享。
回复

使用道具 举报

14#
发表于 2014-5-11 22:30:17 | 只看该作者
好给力,dism肯定是重点!强烈支持!!!
回复

使用道具 举报

13#
发表于 2014-5-11 10:34:47 | 只看该作者
很不错的帖子,真心的感谢楼主
回复

使用道具 举报

12#
发表于 2014-5-10 18:26:47 | 只看该作者
虽然看不太懂,但依然赞一个!
回复

使用道具 举报

11#
发表于 2014-5-10 17:42:39 | 只看该作者
刚好学习中,边学习边实践收益良多啊
回复

使用道具 举报

10#
发表于 2014-5-10 16:42:11 | 只看该作者
先下载 看看再说   
回复

使用道具 举报

9#
发表于 2014-5-10 12:52:50 来自手机 | 只看该作者
这个不错,收藏!!!
回复

使用道具 举报

8#
发表于 2014-5-9 22:04:02 | 只看该作者
不错,真够详细地。。。辛苦
回复

使用道具 举报

7#
发表于 2014-5-9 19:00:11 | 只看该作者
支持楼主的创作,现在的系统安装已经很智能了,只要跳过OOBE阶段直接进入管理员账号,后边的驱动和程序安装实际可以分成3大块来表示。
回复

使用道具 举报

6#
发表于 2014-5-9 17:34:20 | 只看该作者
首先感谢楼主的辛勤劳作和分享精神,我等菜鸟只能慢慢学习和了解了。

提供的文档已经下载,可以离线阅读,很方便。再次感谢!
回复

使用道具 举报

5#
发表于 2014-5-9 16:37:26 | 只看该作者
哇,这么多,有得学一阵了
回复

使用道具 举报

4#
发表于 2014-5-9 16:09:20 | 只看该作者
第一次离大神这么近

点评

www.cnhaoxing.com/id_249/ 剑道独神  发表于 2014-9-12 10:40
回复

使用道具 举报

2#
 楼主| 发表于 2014-5-9 15:57:26 | 只看该作者
2、系统补丁集成
说到这里,再向各位老实交代一件事:尽管Win7系统和Win8系统功能组件名字可能不同,系统补丁名字不同,要封装的驱动不同,但本文中处理三者方法对两类系统确实一样的,到Win9系统时估计也差不多。
微软就是这么霸气,系统漏洞、驱动补丁、软件补丁这么多,什么时候是头啊,这让我想起了小时候父母安排的农活,不干不行啊,不干要挨揍啊。系统补丁还是尽量打上吧,要不电脑奔在网上大多都是肉鸡,或被人遥控的僵尸,国家安全战略不是儿戏,个人网银私照不能外泄啊。
Win7 SP1从发布之日2011年5月起到现在,光安全补丁有100多个,一段时间以后必须安装预备补丁(KB947821,现在可能是v36吧),才能安装后续补丁;Intel、AMD和Nvdia等公司的产品驱动,有时也以类似KBXXXXXXX.msu的形式出现(一般是微软验证过的,CAB压缩格式的。其实它以这样的形式出现,我倒开心了,容易集成吗),如果再加上其它性能补丁,更是不计其数,如果制作的系统不包含补丁,要联网安装,等得人撞墙的撞墙,跳楼的跳楼了。Win8发布时间稍短,补丁可能不是太多,我们倒还可以忍受,但是我们总是可以积极一点,多做一点准备工作,少给电脑和网络带来一些本可以避免的负担。有时候很多内网不能与互联网连接,系统补丁不能自动更新,如果安装时没有集成补丁,那这台机子很可能终生不知道打补丁是干什么的,抗病毒能力肯定很差。打补丁说着容易,做着难,但是你只要认认真真做过一次,下一次绝对简单。
那我们到底需要哪些系统补丁呢,我的理解是重要安全补丁,关键、较新又稳定的性能补丁,如.Net4等的系统重要组件补丁,如有需要的话最新IE、微软办公套件补丁、微软杀软安全软件补丁,还有如果你够负责任,Flash补丁,大家很可能比我想到的还要多。但是系统映像文件就是我们做好要发布的那个*.wim文件体积总是有限的。Win7时代,微软系统源盘位是2.X GB,Win8时代,微软系统源盘位是3.X GB,微软Win9应该不会超过4GB,但我们还要在里面封装系统补丁、驱动,这个体积肯定是要长势喜人的,我在内网上做的系统,又封装了一部分打印机驱动,又加了Photoshop等,Win7 x64体积接近6G,Win8.1 x64体积超过5G,所以自主权在各位手里,各取所需。
那么怎么封装补丁呢?请看官放慢节奏。我们在开头和第一部分不是看到查看当前系统的系统组件的开关状态了吗,用的是什么命令,大概是”Dism /online xxxxxxxxx”对吧,实际上就是它。这个命令是针对当前系统的,当然给没有补丁的当前系统用这样的命令打补丁,并编写批处理也肯定比一个一个双击运行要快,但这明显不是我们所要的东西。
这里我再插下嘴,关于wim与gho的不同点,gho是针对磁盘物理扇区的机械复制(你可以压缩一下),但wim远不是这么简单,wim是基于文件的备份,这个怎么理解呢。进行wim备份压缩时它扫描某个磁盘或者目录,找到所有的文件,还可以根据计划过滤一部分不用的文件,然后基于对操作系统文件的深刻理解,一个一个文件复制(当然也可以压缩)。所以使用微软命令Dism操作wim格式的文件时,微软非常清楚哪个是垃圾,哪个是用户文档,哪个是系统核心文件,当然哪个是系统补丁文件、哪个是硬件驱动文件也不在话下,到这里我说wim文件是具有活性的系统备份大家没有意见了吧。再回过头来看gho,它纯粹是磁盘扇区集合,对它操作的每个单位是磁盘扇区,你想想你有多么崩溃。微软原版ISO中的系统都是wim格式的,并且一个wim文件可以存储多个系统映像,它内部肯定有索引机制,相同文件绝对不保存第二份,所以微软原版wim中4-5个系统更像是一堆增量备份。这4-5个映像怎么区分呢,最简单的方法就是根据索引来分,1-5,事实证明也是可行的。现在我说在网上所看到的gho格式的Win8系统都是半瓶水准,应该可以吧。最新wim文件直接启动也是微软开放的一点小甜头而已。
闲话掠过,继续正题,”Dism /online xxxxxxxxx”是操作当前系统,是真正真该运行的系统,由于wim文件的先进性,我们可以像操作正在运行的当前系统一样操作系统映像,就是操作wim文件。但wim文件毕竟不是正在运行的系统,我们还是需要为它搭点舞台的,如果你回头看看刚才Dism命令的帮助,你肯定可以看到通用命令和数据两块里有:Mount-image/Unmount-image、Mount-wim/Unmount-wim命令参数,Mount-wim这个参数可以把wim装载到某个文件夹中,接着在Dism看来这个指定文件夹就和正在运行的系统没什么区别了,正在运行的系统不就是C:\吗。这个装载过程,微软称作安装映像,但不同于/Apply这个参数的意义,那是应用,安装与应用的区别我感觉最大区别在于我安装完了,可以使用Unmount命令在适合时候再卸载。安装、卸载wim可以操作系统映像,安装、卸载wimage还可以操作微软vhd映像文件,更NB一点。以我的机子中的映像为例,大家看看如何装载。

D:\backup目录下有个Win81_PR_x64_VL_WithUpdate_Office2013.wim映像文件,并且我知道这个映像文件中只有一个系统映像,映像名刚好跟文件名一致。要装载这个映像,需要一个文件夹,当然磁盘空间必须够,一般30G开外最好,这个应该不难,假设我就在d:\下建一个Mount文件夹用来放置系统映像。那么安装(装载)映像的命令一般是这个样子:


实际上如果不太清楚命令用法,还可以看帮助。

但是这里有一个小问题,如何知道映像文件里有几个映像,请大家再回头看看开始Dism帮助,是不是有一个参数/get-wiminfo,大家就在提示符中输入”Dism /get-wiminfo /?”,结果如下

这下,大家把自己的映像文件代入一下,信息一览无余。当然这种方法比各种图形化工具笨拙一点,没关系,这个是最基本的,功能最全,并且可以编程,图形化工具基本上都固化了,操作空间很小。
映像安装完毕,我就可以像操作/online映像一样操作离线映像,这个时候wim文件就复活了。假如我要给d:\mount\下的Win81映像添加一个KB29XXXXXXX补丁,我又把映像安装以后有关的帮助贴文如下,请原谅我的懒惰,我原来就是这么看过来的,请大家只看自己关心的哪一块,用到什么学习什么:

部署映像服务和管理工具
版本: 6.3.9600.17031

映像版本: 6.3.9600.17031


可以使用以下命令来服务此映像:

WINDOWS 版本服务命令:

  /Optimize-Image         - 对脱机映像执行指定的
                            配置。
  /Set-ProductKey         - 设置脱机映像的产品密钥。
  /Get-TargetEditions     - 显示可以将映像升级到的
                            Windows 版本列表。
  /Get-CurrentEdition     - 显示当前映像的版本。
  /Set-Edition            - 将映像升级到较高的版本。

默认关联命令:

  /Remove-DefaultAppAssociations - 删除 Windows 映像中的默认应用程序关联。
  /Import-DefaultAppAssociations - 向 Windows 映像导入一组
                            默认应用程序关联。
  /Get-DefaultAppAssociations - 显示 Windows 映像中默认应用程序关联的列表。
  /Export-DefaultAppAssociations - 从运行的操作系统导出
                                    默认的应用程序关联。

APPX 服务命令:

  /Set-ProvisionedAppxDataFile - 将自定义数据放入指定的应用包
                                (.appx 或 .appxbundle)。
                                指定的应用程序包必须已在映像中。
  /Remove-ProvisionedAppxPackage - 从映像中删除应用包(.appx 或 .appxbundle)。
                                创建新的用户帐户时,将
                            不安装这些应用包。
  /Add-ProvisionedAppxPackage - 将应用包(.appx 或 .appxbundle)添加到映像
                                并将其设置为对每个新用户进行安装。
  /Get-ProvisionedAppxPackages - 显示有关映像中设置为对每个新用户进行
                                安装的应用包
                                (.appx 或 .appxbundle)的信息。

无人参与服务命令:

  /Apply-Unattend         - 将无人参与文件应用于映像。

驱动程序服务命令:

  /Remove-Driver          - 从脱机映像中删除驱动程序包。
  /Add-Driver             - 向脱机映像中添加驱动程序包。
  /Get-DriverInfo         - 显示有关脱机映像中或正在运行的操作系统中的
                            特定驱动程序的信息。
  /Get-Drivers            - 显示有关脱机映像中或正在运行的操作系统中
                            的所有驱动程序的信息。
  /Export-Driver          - 从脱机映像或正在运行的操作系统
                            导出所有第三方驱动程序包。

国际服务命令:

  /Set-LayeredDriver      - 设置键盘分层驱动程序。
  /Set-UILang             - 设置安装的脱机映像中使用的默认系统用户界面语言。

  /Set-UILangFallback     - 设置安装的脱机映像中系统用户界面的回滚默认语言。

  /Set-UserLocale         - 设置安装的脱机映像中的用户区域设置。
  /Set-SysLocale          - 设置安装的脱机映像中的非 Unicode 程序的语言(也
                            称为系统区域设置)和字体设置。

  /Set-InputLocale        - 设置要在安装的脱机映像中使用的输入区域设置和
                            键盘布局。

  /Set-TimeZone           - 设置安装的脱机映像中的默认时区。

  /Set-AllIntl            - 设置安装的脱机映像中的所有国际设置。

  /Set-SKUIntlDefaults    - 将安装的脱机映像中的指定 SKU 语言的所有国际
                            设置都设置为默认值。
  /Gen-LangIni            - 生成新的 lang.ini 文件。
  /Set-SetupUILang        - 定义安装程序将使用的默认语言。

  /Get-Intl               - 显示有关国际设置和语言的信息。


应用程序服务命令:

  /Check-AppPatch         - 显示有关 MSP 修补程序是否适用于安装的映像的信息。
  /Get-AppPatchInfo       - 显示有关安装的 MSP 修补程序的信息。
  /Get-AppPatches         - 显示有关应用于所有安装的应用程序的所有
                            MSP 修补程序的信息。
  /Get-AppInfo            - 显示有关特定安装的 MSI 应用程序的信息。
  /Get-Apps               - 显示有关安装的所有 MSI 应用程序的信息。


程序包服务命令:

  /Add-Package            - 向映像中添加程序包。
  /Remove-Package         - 从映像中删除程序包。
  /Enable-Feature         - 启用映像中的特定功能。
  /Disable-Feature        - 禁用映像中的特定功能。
  /Get-Packages           - 显示有关映像中所有程序包的信息。
                           
  /Get-PackageInfo        - 显示有关特定程序包的信息。
  /Get-Features           - 显示有关程序包中所有功能的信息。

  /Get-FeatureInfo        - 显示有关特定功能的信息。
  /Cleanup-Image          - 对映像执行清理和恢复
                            操作。

若要获得有关这些服务命令及其参数的详细信息,请在紧挨着 /? 之前指定一个命令。

     示例:
         DISM.exe /Image:C:\test\offline /Apply-Unattend /?
         DISM.exe /Image:C:\test\offline /Get-Features /?
         DISM.exe /Online /Get-Drivers /?
大家肯定看到程序包服务命令:/Add-Package      - 向映像中添加程序包。接着看帮助和示例:

部署映像服务和管理工具
版本: 6.3.9600.17031

映像版本: 6.3.9600.17031


/Add-Package /PackagePath:<path_to_package> [/IgnoreCheck] [/PreventPending]

  在映像中添加一个或多个程序包。/PackagePath 可以指向
  .cab 文件、.msu 文件或文件夹。
  如果适用性检查失败,可使用 /IgnoreCheck 开关跳过
  程序包安装。
  如果程序包或 Windows 映像具有挂起的联机操作,
  可使用 /PreventPending 开关跳过程序包安装。

    示例:
      DISM.exe /Image:C:\test\offline /Add-Package
        /PackagePath:C:\test\packages /IgnoreCheck

      DISM.exe /Image:C:\test\offline /Add-Package
        /PackagePath:C:\test\packages\package.cab /PreventPending

      DISM.exe /Image:C:\test\offline /Add-Package
        /PackagePath:C:\Windows-KB000006-v1-x86-en-us.msu
    这里面最后面一个示例大家应该看得懂了吧,把映像路径和补丁路径指定好,添加系统补丁就会在你的掌握之中了。关于集成系统补丁最基础的东西我已经汇报完毕,大家应该已经入了这个门了,更丰富的内容需要大家DIY了。
下面我要稍微拔苗助长了。大家是不是看到,帮助中说,可以一条指令添加多个系统补丁,没错,你只要将/PackagePath参数赋值为补丁对应的路径,那么当前系统应该会把那个目录下所有补丁都集成进映像中,至少理论上是这样的。请大家看下我整理的关于Win7_x64的安全补丁和其它一些补丁的列表:
Windows6.1-KB0947821-v32-x64.msu
Windows6.1-KB2476490-x64.msu
Windows6.1-KB2491683-x64.msu
Windows6.1-KB2503658-x64.msu
Windows6.1-KB2503665-x64.msu
Windows6.1-KB2506223-x64.msu
Windows6.1-KB2507618-x64.msu
Windows6.1-KB2507938-x64.msu
Windows6.1-KB2508429-x64.msu
Windows6.1-KB2509553-x64.msu
Windows6.1-KB2510531-x64.msu
Windows6.1-KB2511455-x64.msu
Windows6.1-KB2533623-x64.msu
Windows6.1-KB2535512-x64.msu
Windows6.1-KB2536275-x64.msu
Windows6.1-KB2544893-x64.msu
Windows6.1-KB2555917-x64.msu
Windows6.1-KB2556532-x64.msu
Windows6.1-KB2560656-x64.msu
Windows6.1-KB2563894-x64.msu
Windows6.1-KB2564958-x64.msu
Windows6.1-KB2567053-x64.msu
Windows6.1-KB2567680-x64.msu
Windows6.1-KB2570947-x64.msu
Windows6.1-KB2579686-x64.msu
Windows6.1-KB2584146-x64.msu
Windows6.1-KB2585542-x64.msu
Windows6.1-KB2588516-x64.msu
Windows6.1-KB2601626-x64.msu
Windows6.1-KB2617657-x64.msu
Windows6.1-KB2619339-x64.msu
Windows6.1-KB2620704-x64.msu
Windows6.1-KB2620712-x64.msu
Windows6.1-KB2621146-x64.msu
Windows6.1-KB2621440-x64.msu
Windows6.1-KB2631813-x64.msu
Windows6.1-KB2639308-x64.msu
Windows6.1-KB2639417-x64.msu
Windows6.1-KB2641653-x64.msu
Windows6.1-KB2644615-x64.msu
Windows6.1-KB2645640-x64.msu
Windows6.1-KB2653956-x64.msu
Windows6.1-KB2654428-x64.msu
Windows6.1-KB2655992-x64.msu
Windows6.1-KB2658846-x64.msu
Windows6.1-KB2659262-x64.msu
Windows6.1-KB2660465-x64.msu
Windows6.1-KB2660649-x64.msu
Windows6.1-KB2665364-x64.msu
Windows6.1-KB2667402-v2-x64.msu
Windows6.1-KB2670838-x64.msu
Windows6.1-KB2676562-x64.msu
Windows6.1-KB2685939-x64.msu
Windows6.1-KB2688338-x64.msu
Windows6.1-KB2690533-x64.msu
Windows6.1-KB2691442-x64.msu
Windows6.1-KB2698365-x64.msu
Windows6.1-KB2705219-v2-x64.msu
Windows6.1-KB2706045-x64.msu
Windows6.1-KB2709715-x64.msu
Windows6.1-KB2716513-x64.msu
Windows6.1-KB2718523-x64.msu
Windows6.1-KB2719033-x64.msu
Windows6.1-KB2724197-x64.msu
Windows6.1-KB2727528-x64.msu
Windows6.1-KB2729094-v2-x64.msu
Windows6.1-KB2731771-x64.msu
Windows6.1-KB2731847-v2-x64.msu
Windows6.1-KB2743555-x64.msu
Windows6.1-KB2757638-x64.msu
Windows6.1-KB2761226-x64.msu
Windows6.1-KB2769369-x64.msu
Windows6.1-KB2770660-x64.msu
Windows6.1-KB2772930-x64.msu
Windows6.1-KB2778344-x64.msu
Windows6.1-KB2778930-x64.msu
Windows6.1-KB2779030-x64.msu
Windows6.1-KB2785220-x64.msu
Windows6.1-KB2786081-x64.msu
Windows6.1-KB2790655-x64.msu
Windows6.1-KB2799494-x64.msu
Windows6.1-KB2803821-v2-x64.msu
Windows6.1-KB2807986-x64.msu
Windows6.1-KB2808735-x64.msu
Windows6.1-KB2813170-x64.msu
Windows6.1-KB2813347-x64.msu
Windows6.1-KB2813430-x64.msu
Windows6.1-KB2829361-x64.msu
Windows6.1-KB2830290-x64.msu
Windows6.1-KB2834140-v2-x64.msu
Windows6.1-KB2834886-x64.msu
Windows6.1-KB2835174-x64.msu
Windows6.1-KB2835361-x64.msu
Windows6.1-KB2835364-x64.msu
Windows6.1-KB2839894-x64.msu
Windows6.1-KB2840149-x64.msu
Windows6.1-KB2845187-x64.msu
Windows6.1-KB2845690-x64.msu
Windows6.1-KB2847311-x64.msu
Windows6.1-KB2847927-x64.msu
Windows6.1-KB2849470-x64.msu
Windows6.1-KB2850851-x64.msu
Windows6.1-KB2853587-x64.msu
Windows6.1-KB2855844-x64.msu
Windows6.1-KB2859537-x64.msu
Windows6.1-KB2861855-x64.msu
Windows6.1-KB2862330-x64.msu
Windows6.1-KB2862966-x64.msu
Windows6.1-KB2862973-x64.msu
Windows6.1-KB2864058-x64.msu
Windows6.1-KB2864202-x64.msu
Windows6.1-KB2868038-x64.msu
Windows6.1-KB2868623-x64.msu
Windows6.1-KB2868626-x64.msu
Windows6.1-KB2872339-x64.msu
Windows6.1-KB2875783-x64.msu
Windows6.1-KB2876284-x64.msu
Windows6.1-KB2876315-x64.msu
Windows6.1-KB2876331-x64.msu
Windows6.1-KB2882822-x64.msu
Windows6.1-KB2883150-x64.msu
Windows6.1-KB2883457-x64.msu
Windows6.1-KB2884256-x64.msu
Windows6.1-KB2888049-x64.msu
Windows6.1-KB2892074-x64.msu
Windows6.1-KB2893294-x64.msu
    这里共有126个补丁,绝大多数是系统安全补丁。第一个补丁是第32版Win7_x64系统更新预备补丁,本来名字是Windows6.1-KB947821-v32-x64.msu,但我把它重命名为Windows6.1-KB0947821-v32-x64.msu
,怎么回事,就多了个0吗,是的。刚才我说,如果你把所有安全补丁全部下载下来,想使用一条指令集成全部补丁,到后面怎么老是出错,你根本想不到错在什么地方。原来微软维护那么多系统,维护那么多补丁,都是几万、几十万的代码,夜路难走,难免出点车祸啥的,前后不一致是经常的事,所以系统更新预备补丁应时而生。更新补丁时最好先更新预备补丁,再更新其它补丁。另外,想手工集成IE10、IE11,网上都能看到一般都要先集成4-8个预先补丁,然后才能集成IE。还有一个明显的道理,你只有集成了IE11,才能集成IE11后续修补补丁。说到集成IE,就把IE集成方法说下,与普通补丁稍有区别。从微软官方下载IE,放在d:\ie目录,不管IE是9,10还是11,把名字改简单一点,就改成ie.exe吧,大概是执行”d:\ie\ie.exe /x:.”,我机子上没有现成的IE,火车上信号不好,下载太慢,执行方法如有误请多包涵。然后在d:\ie生成几个文件,结果可能如下所示:
HARDWAREBLOCKINGLIST.XML
IE-Hyphenation-en.MSU
IE-Spelling-en.MSU
IE-Win7.CAB
ielangpack-zh-CN.CAB
IE_SUPPORT_amd64_zh-CN.CAB
SETUPDOWNLOADLIST.TXT
SQMAPI.DLL
集成的时候,就是对着这几个文件展开操作,下面大家看段代码:
dism /image:!LPartSource!:\mount /add-package /packagepath:%~dp0ie\%%i\ie-win7.cab /Scratchdir:!LPartSource!:\tmp_Imagex

if exist %~dp0ie\%%i\ielangpack-CHS.CAB    dism /image:!LPartSource!:\mount /add-package /packagepath:%~dp0ie\%%i\ielangpack-CHS.CAB  /Scratchdir:!LPartSource!:\tmp_Imagex
if exist %~dp0ie\%%i\ielangpack-zh-cn.CAB  dism /image:!LPartSource!:\mount /add-package /packagepath:%~dp0ie\%%i\ielangpack-zh-cn.CAB  /Scratchdir:!LPartSource!:\tmp_Imagex

if exist %~dp0ie\%%i\IE-Hyphenation-neu.msu dism /image:!LPartSource!:\mount /add-package /packagepath:%~dp0ie\%%i\IE-Hyphenation-neu.msu  /Scratchdir:!LPartSource!:\tmp_Imagex
if exist %~dp0ie\%%i\IE-Hyphenation-en.msu  dism /image:!LPartSource!:\mount /add-package /packagepath:%~dp0ie\%%i\IE-Hyphenation-en.msu  /Scratchdir:!LPartSource!:\tmp_Imagex

if exist %~dp0ie\%%i\IE-Spelling-neu.msu dism /image:!LPartSource!:\mount /add-package /packagepath:%~dp0ie\%%i\IE-Spelling-neu.msu  /Scratchdir:!LPartSource!:\tmp_Imagex
if exist %~dp0ie\%%i\IE-Spelling-en.msu dism /image:!LPartSource!:\mount /add-package /packagepath:%~dp0ie\%%i\IE-Spelling-en.msu  /Scratchdir:!LPartSource!:\tmp_Imagex
    这段代码判断ie目录下是否存在那4个ie补丁文件,因为Win7 ie10/ie11补丁文件名字不一样,所以分别判断。另外,更新IE10/11需要的预备补丁,我都放在那126个补丁里面了,具体是哪一个我现在也记不清了,想细究大家自己Google或者Bing,百度什么都不懂。
我的同事说过,所谓的干部工作就是摸清所有人的底细,掌握每个人为了位子、地方所能承受的底限,是提前说还是日后再说,有些人真TM垃圾,连老婆都可以牺牲。补丁的集成,如果全靠手工命令输入,那的确是烦死了,那么长的名字,非常容易出错,那我在拔苗助长后就再把大家拉一拉,看看还有没有提升的空间。这段批处理流程应该很简单了,大家可以使用,也可以修改优化。
   del /f  /s /q %temp%\InfoDism.txt>nul 2>nul
   echo.
   echo 1:本批处理、驱动和补丁子目录、IE升级包必需都在当前目录。
   echo    在同目录中有\Driver、\patch和\IE固定目录,放置驱动和补丁子目录。
   echo    如\Driver\Drv_Win8_x64,\patch\patch_Win8_x64
   echo    调整Win7、Win8功能,可能还要准备Win8原版光盘,或者IE10安装包。
   echo.
   echo 2:当前目录下工作子目录,挂载文件夹\Mount,临时文件夹\tmp_Imgex。
   echo    临时文件*.txt都在系统临时文件夹%temp%中。
   echo.
   pause
   ::准备全局变量
   set /a a=0
   set /a CountWim=0
   set /a CountIndex=0
   set /a NumWimSource=0
   set /a IndexSource=0

   ::准备局部变量
   set /a CountPatch=0
   set /a NumPatch=0
   set /a CountDrv=0
   set /a NumDrv=0
   set /a CountIE=0
   set /a NumIE=0
   cls
   echo.

   ::准备源系统映像文件与索引序号。
   set bHvLSr=n
   for /l %%i in (1,1,5) do (
      if !bHvLSr!==n (
         set /p LPartSource=请输入系统映像文件所在盘,不带冒号----
         if not exist !LPartSource!: echo 这个盘符根本就没有使用了,你不要搞笑好吧
         if     exist !LPartSource!: set bHvLSr=y
      )
   )
   dir !LPartSource!:\*.wim /b /s >%temp%\fSeek.txt
   echo 查找到!LPartSource!分区下所有映像文件如下表
   echo -----------------------------------------------------
   set /a a=0
   for /f "usebackq delims=" %%i in (%temp%\fSeek.txt) do ( set /a a+=1&&echo 系统映像:!a! %%i)
   set /a CountWim=!a!
   if !a!==0   echo 该分区无系统映像文件,退出重来吧!&&goto End

   ::准备临时文件夹\tmp_Imagex,预备以后作为ScratchDir使用,这段代码不能随意移动位置!
   ::目的是1:在PE中临时文件空间不足,源文件盘空间一般没问题;2:如果源文件在固态盘,要充分利用固态盘速度优势。
   if not exist !LPartSource!:\tmp_Imagex md !LPartSource!:\tmp_Imagex
   if     exist !LPartSource!:\tmp_Imagex    rd /s /q  !LPartSource!:\tmp_Imagex&&md !LPartSource!:\tmp_Imagex
   ::准备局部文件夹\mount
   if not exist !LPartSource!:\mount md !LPartSource!:\mount
   if     exist !LPartSource!:\mount (
      :rd
      dir !LPartSource!:\mount /ad /b /s   >%temp%\del_rd.txt
      for /f "usebackq delims=" %%i in (%temp%\del_rd.txt) do ((takeown /f "%%i"  /r /d y >%temp%\del_log.txt>nul 2>nul)&(@echo y|icacls "%%i" /t /q  /grant  administrator:f>nul 2>nul )&(rd  
"%%i" /s /q>nul 2>nul))
      takeown /f !LPartSource!:\mount /r /d y >%temp%\del_log.txt>nul 2>nul
      @echo y|icacls  !LPartSource!:\mount /t /q  /grant  administrator:f>nul 2>nul
      rd !LPartSource!:\mount /s /q
      if exist !LPartSource!:\mount goto :rd
      del /f  /s /q %temp%\del_log.txt>nul 2>nul
      del /f  /s /q %temp%\del_rd.txt>nul 2>nul
      md !LPartSource!:\mount
   )
   set /p NumWimSource=请输入系统映像文件序号,我不检测无效序号,不带冒号----
   set bVldNSr=n
   for /l %%i in (1,1,!CountWim!) do ( if !NumWimSource!==%%i set bVldNSr=y   )
   if !bVldNSr!==n echo 你没有输入有效系统映像文件序号,退出重来吧!&&goto End

   set /a a=0
   for /f "usebackq delims=" %%i in (%temp%\fSeek.txt) do (
      set /a a+=1
      if !NumWimSource!==!a! Dism /get-imageinfo /imagefile:%%i
   )
   echo.
   set /p IndexSource=请输入系统映像索引序号,我不检测无效序号,不带冒号----

   echo.
   set    bDrvDism=y
   set /p bDrvDism=请问是否封装硬件驱动?默认是y,直接回车/不是输入小写n----

   echo.
   if not !bDrvDism!==n (
      cls
      set /a a=0
      dir %~dp0Driver /d /b >%temp%\dirDrvSeek.txt
      echo 查找到%~dp0Driver目录下所有子目录,仅查子目录
      for /f "usebackq delims=" %%i in (%temp%\dirDrvSeek.txt) do (
         set /a a+=1
         echo 所有子目录:!a!  %%i)
      set /a CountDrv=!a!
      if !CountDrv!==0   echo 无任何Driver子目录&&set bDrvDism=n
      echo -----------------------------------------------------
      if not !CountDrv!==0 (
         set /p NumDrv=请输入Driver子目录序号,不带冒号----
         set bVldDrv=n
         for /l %%i in (1,1,!CountDrv!) do (
            if !NumDrv!==%%i set bVldDrv=y
         )
         if !bVldDrv!==n echo 你没有输入有效Driver子目录序号,退出重来吧!&&goto End
      )
   )

   echo.
   set    bPatDism=y
   set /p bPatDism=请问是否封装系统补丁?默认是y,直接回车/不是输入小写n----

   echo.
   if not !bPatDism!==n (
      cls
      set /a a=0
      dir %~dp0patch /d /b >%temp%\dirPatSeek.txt
      echo 查找到%~dp0patch目录下所有子目录,仅查子目录
      for /f "usebackq delims=" %%i in (%temp%\dirPatSeek.txt) do (
         set /a a+=1
         echo 所有子目录:!a!  %%i)
      set /a CountPatch=!a!
      if !CountPatch!==0   echo 无任何patch子目录&&set bPatDism=n
      echo -----------------------------------------------------
      if not !CountPatch!==0 (
         set /p NumPatch=请输入patch子目录序号,不带冒号----
         set bVldPat=n
         for /l %%i in (1,1,!CountPatch!) do (
            if !NumPatch!==%%i set bVldPat=y
         )
         if !bVldPat!==n echo 你没有输入有效patch子目录序号,退出重来吧!&&goto End
      )
   )

   echo.
   set    bIsWin8=y
   set /p bIsWin8=请问映像版本是否Win8?默认是y,直接回车/不是输入小写n----
   if not !bIsWin8!==n (
      echo.
      set    bEnabNet3=y
      set /p bEnabNet3=请问是否启用 .Net 3.5/2支持?默认是y,直接回车/不是输入小写n----
      if not !bEnabNet3!==n (
         echo.
         set /p LabelISO=请插入光盘或者装载ISO,并准确输入盘符!----
      )
   )

   ::要为Win7封装IE11/IE10,必须封装预备补丁,4-9个。
   if !bIsWin8!==n (
      set    bDisabFun=y
      set /p bDisabFun=请问是否关闭Win7部分功能?默认是y,直接回车/不是输入小写n----
      set    bDismIE10=y
      set /p bDismIE10=请问是否封装IE10/IE11?默认是y,直接回车/不是输入小写n----

      if not !bDismIE10!==n (
         echo IE10升级包在当前目录子目录IE下!
         set /a a=0
         dir %~dp0IE /d /b >%temp%\dirIESeek.txt
         echo 查找到%~dp0IE目录下所有子目录,仅查子目录
         for /f "usebackq delims=" %%i in (%temp%\dirIESeek.txt) do (
            set /a a+=1
            echo 所有子目录:!a!  %%i)
         set /a CountIE=!a!
         if !CountIE!==0   echo 无任何IE子目录&&set bDismIE10=n
         echo -----------------------------------------------------
         if not !CountIE!==0 (
            set /p NumIE=请输入IE子目录序号,不带冒号----
            set bVldIE=n
            for /l %%i in (1,1,!CountIE!) do (
               if !NumIE!==%%i set bVldIE=y
            )
            if !bVldIE!==n echo 你没有输入有效IE子目录序号,退出重来吧!&&goto End
         )
      )
   )


   set /a a=0
   for /f "usebackq delims=" %%i in (%temp%\fSeek.txt) do (
      set /a a+=1
      if !NumWimSource!==!a! dism /mount-image /imagefile:"%%i" /index:!IndexSource! /mountdir:!LPartSource!:\mount  /Scratchdir:!LPartSource!:\tmp_Imagex  
   )

   if not !bDrvDism!==n (
      set /a a=0
      for /f "usebackq delims=" %%i in (%temp%\dirDrvSeek.txt) do (
        set /a a+=1
        if !NumDrv!==!a!  (
           dism /image:!LPartSource!:\mount /add-driver /driver:"%~dp0Driver\%%i" /recurse /forceunsigned  /Scratchdir:!LPartSource!:\tmp_Imagex  >>%temp%\InfoDism.txt
        )
      )
   )

   if not !bPatDism!==n  (
      set /a a=0
      for /f "usebackq delims=" %%i in (%temp%\dirPatSeek.txt) do (
         set /a a+=1
         if !NumPatch!==!a! dir  "%~dp0patch\%%i" /b /s >%temp%\fPatSeek.txt
      )
      for /f "usebackq delims=" %%j in (%temp%\fPatSeek.txt) do (
         dism /image:!LPartSource!:\mount /add-package /packagepath:%%j  /Scratchdir:!LPartSource!:\tmp_Imagex  || echo %%j>>%temp%\InfoDism.txt
      )
   )

   if not !bIsWin8!==n (
      if not !bEnabNet3!==n (
          dism /image:!LPartSource!:\mount /enable-Feature /FeatureName:netfx3 /Source:!LabelISO!:\sources\sxs  /Scratchdir:!LPartSource!:\tmp_Imagex
      )
   )

   if !bIsWin8!==n (
      if not !bDisabFun!==n (
         echo 调整功能独立操作,以增强批处理兼容性,连Win7 Starter都可以用。
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:TabletPCOC
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:WindowsGadgetPlatform   
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:MediaCenter     
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:FaxServicesClientPackage     
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:Printing-XPSServices-Features   
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:Xps-Foundation-Xps-Viewer     
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:Printing-Foundation-InternetPrinting-Client   
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:Hearts   
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:Solitaire
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:SpiderSolitaire
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:FreeCell     
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:Minesweeper      
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:PurblePlace     
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:Chess   
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:Shanghai   
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:InboxGames   
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:OpticalMediaDisc   
      )
      if not !bDismIE10!==n (
         set /a a=0
         for /f "usebackq delims=" %%i in (%temp%\dirIESeek.txt) do (
            set /a a+=1
            if !NumIE!==!a!  (
               dism /image:!LPartSource!:\mount /add-package /packagepath:%~dp0ie\%%i\ie-win7.cab /Scratchdir:!LPartSource!:\tmp_Imagex

               if exist %~dp0ie\%%i\ielangpack-CHS.CAB    dism /image:!LPartSource!:\mount /add-package /packagepath:%~dp0ie\%%i\ielangpack-CHS.CAB  /Scratchdir:!LPartSource!:\tmp_Imagex
               if exist %~dp0ie\%%i\ielangpack-zh-cn.CAB  dism /image:!LPartSource!:\mount /add-package /packagepath:%~dp0ie\%%i\ielangpack-zh-cn.CAB  /Scratchdir:!LPartSource!:\tmp_Imagex

               if exist %~dp0ie\%%i\IE-Hyphenation-neu.msu dism /image:!LPartSource!:\mount /add-package /packagepath:%~dp0ie\%%i\IE-Hyphenation-neu.msu  /Scratchdir:!LPartSource!:
\tmp_Imagex
               if exist %~dp0ie\%%i\IE-Hyphenation-en.msu  dism /image:!LPartSource!:\mount /add-package /packagepath:%~dp0ie\%%i\IE-Hyphenation-en.msu  /Scratchdir:!LPartSource!:
\tmp_Imagex

               if exist %~dp0ie\%%i\IE-Spelling-neu.msu dism /image:!LPartSource!:\mount /add-package /packagepath:%~dp0ie\%%i\IE-Spelling-neu.msu  /Scratchdir:!LPartSource!:\tmp_Imagex
               if exist %~dp0ie\%%i\IE-Spelling-en.msu dism /image:!LPartSource!:\mount /add-package /packagepath:%~dp0ie\%%i\IE-Spelling-en.msu  /Scratchdir:!LPartSource!:\tmp_Imagex
             )
         )
      )
   )



   set    bCommit=y
   set /p bCommit=请问是否保存映像修改,默认是y,直接回车/不保存输入小写n----
   if not !bCommit!==n ( dism /unmount-image /mountdir:!LPartSource!:\mount /commit  /Scratchdir:!LPartSource!:\tmp_Imagex )
   if     !bCommit!==n ( dism /unmount-image /mountdir:!LPartSource!:\mount /discard /Scratchdir:!LPartSource!:\tmp_Imagex )

   rd /s /q  !LPartSource!:\tmp_Imagex
   rd /s /q  !LPartSource!:\mount
我把系统功能组件调整(仅限Win7,大家根据前面第一部分可以自行扩展)、集成系统补丁和集成驱动做成了批处理,大家就不用再手工输入那么多命令了,并且可以根据个人好恶自行修改,实际上这就是一个小软件了,只不过它有一个Ugly Face。该代码段流程图如下:


在这一部分最后我再说点东西,封装系统补丁、硬件驱动,可以在系统安装前完成,可以在制作完系统映像后进行,就是说,你就以审核模式安装了一个没有安装任何杂质的原版系统以后,并重新封装制作了预发布映像,再对预发布映像进行功能调整、补丁驱动集成。请问,你从网上下载下来一个gho系统,你能在这个系统安装前给它封装自己或单位需要的补丁和驱动吗?但是wim的可以。
还有一个问题,这么多补丁,真的需要每个都集成进去吗?有没有权威的方法呢?这个问题需要认真思考一下,我们不妨看看微软是如何自动为我们打补丁的?微软大致是按照重要程度、优先级和当前系统使用的组件、软件来决定打哪些补丁的,我观察过Win7了,它的确不是傻乎乎地把2011年5月以来所有安全补丁都下载下来安装进去的,它是按照重要程度和优先级来办的,并且自动更新补丁数量明显比它所发布的所有补丁数量少,因为有些累积补丁已经包含了以前的补丁,但它还是有点二,如果我的机子上安装了IE9,它会把IE9的安全修补补丁下载安装好,过了没多久,它又告诉我可以升级IE11,既然可以升级新版,干嘛先修补IE9直接给我升级IE11多好!所以一个真正负责任的系统封装集成工程师会严肃看待集成多少补丁和如何集成补丁这个问题的,也请所有发布系统的人正视这个问题。
我建议大家,就实打实安装一遍原版系统,看看微软按照什么顺序给我们更新了多少补丁,我们再根据自己的需求,选择性地跳过某些补丁,这样大家集成补丁总应该有数了吧。当然2012年、2013年和2014年微软更新补丁顺序可能并不相同,所以这也有个时效性了。
这里再说下精简版系统,系统补丁打不上,功能组件打不开,驱动不好装,软件总是出错,很有可能跟精简无章有关系。XP时代,微软对精简已经忍无可忍,Win8/7时代基本上封上了精简这个偏门,如果你觉得你能玩得过微软,那你就用精简版好了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-27 21:10

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表