在 Eclipse WTP 中为“WindowsUpdateDiagnostic.diagcab”创建应答文件

在 Eclipse WTP 中为“WindowsUpdateDiagnostic.diagcab”创建应答文件

我正在尝试编写安装脚本WindowsUpdateDiagnostic.diagcab 来源于此

msdt.exe /cab "%~dp0WindowsUpdateDiagnostic.diagcab" -af "%~dp0stillneeded.xml"

不幸的是,创建应答文件的尝试似乎失败了:

在此处输入图片描述

在 0x80092003 上没有找到太多信息。我希望借助一个示例 answers.xml,我可以伪造答案并使其正常工作。

这是一个模板,但我还没有任何运气。

<Answers>

  <Interaction ID="IT_Theme">

  <Value>Nature</Value>

  </Interaction>

</Answers>

来源:https://msdn.microsoft.com/en-us/library/dd776530.aspx#CommandLineAdministration

提前致谢。

答案1

您可以使用 Get-TroubleshootingPack (https://msdn.microsoft.com/en-us/library/dd323716(v=vs.85).aspx) cmdlet 在 PowerShell 中创建应答文件:

Get-TroubleshootingPack C:\Windows\Diagnostics\system\WindowsUpdate -AnswerFile c:\WUDAnswers.xml

(请注意,它使用 %systemroot%(通常为 C:\Windows)中现有故障排除程序的路径,而不是 .diagcab 文件。我无法使用 .diagcab 文件创建应答文件)。

这应该只会问你一个问题,然后你输入“1 [Enter]”来回答“应用修复”。然后你可以创建一个只包含以下行的 PowerShell 脚本 (.ps1):

Get-TroubleshootingPack -Path C:\Windows\diagnostics\system\WindowsUpdate | Invoke-TroubleshootingPack -AnswerFile c:\WUDAnswers.xml -Unattended -Result c:\WUDResult

您可以使用如下命令运行该 PowerShell 脚本:

powershell -ExecutionPolicy Bypass -file c:\RunWindowsUpdateDiagnostics.ps1

...这应该在 C:\WUDResult 中创建 3 个或更多文件(根据需要更改路径)。

答案2

建议的解决方案在理论上是正确的,但不适用于 WindowsUpdateDiagnostic.diagcab,因为该解决方案在单个 diagcab 内阁文件中包含两个 WTP 包。

  1. 因此,请使用 expand.exe、7Zip 或类似程序将 diagcab 文件解压至 c:\wud\
  2. 然后以提升的权限运行 Powershell(右键单击/以管理员身份运行)
  3. 键入“导入模块故障排除包”
  4. 然后继续使用前面提到的解决方案,即运行“Get-TroubleshootingPack C:\wud\BitsDiagnostic -AnswerFile c:\wud\answer_bits.xml”
  5. 和“Get-TroubleshootingPack C:\wud\windowsupdatediagnostic -AnswerFile c:\wud\answer_wud.xml”

现在您有两个应答文件和一个对应的目录 c:\wud,可以使用以下命令进行部署和调用

Get-TroubleshootingPack -Path C:\wud\windowsupdatediagnostic | Invoke-TroubleshootingPack -AnswerFile c:\wud\answer_wud.xml -Unattended -Result c:\wud\log_wud

Get-TroubleshootingPack -Path C:\wud\BitsDiagnostic | Invoke-TroubleshootingPack -AnswerFile c:\wud\answer_bits.xml -Unattended -Result c:\wud\log_bits

我不知道是否可以使用带有两个应答文件和 msdt.exe 的“multi-diagcab”来实现这一点...大概不行。

相关内容