2010-02-02 98 views
0

我們有一個Ruby-on-rails服務器端部署,需要允許用戶在其計算機上下載預編譯的自解壓縮Windows EXE文件。以編程方式在客戶端創建文本文件

我們還需要動態地生成一個文本文件(基於用戶ID)並將其部署在EXE可以找到它的客戶端機器上的某個位置。

我們有2種選擇:

  1. 生成Linux服務器上的這個文本文件,不知何故?將其嵌入到Windows EXE中。這看起來很牽強
  2. 讓用戶下載靜態EXE,並以某種方式獲取存儲在客戶端計算機上的動態文本信息(通過不可見的下載,cookie,vbscript或客戶端上的javascripting)。

請注意,我們已經,現在,排除了有(爲EXE和1的動態文本信息1),因爲與用戶體驗(即醜UX相關的問題,2個獨立的下載鏈接,下載可能是存儲在不同的路徑等)。

我不是一個網絡開發人員,但在Google上花了幾分鐘後,我認爲這兩種解決方案都有問題和醜陋。

任何人都有一個聰明的想法?

回答

1

一對夫婦的想法:

1)拉鍊上的服務器文件的exe和文本文件解壓縮到同一位置(創建自解壓zip文件(EXE)會更好

2。 )在用戶下載exe後提供一個KEY/PIN碼。當應用程序第一次運行時,檢測不到任何文本文件,它會要求輸入PIN碼,然後exe會調用web服務並下載信息以保存到文本文件中。例如,這可以是Guid。

+0

我喜歡你的第一個主意!謝謝! 這裏進一步討論: http:// stackoverflow。com/questions/818482 /創建一個自解壓zip壓縮包在linux-box – bhavinb 2010-02-03 06:37:58

0

可以將文本文件嵌入到可執行文件as a resource中。

2

可以簡單地將您的文本文件附加到exe。這些額外的字節將被操作系統加載程序忽略,但您的程序將能夠獲取它們。這是自解壓EXE的工作原理。

該exe文件在運行時打開args[0](這是它自己的可執行文件)並從最後尋找必要的字節數,然後讀取文本。

您的網頁腳本在響應中爲exe的字節提供服務,然後在相同的響應中發送文本文件也很簡單。

如果文本不是固定長度,還可以在流的最後以整數形式發送文本的長度。然後exe會先讀取這個固定大小的長度字段,然後從最後尋找適當的字節數來讀取可變部分。

將數據附加到EXE的各種examples [msdn]顯示從開始解析EXE結構以查找數據的起始位置。只需將最後一個數據的長度附加到EXE就可以避免需要了解EXE結構。

+0

感謝您的詳細回覆。我不知道你可以做你的建議,所以這是非常有用的知道。不過,我認爲Mark Redman提出的在Linux上打包自解壓exe文件的建議聽起來是一種簡單,優雅的方法來解決我的問題,所以我打算繼續這樣做。 我還發現Stackoverflow上的另一個類似的線程,進一步討論了這個非常相似的建議,指向我可以使用的工具。 http://stackoverflow.com/questions/818482/creating-a-self-extracting-zip-archive-on-a-linux-box – bhavinb 2010-02-03 06:37:03

相關問題