1

我正在尝试在我的 WPF 应用程序中包含一个 .CHM(Microsoft 编译的 HTML 帮助)文档文件。它在我的应用程序中设置为资源。

我使用 .NET 5,我想使用单文件部署创建一个自包含的应用程序。当我的本地机器上有一个 .CHM 文件时,我可以执行该文件以在 Windows 中打开一个默认帮助查看器。

var p = new Process();
p.StartInfo = new ProcessStartInfo(@"D:\helpfile.chm")
{
    UseShellExecute = true
};
p.Start();

我想对项目中包含的资源做类似的事情。但是,在单个文件部署中没有文件路径之类的东西(请参阅https://docs.microsoft.com/en-us/dotnet/core/deploying/single-file)。由于我想“退出”应用程序并将文件发送到进程,我可以将整个文件发送到我的应用程序之外的进程吗?

一种解决方法可能是创建一个安装程序并将帮助文件安装在用户的计算机上,但这会破坏单个文件部署的全部意义。

4

1 回答 1

1
  1. 用于Application.GetResourceStream()将嵌入式 CHM 的内容作为二进制流获取。
  2. 用于System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".chm"获取临时文件名,并将该文件作为二进制流打开。
  3. 将(1)中的内容写入(2),关闭(2)。
  4. 使用 (2) 中的临时文件名构建并启动您的进程。
  5. (可选)在您的应用程序退出时删除 (2)。
于 2020-11-17T11:33:07.033 回答