zoukankan      html  css  js  c++  java
  • Win10/Server2016镜像集成离线补丁

    Win10镜像集成离线补丁
    因为正常安装系统后再打补丁比较漫长,可以事先做好打过补丁的iso,备将来使用。
    以管理员身份运行cmd,然后通过dism提取、挂载、集成补丁、保存install.wim镜像,最后用iso工具替换即可。
    
    独立补丁下载:
    最新的Win10 1607和Windows Server 2016补丁信息:
    https://support.microsoft.com/en-us/help/4000825/windows-10-windows-server-2016-update-history
    最新的Win10 1703补丁信息:
    https://support.microsoft.com/en-us/help/4018124
    选择一个最新的补丁(在最上方)后,点击页面内容里的Microsoft Update Catalog链接
        How to get this update
        ----------------------
        To get the standalone package for this update, go to the _Microsoft Update Catalog_ website.
    下载累计更新。
    
    补丁查询页面:
    http://www.catalog.update.microsoft.com/home.aspx
    
    制作集成补丁的iso详细步骤:
    1. 查看镜像源install.wim的索引号
    先将iso文件载入虚拟光驱,这里是G:盘,执行下面命令
    C:>dism /get-imageinfo /imagefile:G:sourcesinstall.wim
    
    Deployment Image Servicing and Management tool
    Version: 10.0.14393.0
    
    Details for image : G:sourcesinstall.wim
    
    Index : 1
    Name : Windows 10 企业版 2016 长期服务版
    Description : Windows 10 企业版 2016 长期服务版
    Size : 12,555,951,804 bytes
    
    The operation completed successfully.
    
    2. 提取镜像源install.wim加索引的镜像到本地磁盘install_exp.wim
    下面提取命令成功后,就可以弹出虚拟光驱了。
    C:>dism /export-image /sourceimagefile:G:sourcesinstall.wim /sourceindex:1 /destinationimagefile:D:install_exp.wim
    
    Deployment Image Servicing and Management tool
    Version: 10.0.14393.0
    
    Exporting image
    [==========================100.0%==========================]
    The operation completed successfully.
    
    3. 挂载install_exp.wim到一个文件夹
    注意:被挂在的目标文件夹不能是ReFS文件系统
    C:>mkdir D:mount
    C:>dism /mount-wim /wimfile:D:install_exp.wim /index:1 /mountdir:D:mount
    
    Deployment Image Servicing and Management tool
    Version: 10.0.14393.0
    
    Mounting image
    [==========================100.0%==========================]
    The operation completed successfully.
    
    4. 将要被集成的补丁文件,集中放到一个文件夹里
    这里假设在D:package
    
    5. 应用补丁到挂载文件夹(时间较长)
    C:>dism /image:D:mount /add-package /packagepath:D:package
    
    Deployment Image Servicing and Management tool
    Version: 10.0.14393.0
    
    Image Version: 10.0.14393.0
    
    Processing 1 of 1 - Adding package D:packagewindows10.0-kb4039396-x64_bd1f9e1c7add02b8f3334f1aeaa07cae6632c3cf.msu
    [==========================100.0%==========================]
    The operation completed successfully.
    
    6. 清理镜像WinSxS,清理后会减少体积,但将不能卸载集成过的补丁(时间较长,可跳过)
    C:>dism /image:D:mount /cleanup-image /startcomponentcleanup /resetbase
    
    Deployment Image Servicing and Management tool
    Version: 10.0.14393.0
    
    Image Version: 10.0.14393.0
    
    [==========================100.0%==========================]
    The operation completed successfully.
    
    7. 卸载镜像保存修改(时间较长)
    C:>dism /unmount-wim /mountdir:D:mount /commit
    
    Deployment Image Servicing and Management tool
    Version: 10.0.14393.0
    
    Image File : D:install_exp.wim
    Image Index : 1
    Saving image
    [==========================100.0%==========================]
    Unmounting image
    [==========================100.0%==========================]
    The operation completed successfully.
    
    8. 制作ISO
    1) 用imagex将这个wim最大化压缩导出新的install.wim
    注:如果没有imagex,可以直接把install_exp.wim重命名为install.wim,但是文件会比较大。
    C:>imagex /export D:install_exp.wim 1 D:install.wim /compress maximum
    
    ImageX Tool for Windows
    Copyright (C) Microsoft Corp. All rights reserved.
    Version: 6.3.9600.16384
    
    Exporting: [D:install_exp.wim, 1] ->
               [D:install.wim]
    
    
    [ 100% ] Exporting progress
    
    Successfully exported image #1.
    
    
    Total elapsed time: 59 sec
    
    2) 将原ISO复制一份出来。假设新iso命名为cn_windows_10_enterprise_2016_ltsb_x64_with_kb4039396.iso
    3) 用UltraISO等工具将install.wim替换到新iso文件sources下同名文件,保存完成。
    ----------
    说明:如果不用UltraISO,可以使用微软官方的Windows ADK工具(完整的的Windows 8.1版本有4.1GB)
    其中的oscdimg命令可以制作iso
    命令帮助:https://technet.microsoft.com/zh-cn/library/cc749036(v=ws.10).aspx
    ADK介绍:https://msdn.microsoft.com/zh-cn/library/hh825420.aspx
    ADK下载页面:http://go.microsoft.com/fwlink/?LinkId=293840
    下面是离线下载Windows ADK的方法:
    1. 首先到下载页面下载到最新的Windows ADK安装在线安装程序adksetup.exe
    2. 在cmd下离线下载
    C:>adksetup.exe /layout D:adk
    也可以按功能安装,详细见 https://msdn.microsoft.com/zh-cn/library/hh825494.aspx
    
    ----------
    制作install.wim合集
    以Windows Server 2016为例,MSDN版本包含了4个镜像。
    在分别制作好wim文件,注意用imagex按相同的压缩方式(建议/compress maximum)导出4个wim,假设为:
    install1.wim
    install2.wim
    install3.wim
    install4.wim
    合并命令:
    C:>dism /Export-Image /SourceImageFile:D:install1.wim /SourceIndex:1 /DestinationImageFile:D:install.wim
    C:>dism /Export-Image /SourceImageFile:D:install2.wim /SourceIndex:1 /DestinationImageFile:D:install.wim
    C:>dism /Export-Image /SourceImageFile:D:install3.wim /SourceIndex:1 /DestinationImageFile:D:install.wim
    C:>dism /Export-Image /SourceImageFile:D:install4.wim /SourceIndex:1 /DestinationImageFile:D:install.wim
    全部合并到install.wim,替换iso,完成。
    

    patchwim.bat

    ::patchwim.bat sourceWim index packagePath mountPath outputPath [/nointeraction]
    ::patchwim.bat g:sourcesinstall.wim 1 D:package D:mount D:output
    @echo off
    pushd %~dp0
    set sourceWim="%~1"
    set index=%2
    set packagePath="%~3"
    set mountPath="%~4"
    set outputPath=%~5
    set nointeraction=%6
    set outputWim="%outputPath%install_%index%.wim"
    set outputWimFinal="%outputPath%install%index%.wim"
    echo sourceWim: %sourceWim%
    echo index: %index%
    echo packagePath: %packagePath%
    echo mountPath: %mountPath%
    echo outputPath: "%outputPath%"
    echo outputWim: %outputWim%
    echo outputWimFinal: %outputWimFinal%
    if "%outputPath%"=="" goto :help
    if not exist %packagePath% goto :err1
    if /i "%nointeraction%"=="/nointeraction" goto :start
    set /p tmpInput=Are you ready? (Y/N):
    if /i "%tmpInput%"=="y" goto :start
    goto :eof
    :start
    if not exist %mountPath% md %mountPath%
    if not exist "%outputPath%" md "%outputPath%"
    
    echo dism /export-image /sourceimagefile:%sourceWim% /sourceindex:%index% /destinationimagefile:%outputWim%
    dism /export-image /sourceimagefile:%sourceWim% /sourceindex:%index% /destinationimagefile:%outputWim%
    if errorlevel 1  goto :error
    
    echo dism /mount-wim /wimfile:%outputWim% /index:1 /mountdir:%mountPath%
    dism /mount-wim /wimfile:%outputWim% /index:1 /mountdir:%mountPath%
    if errorlevel 1  goto :error
    
    echo dism /image:%mountPath% /add-package /packagepath:%packagePath%
    dism /image:%mountPath% /add-package /packagepath:%packagePath%
    if errorlevel 1  goto :error
    
    echo dism /image:%mountPath% /cleanup-image /startcomponentcleanup /resetbase
    dism /image:%mountPath% /cleanup-image /startcomponentcleanup /resetbase
    if errorlevel 1  goto :error
    
    echo dism /unmount-wim /mountdir:%mountPath% /commit
    dism /unmount-wim /mountdir:%mountPath% /commit
    if errorlevel 1  goto :error
    
    echo imagex /export %outputWim% 1 %outputWimFinal% /compress maximum
    imagex /export %outputWim% 1 %outputWimFinal% /compress maximum
    if errorlevel 1  goto :error
    
    del /q %outputWim%
    echo Completed.
    goto :end
    
    :error
    echo ERRORLEVEL: %ERRORLEVEL%
    goto :end
    
    :err1
    echo ERROR: The packagePath(%packagePath%) is not exist!
    goto :end
    
    :help
    echo.
    echo Usage:
    echo     patchwim.bat sourceWim index packagePath mountPath outputPath [/nointeraction]
    echo     /nointeraction: No interaction
    echo Example:
    echo     (1) patchwim.bat g:sourcesinstall.wim 1 D:package D:mount D:output
    echo     (2) autopatch.bat:
    echo         patchwim.bat g:sourcesinstall.wim 1 D:package D:mount D:output /nointeraction
    echo         patchwim.bat g:sourcesinstall.wim 2 D:package D:mount D:output /nointeraction
    echo         patchwim.bat g:sourcesinstall.wim 3 D:package D:mount D:output /nointeraction
    echo         patchwim.bat g:sourcesinstall.wim 4 D:package D:mount D:output /nointeraction
    echo.
    
    :end
    if /i "%nointeraction%"=="/nointeraction" goto :eof
    echo Press any key to EXIT...
    pause>nul
    popd

    patchwimall.bat

    ::patchwimall.bat sourceWim packagePath mountPath outputPath [/nointeraction]
    ::patchwimall.bat g:sourcesinstall.wim D:package D:mount D:output
    @echo off
    pushd %~dp0
    set patchwim=patchwim.bat
    set sourceWim="%~1"
    set packagePath="%~2"
    set mountPath="%~3"
    set outputPath=%~4
    set nointeraction=%5
    for /f "delims=: tokens=2" %%a in ('imagex /info %sourceWim%^|find /i "Image Count:"') do set imageCount=%%a
    set outWim="%outputPath%install.wim"
    echo sourceWim: %sourceWim%
    echo imageCount: %imageCount%
    echo packagePath: %packagePath%
    echo mountPath: %mountPath%
    echo outputPath: "%outputPath%"
    echo outWim: %outWim%
    if "%outputPath%"=="" goto :help
    if not exist %packagePath% goto :err1
    if not exist %patchwim% goto :err2
    if /i "%nointeraction%"=="/nointeraction" goto :start
    set /p tmpInput=Are you ready? (Y/N):
    if /i "%tmpInput%"=="y" goto :start
    goto :eof
    :start
    for /l %%a in (1,1,%imageCount%) do (
        call %patchwim% %sourceWim% %%a %packagePath% %mountPath% "%outputPath%" /nointeraction
    )
    if %imageCount% equ 1 goto :rename
    for /l %%a in (1,1,%imageCount%) do (
        dism /Export-Image /SourceImageFile:"%outputPath%install%%a.wim" /SourceIndex:1 /DestinationImageFile:%outWim%
    )
    goto :complete
    :rename
    move /y "%outputPath%install1.wim" %outWim%
    goto :complete
    :complete
    echo All Completed! ImageInfo:
    dism /get-imageinfo /imagefile:%outWim%
    goto :end
    
    :err1
    echo ERROR: The packagePath(%packagePath%) is not exist!
    goto :end
    
    :err2
    echo ERROR: %patchwim% is not found!
    goto :end
    
    :help
    echo.
    echo Usage:
    echo     patchwimall.bat sourceWim packagePath mountPath outputPath [/nointeraction]
    echo     /nointeraction: No interaction
    echo Example:
    echo     patchwimall.bat g:sourcesinstall.wim D:package D:mount D:output
    echo.
    
    :end
    if /i "%nointeraction%"=="/nointeraction" goto :eof
    echo Press any key to EXIT...
    pause>nul
    popd
  • 相关阅读:
    攻防世界 resver catch-me
    elf.h
    攻防世界 reverse 进阶 notsequence
    攻防世界 reverse 进阶 easyre-153
    攻防世界 reverse 进阶 APK-逆向2
    寒假训练 roarctf_2019_realloc_magic(1/250)
    寒假任务
    Main_arena与non_main_arena
    wdb2018_guess
    :: namespace using作用
  • 原文地址:https://www.cnblogs.com/Bob-wei/p/7477780.html
Copyright © 2011-2022 走看看