如何在 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.dll
和 itircl.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
当我尝试在安装了 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.dll
和 itircl.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