2009-10-19 88 views
3

假設我想從網上運行一個exe文件,顯然我寧願將它下載到一個臨時文件夾中。從那裏運行它並刪除它(或讓操作系統這樣做)。有沒有任何約定如何做到這一點,而不是要轟炸權限問題,覆蓋存在的文件等?編輯:在哪裏以及如何下載臨時文件?

謝謝。

編輯我從桌面應用程序換貨。順便說一句,我有很多猜測,但我只是想知道接受什麼。

我知道我可以使用Path.GetTempFile,但它已經爲我製作了這個文件,這讓我覺得它可能也會將它添加到一些數據庫,並跟蹤它 - 所以我不能刪除它並替換它由我自己的文件。

我知道我還可以用Path.TempDirectory(或類似的東西)和Path.RandomFileName,但後者添加一個隨機擴展名的文件名,而我需要的exe,顯然這可以很容易地瑟爾爲好,但它似乎不可思議對我來說,重寫MS似乎已經試圖爲我們寫的東西。

+3

大多數情況下,Web瀏覽器不會讓您從網上運行可執行文件。另外,你永遠永遠不會給用戶一個印象,它永遠只能從網上運行一個可執行文件。 99.999%的用戶不會理解如何區分您的應用程序和其他任何應用程序,並且只會記住一件事情:「如果彈出一條消息要求運行應用程序,請按是。」即時失敗。 – 2009-10-19 18:36:37

回答

0

可信的applet可以與用戶的文件系統玩,所以你可以走這條路。你正在尋求C#的建議,但如果語言是靈活的,這將在Java世界中起作用。

2

我有必要寫一個自我更新的Windows服務,並發現自己在類似的鞋子,我需要最新的安裝程序下載到臨時位置在執行之前。關於這方面最佳實踐的信息並不多,所以我依賴於ASP.NET/C#提供的「工具」。

我建立的完整路徑,使用Path.GetTempPath()下載文件,下載的文件名。下面是一些示例代碼:

string url = "http://www.domain.com/install.exe"; 
string path = Path.GetTempPath(); 
string fileName = Path.GetFileName(url); 
string tmpFile = Path.Combine(path, fileName); 

底線是,我認爲你的猜測使用System.IO.Path溫度*函數是一種合理的方法 - 即使我無法找到任何文件來支持它。

+0

Beeing完美主義者,我不知道如果這樣一個共同的名字已經存在臨時文件夾.. – Letterman 2009-10-20 16:45:31

+0

那麼,你應該努力保持你的文件名獨特。您可以使用Path.GetTempFileName()或Path.GetRandomFileName()來生成文件名。前者實際上會生成一個擴展名爲.tmp的文件,您需要更改該文件以滿足您的需求。後者返回一個密碼強的隨機字符串,可用作文件夾名稱或文件名。我希望有所幫助。 – 2009-10-20 19:31:09

+0

是的,它的確如此。想要打擾,但這裏有一個問題,GetRandomFileName返回一個帶有隨機擴展名的文件名。我可以輕鬆刪除點並添加EXE,我有沒有選擇? – Letterman 2009-10-22 22:53:23

相關問題