以编程方式在客户端创建文本文件

时间:2010-02-02 07:59:07

标签: ruby-on-rails cookies client-server client-side

我们有一个Ruby-on-rails服务器端部署,需要允许用户在他们的计算机上下载预编译的自解压Windows EXE文件。

我们还需要动态生成文本文件(基于用户ID)并将其部署在EXE可以找到它的客户端计算机上的某个位置。

我们有两个选择:

  1. 在linux服务器上生成这个文本文件,然后点什么?将其嵌入Windows EXE中。这看起来很牵强
  2. 让用户下载静态EXE并以某种方式获取存储在客户端计算机上的动态文本信息(通过客户端上的隐形下载,cookie,vbscript或javascripting)。
  3. 请注意,我们暂时排除了2个单独的下载链接(1个用于exe,1个用于动态文本信息),因为与该用户体验相关的问题(即丑陋的UX,下载可能存储在不同的路径等)。

    我不是一个网络开发人员,但在谷歌上花了几分钟后,我认为这两个解决方案都存在问题并且很难看。

    任何人都有一个聪明的主意吗?

3 个答案:

答案 0 :(得分:2)

可以简单地将文本文件附加到exe。操作系统加载程序将忽略这些附加字节,但您的程序将能够获取它们。这就是自解压EXE的工作原理。

运行时,exe会打开args[0](这是它自己的可执行文件)并从末尾搜索必要的字节数,然后读取文本。

您的Web脚本可以直接在响应中提供exe的字节,然后在同一响应中发送文本文件。

如果文本不是固定长度,您还可以在流的最末端以整数形式发送文本的长度。然后,exe从头读取适当的字节数,然后读取变量部分,首先读取这个固定大小的长度字段。

EXE的各种examples [msdn]附加数据显示从头开始解析EXE结构以查找数据的开始位置。只需将数据长度附加到EXE,就可以避免需要了解EXE结构。

答案 1 :(得分:1)

一些想法:

1)将服务器文件上的exe和文本文件压缩到同一位置(创建自解压缩zip(exe)会更好。

2)在用户下载exe后提供KEY / PIN码。首次运行应用程序时,检测不到文本文件,它要求输入PIN,然后exe调用web服务并下载信息以保存到文本文件。例如,这可以是Guid。

答案 2 :(得分:0)

可以将文本文件嵌入可执行文件as a resource