Alex的博客

本博客的文章均为原创,是本人从事行业多年来所遇见一些小问题的解决心得,希望可以帮助到大家!



windows 程序包管理器命令(命令提示符添加删除软件)

顾名思义,就是在命令提示符下管理程序,也就是说可以用批处理添加删除程序 打开关闭windows功能

捕获.PNG

 

比如: 开启telnet服务端

start /w pkgmgr /iu:TelnetServer    #等待安装完成后才推出

pkgmgr /iu:TelnetServer        #运行命令成功后返回命令行

如果是运行的下面一条命令的话只要没报错就说明成功了,需要等待一段时间才能安装好!

因为安装会有一段时间。

下面说明摘自微软官方:

 

程序包管理器 (Pkgmgr.exe) 用于安装、卸载、配置和更新 Windows Vista 的功能和程序包。可以使用程序包管理器和无人参与安装应答文件在脱机目标计算机上安装或更新 Windows Vista 功能程序包。

程序包管理器命令行选项

下列命令行选项可用于程序包管理器。

pkgmgr.exe [/?][/h] [/help] [/l:file_name] [/ip] [/iu:Windows_feature_name] [/m:package_directory] [/n:answer_file] [/norestart] [/o:system_drive_path; offline_Windows_directory_path] [/p:package_name] [/quiet] [/s:sandbox_directory] [/up:package_name] [/uu:Windows_feature_name]

note注意
处理命令行选项时不区分大小写。

下表显示了程序包管理器命令行选项的语法。

 

选项 描述

/?/h/help

在不带选项运行时显示帮助。可联机或脱机使用。

/ip

安装单个程序包。程序包名称区分大小写。要求由 /m  /p 指定程序包。可联机或脱机使用。

必须指向展开的程序包目录,因此 /ip 选项还必须与 /m 选项一起使用。

/l: file_name

指定用于诊断输出的日志文件。可联机或脱机使用。

默认日志位于 %WINDIR%\logs\cbs\cbs.log。Setupact.log 是完整的记录,而 Setuperr.log 仅记录错误。

从只读媒体(如 Windows PE CD)进行安装时,日志记录无法工作。

/iu: Windows_feature_name

指定要启用的 Windows 功能。

可以在一个命令中启用多个 Windows 功能,且必须以分号分隔。可联机或脱机使用。

note注意
Windows 功能名称区分大小写。必须使用与 Windows 系统映像管理器中显示的完全相同的功能名称。

安装更新时,如果其程序包位于 Windows Foundation 程序包中,则需要更新的名称。如果不是,则 /iu 选项还需要用 /p 选项指定程序包标识,默认情况下,该选项是 /iu 选项的 Windows Foundation 选项。如果不是,则会将其覆盖。

可以在一个命令中安装多个更新,且必须以分号分隔。

/m: package_directory

指定带有程序包清单和负载的目录。可以在分号后指定其他源目录。可脱机使用。

如果正在安装程序包,则必须指向展开的程序包目录,在这种情况下,/ip 选项还必须与 /m 选项一起使用。该选项对 /up 选项是必需的。

/n: answer_file

指定无人参与安装应答文件的文件名。可联机或脱机使用。

所有无人参与安装均需要 /n 选项。

note注意
如果需要安装多个程序包,则必须对无人参与安装应答文件使用 /n 选项。

/norestart

禁止重新启动。如果不需要进行任何重新启动,则此命令不执行任何操作。只能联机使用。

不能与 /quiet 选项一同使用。

/o: system_drive_path; offline_Windows_directory_path

指定脱机安装。system_drive_path 根据主机操作系统提供的映射定义启动管理器的位置。

offline_Windows_directory_path 指定从当前运行的操作系统看到的脱机 Windows 目录的完整路径。

note注意
脱机安装的路径不得超过 100 个字符。

所有脱机操作均要求使用 /o 选项指定要脱机提供的映像。

/p: package_name

安装整个程序包。可脱机使用。

该选项对 /up 选项是必需的。

若要查找程序包名称,请展开 .msu 文件并打开 XML 文件。在 XML 文件中,查找 assemblyidentity 标记并复制下列属性的值:

  • Name 

  • PublicToken 

  • ProcessArchitecture 

  • Version 

必须将所有四个值连接起来并在连接后将其传递到程序包管理器,例如name~publickeytoken~processArchitecture~~version

/quiet

以安静模式运行。不提供任何用户界面或控制台输出。如果需要重新启动,则会自动强制执行,而不会显示重新启动确认对话框。可联机或脱机使用。

/s: sandbox_directory

指定要将文件提取到的“sandbox 目录”。从网络安装程序包时,此选项对正确处理文件是必需的。可联机或脱机使用。

此目录用于临时存储。安装完成后,便不再需要此目录的内容,可以将其删除。

note注意
必须对安装的每个程序包使用唯一的 sandbox 目录,否则会在每次进行安装时删除 sandbox 目录的内容。

/up: package_name

卸载程序包。要求用实际的程序包名称指定程序包。可以在一个命令中卸载多个程序包,且必须以分号分隔。可脱机使用。

若要查找程序包名称,请展开 .msu 文件并打开 XML 文件。在 XML 文件中,查找 assemblyidentity 标记并复制下列属性的值:

  • Name 

  • PublicToken 

  • ProcessArchitecture 

  • Version 

必须将所有 4 个值连接起来并在连接后将其传递到程序包管理器。例如,name~publickeytoken~processArchitecture~~version

/uu: Windows_feature_name

指定要禁用的 Windows 功能。必须至少指定一个 Windows 功能名称。可以在一个命令中禁用多个 Windows 功能,且必须以分号分隔。可联机或脱机使用。

/uu 选项的工作方式与 /iu 选项的工作方式相同。

卸载更新时,如果其程序包位于 Windows Foundation 程序包中,则必须使用更新的名称。如果其程序包不在 Windows Foundation 程序包中,则 /uu 选项需要用 /p 选项指定程序包标识。

可以在一个命令中卸载多个更新,且必须以分号分隔。

如果正在卸载多个程序包或更新,则可以将其全部包含在以分号分隔的单个命令中。进行安装时,它们之间的任何依存关系均会得到解析。

启用某个 Windows 功能时,如果其程序包位于 Windows Foundation 程序包中,则需要该 Windows 功能的命令行名称。如果不在其中,则 /iu 选项还需要用 /p 选项指定程序包标识。(更为特别的是,默认情况下会假定 /p 选项为 /iu选项的 Windows Foundation。如果不是,则会将其覆盖。)

如果在不使用在 Windows 系统映像管理器 (Windows SIM) 中创建的应答文件的情况下配置 Windows 功能,请使用无人参与 Windows 安装程序参考的 Windows-Foundation-Package 部分中提供的命令行名称。该名称区分大小写。

示例

使用以下命令可使程序包管理器仅在完成运行之后返回。

start /w pkgmgr ...

以下命令指定脱机安装到驱动器 C 的根目录。

start /w pkgmgr /o:"c:\;c:\windows"

将反斜杠 (\) 置于驱动器规格之后,但不是在 Windows 目录之后。

以下命令指定使用应答文件进行脱机安装。

start /w pkgmgr /o:"c:\;c:\windows" /n:c:\unattend.xml

以下命令在脱机映像中启用 Windows 功能。

start /w pkgmgr /iu:<Windows_feature_name> /o:"c:\;c:\Windows"

以下命令安装程序包并指定展开的 .cab 文件的目录中的清单位置。

start /w pkgmgr /ip /m:c:\mypackage

以下命令指向 \Sandbox 目录中的语言包,程序包管理器将 .cab 文件提取该语言包。

start /w pkgmgr /ip /m:c:\lp.cab /s:c:\sandbox

以下命令指向脱机加载的映像。

start /w pkgmgr /o:"c:\wimmount;c:\wimmount\windows"

以下命令通过指定程序包名称卸载程序包。

start /w pkgmgr /up:Package_1_for_KB929761~31bf3856ad364e35~x86~~6.0.0.1

疑难解答

运行每个命令后,应检查 %ERRORLEVEL% 以确认安装。如果安装成功,应返回零 (0)。

echo %ERRORLEVEL%
note注意
提供脱机 Windows 映像时,请确保所有脱机服务操作均已成功。如果出现任何故障,请丢弃可能损坏的 Windows 映像。

程序包管理器返回的一种常见错误是 87,表示传递的参数错误。另一种常见错误代码是 3010,表示需要重新启动计算机才能使更改生效。可以通过在 Winerror.h 文件中搜索该错误代码来对其进行解码。

如果收到带有十六进制标识符的错误消息,请将数值的最后四位转换为十进制等效值,然后在 Winerror.h 中搜索十进制错误代码。

有关 Winerror.h 文件的详细信息,请参阅此 Microsoft 网站

其他疑难解答信息可在日志文件中找到。可在记事本或任何类似的文本编辑器中打开日志文件。以下日志文件可以帮助您诊断服务问题。

  • Windows Update 日志 (%WINDIR%\WindowsUpdate.log)

  • 基于组件的服务日志 (%WINDIR%\logs\cbs\cbs.log)

有关诊断错误日志的详细信息,请参阅:

  • 位于 OPK DVD 上的 Windows 错误诊断指南

  •  Microsoft 网站上的 OCSetup 日志诊断程序。

note注意
如果将两个程序包提取到 sandbox 目录,您将只看到拾取的第一个程序包的错误、事件和日志。必须对安装或卸载的每个程序包使用唯一的 sandbox 目录。可以每次安装时删除 sandbox 目录的内容。

 

 

 

浏览1473  评论0  Alex于 2014-4-25 13:37
发言