Python編寫的桌面圖形程序,如何實現(xiàn)版本更新和下載?
回復“書籍”即可獲贈Python從入門到進階共10本電子書
Tkinter、強大的PyQt5和PySide2,還有wxPython。借助這些或內(nèi)置或第三方的模塊,我們可以輕松地編寫跨平臺的桌面圖形界面程序。PyInstaller、Nuitka、cx_Freeze等Python第三方程序打包模塊,將編寫好桌面圖形界面程序打包為各個平臺的二進制可執(zhí)行程序文件,比如Windows下的exe程序執(zhí)行文件。exe可執(zhí)行文件或包含整個文件夾的可執(zhí)行文件。程序更新
檢測更新

下載更新
直接通過主程序進行下載;
編寫一個單獨的更新程序,主程序調(diào)用更新程序進行下載;

subprocess.Popen()調(diào)用打包為單個文件的更新程序。
requests模塊,示例代碼如下所示:def work(self):# 新建一個文件對象temp_file = os.path.join(self.download_path,'update.zip') # 指定更新包下載的路徑logger.info("下載臨時文件路徑為:{}".format(temp_file))with open(temp_file,'wb') as self.fileobj:# 請求更新文件包f = requests.get(self.download_url, stream=True)# 寫入文件offset = 0for chunk in f.iter_content(chunk_size=self.buffer):if not chunk:breakself.fileobj.seek(offset)self.fileobj.write(chunk)offset = offset + len(chunk)proess = offset / int(self.filesize) * 100# logger.info("寫入塊:{},{}".format(offset,proess))self.download_proess_signal.emit(int(proess))
解壓覆蓋
def work(self):# 1.殺死主程序進程for proc in psutil.process_iter():if proc.name() == 'xxx.exe':proc.kill()# 2.獲取程序本地路徑current_path = os.path.dirname(os.path.abspath(__file__))logger.info("當前程序路徑:{}".format(current_path))# 3.解壓新版本壓縮包到程序本地路徑update_file_path = os.path.join(self.download_temp_path, 'update.zip')shutil.unpack_archive(filename=update_file_path,extract_dir=current_path)# 4.刪除臨時文件夾和文件os.remove(update_file_path)shutil.rmtree(self.download_temp_path)

------------------- End -------------------
往期精彩文章推薦:

歡迎大家點贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持
想加入Python學習群請在后臺回復【入群】
萬水千山總是情,點個【在看】行不行
/今日留言主題/
隨便說一兩句吧~~
評論
圖片
表情
