参考Windows 7的做法,来实现Win8.x的部署


了解DISM


  DISM.exe是新的命令行工具,在操作系统Windows 7的默认安装中和自动安装工具Windows AIK 2.0中都可以看到该工具的身影。

  注意:以可启动的Windows镜像方式对VHD文件提供支持是Windows 7中出现的一个新功能,我们会在本系列其他文章中对该功能进行介绍。

  我们可以使用DISM.exe操作Windows镜像,这其中包括Windows 镜像文件(WIM)和虚拟硬盘文件(VHD)。虽然DISM.exe主要用于操作离线的Windows 镜像,但是它的一些功能也可以用来为在线的Windows操作系统提供管理。我们所说的操作镜像意指添加或删除设备驱动,添加或删除操作系统补丁,添加hotfixes,配置镜像的区域设定以及其他相应操作。DISM还可以用来将Windows镜像更新至不同版本(如从商业版更新至旗舰版),并准备一个Windows PE镜像以供使用。

  我们可以用DISM对以下版本的镜像进行修复:

   ·Windows Vista SP1 及之后版本

   ·Windows Server 2008

   ·Windows 7

   ·Windows Server 2008 R2

  使用DISM

  在Windows Vista(或Windows AIK 1.1)中编辑一个镜像需要使用若干不同的工具。例如我们要在主安装的镜像上安装一个不合常规的设备驱动,如果想在Vista中实现这一操作,要按照以下步骤:

   1.用ImageX装载镜像

   2.用数据包管理器(Pkgmgr.exe)添加设备驱动器

   3.用ImageX卸载镜像

  此外,如果我们的镜像是一个Windows PE镜像,那么还需要使用Windows Preinstallation Environment(PEimg.exe)工具来配置该镜像。最后,如果需要修改镜像的语言和本地设置,我们还要使用International Settings Configuration Tool(Intlcfg.exe)。

  但是,如果要在Windows 7中完成这一操作,要怎么办呢?DISM.exe现在已经取代了早前Windows AIK 1.1版本中的Pkgmgr.exe,Intlcfg.exe和PEimg.exe工具。另外,DISM还包括装载和卸载镜像的功能,因此我们可以对镜像进行编辑。

  通常,我们利用DISM把某个设备驱动添加到离线的Windows 镜像中,然后再将该镜像部署到需要这一驱动的硬件上。让我们浏览一遍完成该操作的命令行以便学习如何使用DISM。

  首先,在我们的Windows AIK 2.0电脑上的C:\Images 文件夹中可以找到一个用于Windows 7的Windows安装镜像(install.wim文件):

  

C:\Program Files\Windows AIK\Tools\PETools>dir C:\Images
 Volume in drive C has no label.
 Volume Serial Number is 1C9A-D699
 
 Directory of C:\Images
 
05/03/2009  12:46 PM    <DIR>          .
05/03/2009  12:46 PM    <DIR>          ..
04/22/2009  07:28 AM     2,218,242,699 install.wim
               1 File(s)  2,218,242,699 bytes
               2 Dir(s)  180,411,486,208 bytes free

下面,在 C:\Drivers 文件夹下是Microsoft LifeCam硬件的Windows 7 beta驱动程序(version 2.91):


C:\Program Files\Windows AIK\Tools\PETools>dir C:\Drivers
 Volume in drive C has no label.
 Volume Serial Number is 1C9A-D699
 
 Directory of C:\Drivers
 
05/03/2009  01:19 PM    <DIR>          .
05/03/2009  01:19 PM    <DIR>          ..
05/03/2009  01:19 PM    <DIR>          VX6000
               0 File(s)              0 bytes
               3 Dir(s)  180,411,486,208 bytes free

  我们要把镜像装载到名为C:\Servicing的空文件夹中。先让我们使用带有 /get-wiminfo 参数的DISM.exe命令行来显示包含在install.wim文件中的所有Windows镜像。记住,一个安装镜像可以包含一个以上的Windows镜像。

C:\Program Files\Windows AIK\Tools\PETools>dism /get-wiminfo /wimfile:C:\Images\install.wim
 
Deployment Image Servicing and Management tool
Version: 6.1.7100.0
 
Details for image : C:\Images\install.wim
 
Index : 1
Name : Windows 7 STARTER
Description : Windows 7 STARTER
Size : 7,927,317,234 bytes
 
Index : 2
Name : Windows 7 HOMEBASIC
Description : Windows 7 HOMEBASIC
Size : 7,983,232,406 bytes
 
Index : 3
Name : Windows 7 HOMEPREMIUM
Description : Windows 7 HOMEPREMIUM
Size : 8,422,988,972 bytes
 
Index : 4
Name : Windows 7 PROFESSIONAL
Description : Windows 7 PROFESSIONAL
Size : 8,303,245,818 bytes
 
Index : 5
Name : Windows 7 ULTIMATE
Description : Windows 7 ULTIMATE
Size : 8,461,373,562 bytes
 
The operation completed successfully.

现在,假设我们即将部署Windows 7 专业版,在此案例中,从上面的命令行中可以看出,在这一特定镜像中,Index数为4。因此,让我们利用DISM.exe命令中的 /mount-wim 参数把这一特定Windows镜像加载到空的C:\Servicing 文件夹中。



C:\Program Files\Windows AIK\Tools\PETools>dism /mount-wim /wimfile:C:\Images\install.wim /index:4 /mountdir:C:\Servicing
 
Deployment Image Servicing and Management tool
Version: 6.1.7100.0
 
Mounting image
[==========================100.0%==========================]
The operation completed successfully.

  使用/get-mountedinfo 参数可以查看镜像是否已经正确加载:

C:\Program Files\Windows AIK\Tools\PETools>dism /get-mountedwiminfo
 
Deployment Image Servicing and Management tool
Version: 6.1.7100.0
 
Mounted images:
 
Mount Dir : C:\Servicing
Image File : C:\Images\install.wim
Image Index : 4
Mounted Read/Write : Yes
Status : Ok
 
The operation completed successfully.

  如果我们查看C:\Servicing 目录的内容,就会看到已加载镜像的文件和目录。

C:\Program Files\Windows AIK\Tools\PETools>dir C:\Servicing
 Volume in drive C has no label.
 Volume Serial Number is 1C9A-D699
 
 Directory of C:\Servicing
 
04/22/2009  03:36 AM    <DIR>          .
04/22/2009  03:36 AM    <DIR>          ..
03/20/2009  10:42 AM                24 autoexec.bat
03/20/2009  10:42 AM                10 config.sys
04/22/2009  01:17 AM    <DIR>          PerfLogs
04/22/2009  05:26 AM    <DIR>          Program Files
04/22/2009  03:27 AM    <DIR>          Users
04/22/2009  05:29 AM    <DIR>          Windows
               2 File(s)             34 bytes
               6 Dir(s)  180,321,382,400 bytes free



现在,让我们查看一下在已装载镜像可以执行哪些操作:

C:\Program Files\Windows AIK\Tools\PETools>dism /image:C:\Servicing /?
 
Deployment Image Servicing and Management tool
Version: 6.1.7100.0
 
Image Version: 6.1.7100.0
 
 
The following commands may be used to service the image:
 
WINDOWS EDITION SERVICING COMMANDS:
 
  /Set-ProductKey         - Populates the product key into the offline image.
  /Get-TargetEditions     - Displays a list of Windows editions that an image can be upgraded to.
  /Get-CurrentEdition     - Displays the editions of the specified image.
  /Set-Edition            - Upgrades the Windows image to a higher edition.
 
UNATTEND SERVICING COMMANDS:
 
  /Apply-Unattend         - Applies an unattend file to an image.
 
DRIVER SERVICING COMMANDS:
 
  /Remove-Driver          - Removes driver packages from an offline image.
  /Add-Driver             - Adds driver packages to an offline image.
  /Get-DriverInfo         - Displays information about a specific driver in an offline image or a running operating system.
  /Get-Drivers            - Displays information about all drivers in an offline image or a running operating system.
 
INTERNATIONAL SERVICING COMMANDS:
 
  /Set-LayeredDriver      - Sets keyboard layered driver.
  /Set-UILang             - Sets the default system UI language that is used in the mounted offline image.
  /Set-UILangFallback     - Sets the fallback default language for the system UI in the mounted offline image.
  /Set-UserLocale         - Sets the user locale in the mounted offline image.
  /Set-SysLocale          - Sets the language for non-Unicode programs (also called system locale) and font settings in the mounted offline image.
  /Set-InputLocale        - Sets the input locales and keyboard layouts to use in the mounted offline image.
  /Set-TimeZone           - Sets the default time zone in the mounted offline image.
  /Set-AllIntl            - Sets all international settings in the mounted offline image.
  /Set-SKUIntlDefaults    - Sets all international settings to the default values for the specified SKU language in the mounted offline image.
  /Gen-LangIni            - Generates a new lang.ini file.
  /Set-SetupUILang        - Defines the default language that will be used by setup.
  /Get-Intl               - Displays information about the international settings and languages.
 
APPLICATION SERVICING COMMANDS:
 
  /Check-AppPatch         - Displays information if the MSP patches are applicable to the mounted image.
  /Get-AppPatchInfo       - Displays information about installed MSP patches.
  /Get-AppPatches         - Displays information about all applied MSP patches for all installed applications.
  /Get-AppInfo            - Displays information about a specific installed MSI application.
  /Get-Apps               - Displays information about all installed MSI applications.
 
PACKAGE SERVICING COMMANDS:
 
  /Add-Package            - Adds packages to the image.
  /Remove-Package         - Removes packages from the image.
  /Enable-Feature         - Enables a specific feature in the image.
  /Disable-Feature        - Disables a specific feature in the image.
  /Get-Packages           - Displays information about all packages in the image.
  /Get-PackageInfo        - Displays information about a specific package.
  /Get-Features           - Displays information about all features in a package.
  /Get-FeatureInfo        - Displays information about a specific feature.
  /Cleanup-Image          - Performs cleanup and recovery operations on the image.
 
For more information about these servicing commands and their arguments, 
specify a command immediately before /?.
 
     Examples:
         DISM.exe /Image:C:\test\offline /Apply-Unattend /?
         DISM.exe /Image:C:\test\offline /Get-Features /?
         DISM.exe /Online /Get-Drivers /?

这些参数可以在上面的DRIVER SERVICING COMMANDS 中找到。让我们使用/get-drivers 参数来显示安装在已装载镜像中的驱动:

C:\Program Files\Windows AIK\Tools\PETools>dism /image:C:\Servicing /get-drivers
 
Deployment Image Servicing and Management tool
Version: 6.1.7100.0
 
Image Version: 6.1.7100.0
 
Obtaining list of 3rd party drivers from the driver store...
 
Driver packages listing:
 
Published Name : oem0.inf
Original File Name : prnms001.inf
Inbox : No
Class Name : Printer
Provider Name : Microsoft
Date : 6/21/2006
Version : 6.1.7100.0
 
The operation completed successfully.

  现在可以用/add-driver 参数把LifeCam驱动添加到已装载镜像中:

C:\Program Files\Windows AIK\Tools\PETools>dism /image:C:\Servicing /add-driver /driver:C:\Drivers\VX6000\vx6000.inf
 
Deployment Image Servicing and Management tool
Version: 6.1.7100.0
 
Image Version: 6.1.7100.0
 
Found 1 driver package(s) to install.
Installing 1 of 1 - C:\Drivers\VX6000\vx6000.inf: The driver package was successfully installed.
The operation completed successfully.
Let's use /get-drivers again to verify that the LifeCam driver has been successfully added to the mounted image:
C:\Program Files\Windows AIK\Tools\PETools>dism /image:C:\Servicing /get-drivers
 
 
Deployment Image Servicing and Management tool
Version: 6.1.7100.0
 
Image Version: 6.1.7100.0
 
Obtaining list of 3rd party drivers from the driver store...
 
Driver packages listing:
 
Published Name : oem0.inf
Original File Name : prnms001.inf
Inbox : No
Class Name : Printer
Provider Name : Microsoft
Date : 6/21/2006
Version : 6.1.7100.0
 
Published Name : oem1.inf
Original File Name : vx6000.inf
Inbox : No
Class Name : Image
Provider Name : Microsoft
Date : 7/18/2008
Version : 5.5.3.74
 
The operation completed successfully.

现在,可以通过卸载镜像来结束操作:

C:\Program Files\Windows AIK\Tools\PETools>dism /unmount-wim /mountdir:C:\Servicing /commit
 
Deployment Image Servicing and Management tool
Version: 6.1.7100.0
 
Image File : C:\Images\install.wim
Image Index : 4
Saving image
[==========================100.0%==========================]
Unmounting image
[==========================100.0%==========================]
The operation completed successfully.

  其他资源

  要获取更多有关DISM.exe的使用信息,在Deployment Tools Command Prompt中输入dism/?。另外,还可以点击“开始”菜单,从程序中找到Windows AIK用户指导(WAIK.chm),在其中的Deployment Tools Technical Reference部分也可以找到有关DISM.exe的详细信息。