0

我有 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

4

1 回答 1

2

我在使用 2.0 版创建的两个 PyInstaller 应用程序中遇到了同样的错误(app1 必须运行 app2)

我尝试了 app1 中的 os.system、subprocess.call 和 os.startfile 来运行 app2,但它们都失败了,无法获取有关问题的信息。

最后,我使用 PyInstaller 1.5.1 重新构建了 app1,并且可以毫无问题地运行 app2(使用 V 2.0 构建)。

我想向 PyInstaller 团队报告这个错误。

于 2012-08-27T03:28:13.073 回答