我们有一个Ruby-on-rails服务器端部署,需要允许用户在他们的计算机上下载预编译的自解压Windows EXE文件。
我们还需要动态生成文本文件(基于用户ID)并将其部署在EXE可以找到它的客户端计算机上的某个位置。
我们有两个选择:
请注意,我们暂时排除了2个单独的下载链接(1个用于exe,1个用于动态文本信息),因为与该用户体验相关的问题(即丑陋的UX,下载可能存储在不同的路径等)。
我不是一个网络开发人员,但在谷歌上花了几分钟后,我认为这两个解决方案都存在问题并且很难看。
任何人都有一个聪明的主意吗?
答案 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。