将 Office 安装到 Windows 容器 (servercore:ltsc2019) 失败,错误代码 17002

Kai*_*ang 5 .net containers azure odt docker

错误信息

安装到 Windows 容器(服务器核心)时 ODT(Office 部署工具)日志报告错误:C2R 客户端返回失败错误代码,错误代码:17002

环境

  • 安装了桌面体验的 Windows Server 2019 (1809) 中的行为。
    • ODT安装结果:成功。
    • test-o365.ps1:成功。
  • 容器中的行为 (mcr.microsoft.com/windows/servercore:ltsc2019)
    • ODT安装结果:否定(C2R客户端返回失败错误代码,错误代码:17002)
    • test-o365.ps1:否定:HRESULT:0x80040154(REGDB_E_CLASSNOTREG)

Dockerfile

FROM mcr.microsoft.com/windows/servercore:ltsc2019
WORKDIR C:/setup
COPY . . 
ENTRYPOINT startup.cmd
Run Code Online (Sandbox Code Playgroud)

启动命令

curl.exe https://download.microsoft.com/download/2/7/A/27AF1BE6-DD20-4CB4-B154-EBAB8A7D4A7E/officedeploymenttool_12325-20288.exe  --output .\
officedeploymenttool_12325-20288.exe
officedeploymenttool_12325-20288.exe /quiet /passive /extract:.
setup.exe /configure o365.xml
powershell -file test-o365.ps1
pause
Run Code Online (Sandbox Code Playgroud)

o365.xml

FROM mcr.microsoft.com/windows/servercore:ltsc2019
WORKDIR C:/setup
COPY . . 
ENTRYPOINT startup.cmd
Run Code Online (Sandbox Code Playgroud)

测试-o365.ps1

curl.exe https://download.microsoft.com/download/2/7/A/27AF1BE6-DD20-4CB4-B154-EBAB8A7D4A7E/officedeploymenttool_12325-20288.exe  --output .\
officedeploymenttool_12325-20288.exe
officedeploymenttool_12325-20288.exe /quiet /passive /extract:.
setup.exe /configure o365.xml
powershell -file test-o365.ps1
pause
Run Code Online (Sandbox Code Playgroud)

更多信息

我们已经意识到文章 [3] 中提到的“Office 服务器端自动化”问题。目前阶段,我们正在评估在 Windows 容器中运行旧版 ASP.NET 应用程序并启用 Office/COM 互操作的可能性。

参考

  1. Office 部署工具概述
  2. Windows Server 中的服务器核心安装选项是什么?
  3. 服务器端办公自动化的注意事项

Nic*_*phy 2

我已经为此苦苦挣扎了一段时间,终于成功了。我发现 17002 错误的解决方案是在交互式运行 docker 映像时运行 setup.exe /configure config.xml,然后提交该容器。这对我在 windows:1809 图像上有用。

完整的书面记录

我将下载的 Office 文件单独复制到 docker 映像中,因为我在从 docker 文件内部下载文件时遇到问题(请参阅此处)。因此,我将该文件夹Office与 docker 文件位于同一级别,其中包含setup.exe /download config.xml. 然后下面的 docker 文件构建了一个基础镜像。我运行docker run -it {IMAGEID} powershell,导航到 C:\\odtsetup 并使用交互式控制台运行setup.exe /configure config.xml,退出容器并运行

docker stop {CONTAINERID}
docker commit {CONTAINERID}` 
Run Code Online (Sandbox Code Playgroud)

我现在有一个安装了 docker 的基本 Windows 服务器映像,并且可以在我的应用程序的 dockerfile 中使用它。如果我需要更新服务器映像或 Excel 版本,我需要再次手动执行此操作,但我很庆幸它能正常工作。

Dockerfile

FROM mcr.microsoft.com/windows:1809
WORKDIR C:\\odtsetup
ADD https://download.microsoft.com/download/2/7/A/27AF1BE6-DD20-4CB4-B154-EBAB8A7D4A7E/officedeploymenttool_13426-20308.exe odtsetup.exe
RUN odtsetup.exe /quiet /norestart /extract:C:\\odtsetup
ADD config.xml .
ADD Office Office\\
Run Code Online (Sandbox Code Playgroud)

配置文件

<Configuration>
  <Add OfficeClientEdition="64" Channel="PerpetualVL2019">
    <Product ID="O365ProPlusRetail">
      <Language ID="MatchOS" />
      <ExcludeApp ID="Access" />
      <ExcludeApp ID="Groove" />
      <ExcludeApp ID="Lync" />
      <ExcludeApp ID="OneDrive" />
      <ExcludeApp ID="OneNote" />
      <ExcludeApp ID="Outlook" />
      <ExcludeApp ID="PowerPoint" />
      <ExcludeApp ID="Publisher" />
      <ExcludeApp ID="Teams" />
      <ExcludeApp ID="Word" />
    </Product>
  </Add>
  <Updates Enabled="FALSE" />
  <Display Level="None" AcceptEULA="TRUE" />
  <Property Name="AUTOACTIVATE" Value="1"/>
  <Property Name="FORCEAPPSHUTDOWN" Value="TRUE" />
  <Remove All="TRUE">
  </Remove>
</Configuration>
Run Code Online (Sandbox Code Playgroud)