1

Iv 使用 wxPython 和 cefPython 构建了一个应用程序。现在我正在构建一个更新程序来更新我的软件。

过程如下:

  1. 应用程序启动后调用更新程序
  2. 更新程序检查 API
  3. 如果版本比 API 旧,它会下载新的压缩包
  4. 下载完成后,它会关闭应用程序
  5. 关闭,现在它应该提取新文件,
  6. 解压,现在它必须再次打开程序。

我认为问题出现在第 4 点,因为我认为该过程已关闭,因此现在其余步骤不会发生。

如果这是问题,我应该如何做到这一点,以便更新程序(我从主程序导入和调用)也不会关闭。

这是一些代码:

import updater (updater.py)

class MyApp(wx.App):
    timer = None
    timerID = 1
    def OnInit(self):       
        if not USE_EVT_IDLE:
            print("Using TIMER to execute the CEF message loop work")
            self.CreateTimer()
        global frame
        frame = MainFrame()
        self.SetTopWindow(frame)
        frame.Show(False)       
        **thread.start_new_thread(checkForUpdate, ()) --- This is where im calling the update function**
        return True



def checkForUpdate():
    print("Checking for update: %s" % time.ctime())
    updater.callAPI()
    threading.Timer(120, checkForUpdate).start()

谢谢

4

1 回答 1

1

既然你使用的是 wxPython,为什么不使用它的内置更新模块呢?我认为它们是在 2.8 的最新版本中添加的,它肯定包含在 2.9 中。他们基本上采用了 Esky 项目并将其包装在 wxPython 帮助程序中,以使其更易于使用。我在这里写了一个关于这个主题的教程:

您可以在此处阅读有关 esky 的信息:

我也听说过“goodasnew”项目,但我还没有尝试过:

于 2013-10-31T13:34:33.640 回答