我有一個使用wxPython(使用PyInstaller)創建的exe文件。在代碼中,我有能力下載exe的更新(從而下載exe的副本)。人們有這個EXE「安裝」在他們的計算機上的文件夾C:\Program Files\MyProgram\MyProg.exe
我使用urllib.urlretrieve(url,'MyProg.exe')
下載新文件。它正確下載,但現在我想自動關閉我當前的窗口,並重新打開exe(新下載的版本)。關閉時重新打開wxpython exe
我的步驟:
- 點擊 「更新」(我有這樣的設置)
- 關閉當前窗口/程序
- 下載新的exe文件(覆蓋當前的EXE)
- 打開新下載EXE
我的程序關閉但沒有任何反應。如果我拿出self.Close()
,程序將只下載一個新文件,只要我將它保存爲不同的名稱即可。然後我可以運行新保存的文件,但是當前窗口保持打開狀態。
有什麼想法?
我的代碼:
class TMainForm(wx.Frame):
def __init__(self, *args, **kwds):
....
def OnProgramUpdate(self):
dlg = wx.MessageDialog(self,
"Update?",
"Update", wx.YES_NO|wx.YES_DEFAULT|wx.ICON_QUESTION)
closeresult = dlg.ShowModal()
dlg.Destroy()
if closeresult == wx.ID_YES:
self.Close()
urllib.urlretrieve(url,'MyProg.exe')
p = subprocess.Popen("MyProg.exe")
class TApplication(wx.App):
def OnInit(self):
wx.InitAllImageHandlers()
MainForm = TMainForm(None, -1,"")
self.SetTopWindow(MainForm)
MainForm.Show()
return 1
if __name__ == "__main__":
Application = TApplication(0)
Application.MainLoop()
是否可以在Python代碼(即時)中創建批處理文件?這樣它可以創建批處理文件,然後在重新打開時刪除它。這將有助於防止用戶意外刪除批處理文件。不過我喜歡這個主意! – mcfly
當然它只是'batfile = open('mybatfile.bat','wt')'寫下你想要做的事情然後關閉它。 –
謝謝!這工作完美! – mcfly