2009-10-19 56 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

相关问题