创建自我打开的文档

时间:2011-06-17 15:42:42

标签: c# .net windows self-extracting

我正在开发一个拥有专有文件格式的项目。该项目有一个大型的安装必需程序和一个不需要安装的较小的查看器。我希望能够从我的主应用程序中导出“自我打开”.exe的文件 - 也就是说,您可以双击exe并显示嵌入的文件(这是为了让查看器传递给有没有安装能够查看它的主应用程序 - 它们只会传递文档。)

我对如何做到这一点有点失落。我一直在调查的两个想法已经走到了尽头。他们是:

1)将文件嵌入查看器中。我可以通过Visual Studio手动执行此操作,并且我已经有了一个工作演示,但我无法想出一种方法来实现这一点。

2)创建一个自解压存档,将文件和exe解压缩到temp,并在命令行中使用文件名运行exe。这听起来很容易和可能(虽然很容易),但我遇到的问题是存档或安装程序似乎没有必要的命令行来完成所有这些。

有什么想法吗?我更喜欢第二种,因为它很容易,但第一次是因为它看起来更像是防弹/更少hacky。

2 个答案:

答案 0 :(得分:3)

使用您的方法(1):

如果您使用的是.NET,则可以将查看器程序设置为一个程序集,将文档设置为另一个程序集,然后使用ILMerge等将它们组合成一个最终的可执行文件。

ILMerge是一个命令行程序,因此您应该能够自动执行该步骤。

这样,让你的自定义查看器基本上只是“加载与我一起的其他程序集”并且可能在另一个程序集上调用一个函数来获取数据应该相当容易。

唯一的另一个难题是如何生成'文档'程序集。我不完全确定这些步骤,但它似乎应该是可行的。

也许使用CMake或类似方法生成VStudio项目,然后使用MSBuild将其构建到程序集中。

答案 1 :(得分:1)

虽然将exe文件捆绑到文档中以使其成为一个自我打开的文档是一个很酷的主意,但我认为这不是解决问题的最佳方法。问题是文档需要一个不易获得的特定查看器。因此,让观众尽可能容易获得。

这就是Xint0在评论中提出的建议。找到一种方法使观众尽可能随时可用。无需担心盗版,因为它只是一个专有格式的观众,因此对此感兴趣的人将是已经拥有无法打开的文档的人。因此,请将查看器发布到您公司的网站上,并鼓励使用完整软件的公司在其网站上发布链接,以便客户轻松找到它。