xcopy实现局域网内的自动升级,把软件放在如\\10.0.1.1\soft 的已连接的共享文件夹内,用windows自带的xcopy拷贝覆盖实现升级。
def upgrade(self):
src_path = config_json.setting["src_path"]
file_name = os.path.join(src_path, "setting.json")
logging.info('Reading %s...' % file_name)
file=open(file_name, encoding="utf-8")
new_setting = json.load(file)
file.close()
new_version = int(new_setting["version"])
version = int(config_json.setting["version"])
if new_version > version:
# logging.info("has new_version", new_version)
r = QMessageBox.question(
self, '升级', '是否升级', QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
if r == QMessageBox.Yes:
logging.info("yes")
args = ["xcopy.exe", "/Y","/S", os.path.abspath(src_path), getpath.getpath()]
logging.info(args)
p=subprocess.Popen(args, creationflags=subprocess.DETACHED_PROCESS | subprocess.CREATE_NEW_PROCESS_GROUP,
stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE, close_fds=True,
bufsize=1)
for line in iter(p.stdout.readline, b''):
logging.info(line.decode("gbk"))
p.stdout.close()
p.wait()
self.close()
else:
logging.info("no")
else:
logging.info("not new_version "+str(new_version))