How to use DISM to install a hotfix from within
Windows
15 Feb 2011 10:10 AM
Hello, my name is Emmers
Presson. I am a Support Escalation Engineer for Microsoft in the Windows Core
team.
The purpose of this blog
is to give you the steps to install a hotfix (or any other “package”) on the
currently running operating system using the Deployment Image Servicing and
Management (DISM) command. DISM is a new command-line tool that comes built-in
for Windows 7 and Windows Server 2008 is the DISM tool. DISM combines the
functions of multiple tools from the Windows Automated Installation Kit (WAIK)
and allows users to perform multiple actions on operating system images. For the
most part, this involves viewing and manipulating “offline images” which are in
the Windows Imaging (WIM) file format. Here is a good reference that explains
the function of the DISM tool and what the DISM tool is meant to
replace:
There are also some DISM
commands that target the running operating system (“online”). For example, you
can use the following command to list the “packages” installed:
dism /online
/get-packages /format:table
The command-line switch
to install a package is “/Add-Package.” Let’s say that you are running Windows
Server 2008 R2 Enterprise and you want to install the hotfix KB976571. When you
download the hotfix file, the file name is “Windows6.1-KB976571-v2-x64.msu.”
When you look at the DISM syntax in online help, you would assume that following
syntax would work:
DISM.exe /Online
/Add-Package /PackagePath:c:\kb976571\Windows6.1-KB976571-v2-x64.msu
where the .MSU file is
stored in the c:\kb976571 folder.
Here is the screenshot of
the results:
You will see the
following snippet if you review the file
c:\windows\logs\dism\dism.log:
2010-09-02 20:33:58,
Info DISM DISM Package Manager: PID=7116 Encountered the option "packagepath"
with value "c:\kb976571\Windows6.1-KB976571-v2-x64.msu" -
CPackageManagerCLIHandler::Private_GetPackagesFromCommandLine
2010-09-02 20:33:58,
Error DISM DISM Package Manager: PID=7116 DISM does not support
installing MSU files online. -
CMsuPackage::Install(hr:0x80070032)
Based on these results,
you may wonder if you can really install packages online and if so, what type of
file must you use if you can’t use MSU files? The answer is found in defining
what a Microsoft Update Standalone Package (MSU) file is and how you would do
this in the previous command-line tool, Package Manager (Pkgmgr.exe).
You had to extract the
contents of a MSU file and instead use the .CAB file of the package in order to
install or uninstall using the Package Manager tool (http://support.microsoft.com/default.aspx?scid=kb;EN-US;940410).
So try this
approach:
1. Create a
c:\temp\976571 folder.
2. Use the following
command to extract the contents of the MSU file:
Expand –F:*
c:\kb976571\Windows6.1-KB976571-v2-x64.msu c:\temp\976571
This resulted in
extracting multiple files, which included the Windows6.1-KB976571-v2-x64.cab
file.
Now try the following
command:
DISM.exe /Online
/Add-Package
/PackagePath:c:\temp\976571\Windows6.1-KB976571-v2-x64.cab
This time I see the
following:
Success!
You could tweak the
command. For example, use the following syntax to install the package silently
and avoid restarting Windows:
start /wait DISM.exe
/Online /Add-Package /PackagePath:c:\temp\976571\Windows6.1-KB976571-v2-x64.cab
/Quiet /NoRestart
You could use a similar
command to uninstall an update using DISM. Here’s the syntax for
that:
DISM.exe /Online
/Remove-Package
/PackagePath:c:\temp\976571\Windows6.1-KB976571-v2-x64.cab
I hope you find this
helpful and explore other options for the DISM command-line tool.
Emmers
Presson
Support Escalation Engineer
Microsoft
Enterprise Platforms Support
[fw]How to use DISM to install a hotfix from within
Windows