我有 pyinstaller 在 Windows 上使用 --onefile 模式打包的程序。一个用于主流程,一个用于工具包,我想即时更新它们。
我计划如下更新流程:
- 主进程exe启动时,检查是否有补丁文件。如果是,请将工具包复制到 update.exe,并在分离模式下启动“update.exe 升级”。主进程迅速退出,让 update.exe 完成它的工作。
- update.exe 从不在包中,因此它可以很好地完成替换工作。
- 之后,update.exe 启动主进程exe,也是分离模式。
我认为它应该可以工作,但是该程序不会启动另一个程序。
启动分离过程的代码:
subprocess.Popen(command, stdin=None, stdout=None, stderr=None, close_fds=True,
creationflags=0x00000008)
这些代码在通过 python 脚本启动 pyinstaller exe 并通过 pyinstaller exe 启动像 memcached.exe 这样的普通程序时有效。似乎只是由 pyinstaller 打包的程序无法启动另一个。
有没有办法修复它,或其他更新解决方案
更新:这是 pyinstaller2.0 中的错误,已在最新的 dev 分支中修复。 http://www.pyinstaller.org/ticket/569