2011-06-17 97 views
5

我正在開發一個專有文件格式的項目。該項目有一個大型的安裝必要程序和一個小型瀏覽器,無需安裝。我希望能夠從我的主應用程序中導出「自動打開」.exe文件的文件 - 也就是說,您可以雙擊exe文件並顯示嵌入文件(這是爲了讓觀看者傳遞給有未安裝能夠查看它的主應用程序 - 它們只會傳遞文檔)。創建自我開放文檔

我有點迷失在如何做到這一點。我一直在調查的兩個想法已經走到了盡頭。它們是:

1)將文件嵌入查看器中。我可以通過Visual Studio手動執行此操作,並且我已經有了一個工作演示,但我無法找到一種方法來實現這一點。

2)創建一個自解壓存檔,將文件和exe提取到temp,並在命令行上運行帶有文件名的exe。這聽起來很簡單並且可能(儘管hacky),但我遇到了歸檔或安裝程序似乎沒有必要的命令行來執行所有這些的問題。

任何想法?我更喜歡第二個,因爲它很容易,但第一個,因爲它似乎更加防彈/少hacky。

+2

因此,如果您發送10個文檔,您會發送10個查看器的副本?這不是比發送一次查看器更糟,然後發送文檔並使用文件關聯來打開它們嗎? – AntonyW

+1

難道你最好把你的努力導出爲HTML,PDF或其他常見的文件格式,可以被所有人閱讀嗎?或者那會不會呢? –

+2

@AntonyW:文件數百兆字節,查看器小於500KB。我願意做的交易:) – DanTheMan

回答

1

將exe文件捆綁到文檔中使其成爲一個自我打開的文檔是一個很酷的想法,但我認爲這不是最好的解決方案。問題是文件需要一個不容易獲得的特定查看器。所以儘可能讓觀看者儘可能簡單。

這就是Xint0在評論中提出的建議。找到一種方法,使觀衆儘可能隨時可用。無需擔心盜版問題,因爲它只是專有格式的瀏覽器,所以對此感興趣的唯一人員將是那些已經擁有無法打開的文檔的人員。因此,請在您的公司網站上發佈觀衆,並鼓勵使用完整軟件的公司在其網站上發佈鏈接,以便他們的客戶可以輕鬆找到它。

+0

好吧,科林,你會得到'我會放棄這個努力'的選擇。我希望能夠輕鬆解決問題,但看起來並不存在。我認爲這不是一個壞主意或者(太嚴重)的安全漏洞,但我不願意提出以前沒有人嘗試過的東西。好吧! – DanTheMan

+0

謝謝。正如我所說,我認爲自我開放/觀看文件是一個很酷的想法。在某種程度上,我希望看到一個實現,因爲它很酷。不過,我仍然認爲讓觀衆分發是你真正需要解決的問題。 – Corin

3

用你的方法(1):

如果您使用的是.NET,你可以讓你的瀏覽器程序是一個組件,您的文檔是另一種組裝,然後使用ILMerge或類似物將它們組合成一個最終執行

ILMerge是一個命令行程序,所以你應該能夠自動執行該步驟。

這樣一來,讓您的自定義查看器基本上只是「加載與我同在的其他程序集」,並可能調用另一個程序集的函數來獲取數據應該相當容易。

難題唯一的另一部分是如何生成'文檔'程序集。我不完全確定這些步驟,但似乎應該是可行的。

也許使用CMake或類似的方法來生成VStudio項目,然後使用MSBuild將其構建到程序集中。