如何在 Docker 容器中编译 HTML Help Workshop 项目?

How do you compile a HTML Help Workshop project inside a Docker container?

当我尝试在安装了 Visual Studio 构建工具的 mcr.microsoft.com/windows/servercore:1809 容器中编译 HTML Help Workshop 项目时出现此错误。

PS C:\> & 'C:\Program Files (x86)\HTML Help Workshop\hhc.exe' test.hhp
HHC5010: Error: Cannot open "c:\test.chm". Compilation stopped.

即使是这个最小的测试项目也无法编译,并输出相同的错误。

[OPTIONS]
Compiled file=C:\test.chm

[FILES]

我注意到 Build Tools 没有安装所有文件 ls 'C:\Program Files (x86)\HTML Help Workshop' 所以我也尝试用我的桌面版本 HTML Help Workshop 替换它,但这也没有用。

我想知道是否有编译 HTML Help Workshop 项目的方法 Docker。

我简直不敢相信!!!!我让它与 mcr.microsoft.com/windows:1903 一起工作!所以总而言之,HTML Help Workshop 在 Windows Servercore 中不起作用,但在 Windows 容器中起作用。

如果您想使用 HTML Help Workshop:

,这里有一个 dockerfile 示例
FROM mcr.microsoft.com/windows:1903

ADD https://aka.ms/vs/16/release/vs_buildtools.exe vs_buildtools.exe
RUN .\vs_buildtools.exe --quiet --norestart --nocache --wait \
    --add Microsoft.VisualStudio.Component.VC.ATLMFC
RUN del vs_buildtools.exe

在容器内使用此命令编译帮助项目:

"C:\Program Files (x86)\HTML Help Workshop\hhc.exe" path\toProject.hhp

注意:这仅适用于英文帮助文件。与 Servercore 不同,Microsoft 不发布具有 Windows 本地化版本的容器,而且我还没有找到在 Docker 容器中更改系统区域设置的方法。将上述方法用于其他语言的帮助项目会导致编码不正确。

要使其与 servercore:1809 或 ltsc2019 一起使用,您必须将 dll itss.dllitircl.dll 添加到容器 syswow64 文件夹中,并使用 regsrv32 进行注册。

这些文件可以在 windows-10 安装的 windows\syswow64 文件夹中找到。

#add missing dlls to run html help workshop on ltsc2019 container
COPY .\itss.dll C:\Windows\SysWOW64\itss.dll
COPY .\itircl.dll C:\Windows\SysWOW64\itircl.dll

RUN C:\Windows\SysWOW64\regsvr32.exe C:\Windows\SysWOW64\itss.dll
RUN C:\Windows\SysWOW64\regsvr32.exe C:\Windows\SysWOW64\itircl.dll