带有附加.zip文件的WPF部署

时间:2010-11-17 20:39:12

标签: c# wpf deployment clickonce

我在部署独立的WPF应用程序时遇到问题。我有一个巨大的.zip文件的pdf文件,我想包含在部署中。有没有办法在部署后将这些添加到单击中并让安装程序将文件解压缩到用户计算机上的特定目录中?

所以基本上,我正在寻找的是:

用户安装WPF应用程序 WPF安装程序将pdfs解压缩到C:/ SomeDirectory / PDFS WPF应用程序现在可以使用这些PDFS作为其资源。

谢谢!

1 个答案:

答案 0 :(得分:3)

按设计ClickOnce不允许您在安装过程中执行任意步骤。但是,鉴于必要的权限,ClickOnce应用程序在第一次运行时可以执行的操作没有任何限制。

最常见的解决方案是在应用程序启动时检查是否已解压缩大型zip文件,如果没有,则将PDF解压缩到目录中。这可以使用SharpZipLib或任何其他方式完成。

另一种解决方案是使用非ClickOnce引导程序可执行文件解压缩文件并执行ClickOnce安装。

请参阅this article,了解ClickOnce不允许自定义安装步骤的原因,以及有关如何解决此问题的更多详细信息。

如果您可以使用ClickOnce应用程序目录中的PDF,则第三个选项是将它们包含在ClickOnce部署本身中。这样做的缺点是您松散了压缩(除非您通过HTTP部署服务器可能会压缩文件)。

如果您的应用程序在内部使用PDF文件,则另一种解决方案是在清单中包含大型.zip文件,在需要时解压缩单个PDF文件。例如,它们可以使用SharpZipLib解压缩并使用File.WriteAllBytes(Path.GetTempFileName() + ".pdf", ...)写出或直接加载到使用它们的任何组件中。如果您写入临时目录,则需要一种机制来清理不再使用的文件。

最后两个解决方案中的任何一个都比将PDF复制到固定路径更清晰,因为ClickOnce应用程序将是自包含的并且将完全卸载。