【发布时间】:2011-04-26 22:44:23
【问题描述】:
在为我的程序创建自动更新程序的过程中,我无法成功下载 .exe 文件。
我正在做的事情是这样的:
import urllib
url = '--insert-url--'
f = urllib.urlopen(url)
file = f.read()
f.close
f2 = open('download.exe', 'w')
f2.write(file)
f2.close
我在下载时没有遇到任何错误,但是当我尝试运行执行时,我收到以下错误:
这个文件的版本不是 与Windows版本兼容 你在跑。检查你的电脑 系统信息看你是否 需要 x86(32 位)或 x64(64 位) 程序的版本,然后 联系软件发行商。
我自己上传了执行,之前运行良好。
我还尝试了一些我发现的其他各种下载方法,这导致了同样的错误,我还尝试上传到不同的网站以确保不是这样。
我需要用什么特殊的方法来做这件事吗?
编辑:
我对下载做了一些进一步的测试。我在另一台计算机(32 位系统)上运行程序(我正在使用 Spencer 现在发布的内容)。 (我的是 64 位的。)我在那台计算机上没有收到错误,但是当我运行程序时,会出现命令行,因为它是我用作我的命令行样式的 .exe测试下载,但是在我必须结束程序之前,闪烁的白色输入栏的东西只是在整个地方反弹,所以显然有些东西已经损坏了。
另外,下载过程是否可以使用批处理文件?这几乎会更容易,因为无论如何程序都必须重新启动才能开始使用新的更新,因为它使用的是全新的 .exe。 (我将使用 py2exe 将程序制作为 .exe。)
【问题讨论】:
-
由于文件扩展名是“.exe”,我假设您在 Windows 上执行此操作。尝试将
f2文件的模式更改为'wb',以二进制模式写入。默认为文本模式,同时会将遇到的所有换行符(字节)更改为回车+换行符。 -
如果你手动下载(通过网络浏览器访问)并执行它,你会遇到同样的问题吗?
-
@Senthil 如果我手动下载它可以正常工作。