diff --git a/.github/workflows/build-app.yml b/.github/workflows/build-app.yml index 524ee69..a172b12 100644 --- a/.github/workflows/build-app.yml +++ b/.github/workflows/build-app.yml @@ -55,6 +55,8 @@ jobs: python -m pip install --upgrade pip pip install flake8 pytest pip install -r requirements.txt + choco install innosetup + echo "C:\Program Files (x86)\Inno Setup 6" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - name: Lint with flake8 run: | # stop the build if there are Python syntax errors or undefined names @@ -83,17 +85,6 @@ jobs: with: name: version_info path: version_info.txt - - name: Compile Inno Setup Script - run: | - choco install innosetup - echo "C:\Program Files (x86)\Inno Setup 6" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - Expand-Archive -Path AUTO_MAA_${{ env.AUTO_MAA_version }}.zip -DestinationPath AUTO_MAA -Force - ISCC.exe "AUTO_MAA.iss" - - name: Upload Setup Artifact - uses: actions/upload-artifact@v4 - with: - name: AUTO_MAA_Setup - path: AUTO_MAA-Setup.exe publish_release: name: Publish release needs: build_AUTO_MAA diff --git a/app/__init__.py b/app/__init__.py index 7bbe76a..403828c 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -33,7 +33,6 @@ from .core import QueueConfig, MaaConfig, MaaUserConfig, Task, TaskManager, Main from .models import MaaManager from .services import Notify, Crypto, System from .ui import AUTO_MAA -from .utils import DownloadManager __all__ = [ "QueueConfig", @@ -47,5 +46,4 @@ __all__ = [ "Crypto", "System", "AUTO_MAA", - "DownloadManager", ] diff --git a/app/core/config.py b/app/core/config.py index 60eac1a..f9b27a9 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -622,7 +622,7 @@ class MaaUserConfig(QConfig): class AppConfig(GlobalConfig): - VERSION = "4.3.6.0" + VERSION = "4.3.7.0" gameid_refreshed = Signal() PASSWORD_refreshed = Signal() diff --git a/app/services/system.py b/app/services/system.py index 32f4491..3ccf18f 100644 --- a/app/services/system.py +++ b/app/services/system.py @@ -26,7 +26,7 @@ v4.3 """ from loguru import logger -from PySide6.QtWidgets import QApplication, QWidget +from PySide6.QtWidgets import QApplication import sys import ctypes import win32gui diff --git a/app/utils/downloader.py b/app/ui/downloader.py similarity index 77% rename from app/utils/downloader.py rename to app/ui/downloader.py index 5daf487..e14343e 100644 --- a/app/utils/downloader.py +++ b/app/ui/downloader.py @@ -25,20 +25,16 @@ v1.2 作者:DLmaster_361 """ -import sys import json import zipfile import requests import subprocess import time import psutil -import win32crypt -import base64 -from packaging import version from functools import partial from pathlib import Path -from PySide6.QtWidgets import QApplication, QDialog, QVBoxLayout +from PySide6.QtWidgets import QDialog, QVBoxLayout from qfluentwidgets import ( ProgressBar, IndeterminateProgressBar, @@ -46,7 +42,7 @@ from qfluentwidgets import ( setTheme, Theme, ) -from PySide6.QtGui import QIcon, QCloseEvent +from PySide6.QtGui import QCloseEvent from PySide6.QtCore import QThread, Signal, QTimer, QEventLoop from typing import List, Dict, Union @@ -237,14 +233,9 @@ class DownloadManager(QDialog): self.version = version self.config = config self.download_path = app_path / "DOWNLOAD_TEMP.zip" # 临时下载文件的路径 - self.version_path = app_path / "resources/version.json" self.download_process_dict: Dict[str, DownloadProcess] = {} self.timer_dict: Dict[str, QTimer] = {} - self.setWindowTitle("AUTO_MAA更新器") - self.setWindowIcon( - QIcon(str(app_path / "resources/icons/AUTO_MAA_Updater.ico")) - ) self.resize(700, 70) setTheme(Theme.AUTO, lazy=True) @@ -539,41 +530,25 @@ class DownloadManager(QDialog): self.zip_extract.start() self.zip_loop.exec() - self.update_info("正在删除已弃用的文件") - if (self.app_path / "changes.json").exists(): - - with (self.app_path / "changes.json").open(mode="r", encoding="utf-8") as f: - info: Dict[str, List[str]] = json.load(f) - - if "deleted" in info: - for file_path in info["deleted"]: - if (self.app_path / file_path).exists(): - (self.app_path / file_path).unlink() - - (self.app_path / "changes.json").unlink() - self.update_info("正在删除临时文件") self.update_progress(0, 0, 0) + if (self.app_path / "changes.json").exists(): + (self.app_path / "changes.json").unlink() if self.download_path.exists(): self.download_path.unlink() - # 主程序更新完成后打开对应程序 - if not self.isInterruptionRequested and self.name == "AUTO_MAA": - subprocess.Popen( - [self.app_path / "AUTO_MAA.exe"], - creationflags=subprocess.CREATE_NEW_PROCESS_GROUP - | subprocess.DETACHED_PROCESS - | subprocess.CREATE_NO_WINDOW, - ) - elif not self.isInterruptionRequested and self.name == "MAA": + # 下载完成后打开对应程序 + if not self.isInterruptionRequested and self.name == "MAA": subprocess.Popen( [self.app_path / "MAA.exe"], creationflags=subprocess.CREATE_NEW_PROCESS_GROUP | subprocess.DETACHED_PROCESS | subprocess.CREATE_NO_WINDOW, ) - - self.update_info(f"{self.name}更新成功!") + if self.name == "AUTO_MAA": + self.update_info(f"即将安装{self.name}") + else: + self.update_info(f"{self.name}下载成功!") self.update_progress(0, 100, 100) self.download_accomplish.emit() @@ -615,142 +590,3 @@ class DownloadManager(QDialog): self.requestInterruption() event.accept() - - -class AUTO_MAA_Downloader(QApplication): - def __init__( - self, app_path: Path, name: str, main_version: list, config: dict - ) -> None: - super().__init__() - - self.main = DownloadManager(app_path, name, main_version, config) - self.main.show() - self.main.run() - - -if __name__ == "__main__": - - # 获取软件自身的路径 - app_path = Path(sys.argv[0]).resolve().parent - - # 从本地版本信息文件获取当前版本信息 - if (app_path / "resources/version.json").exists(): - with (app_path / "resources/version.json").open( - mode="r", encoding="utf-8" - ) as f: - current_version_info = json.load(f) - current_version = list( - map(int, current_version_info["main_version"].split(".")) - ) - else: - current_version = [0, 0, 0, 0] - - # 从本地配置文件获取更新信息 - if (app_path / "config/config.json").exists(): - with (app_path / "config/config.json").open(mode="r", encoding="utf-8") as f: - config = json.load(f) - if "Update" in config: - - if "UpdateType" in config["Update"]: - update_type = config["Update"]["UpdateType"] - else: - update_type = "stable" - if "ProxyUrlList" in config["Update"]: - proxy_list = config["Update"]["ProxyUrlList"] - else: - proxy_list = [] - if "ThreadNumb" in config["Update"]: - thread_numb = config["Update"]["ThreadNumb"] - else: - thread_numb = 8 - if "MirrorChyanCDK" in config["Update"]: - mirrorchyan_CDK = ( - win32crypt.CryptUnprotectData( - base64.b64decode(config["Update"]["MirrorChyanCDK"]), - None, - None, - None, - 0, - )[1].decode("utf-8") - if config["Update"]["MirrorChyanCDK"] - else "" - ) - else: - mirrorchyan_CDK = "" - - else: - update_type = "stable" - proxy_list = [] - thread_numb = 8 - mirrorchyan_CDK = "" - else: - update_type = "stable" - proxy_list = [] - thread_numb = 8 - mirrorchyan_CDK = "" - - # 从远程服务器获取最新版本信息 - for _ in range(3): - try: - response = requests.get( - f"https://mirrorchyan.com/api/resources/AUTO_MAA/latest?user_agent=AutoMaaDownloader¤t_version={version_text(current_version)}&cdk={mirrorchyan_CDK}&channel={update_type}", - timeout=10, - ) - version_info: Dict[str, Union[int, str, Dict[str, str]]] = response.json() - break - except Exception as e: - err = e - time.sleep(0.1) - else: - sys.exit(f"获取版本信息时出错:\n{err}") - - if version_info["code"] == 0: - - if "url" in version_info["data"]: - download_config = { - "mode": "MirrorChyan", - "thread_numb": 1, - "url": version_info["data"]["url"], - } - else: - - download_config = {"mode": "Proxy", "thread_numb": thread_numb} - else: - sys.exit(f"获取版本信息时出错:{version_info["msg"]}") - - remote_version = list( - map( - int, - version_info["data"]["version_name"][1:].replace("-beta", "").split("."), - ) - ) - - if download_config["mode"] == "Proxy": - for _ in range(3): - try: - response = requests.get( - "https://gitee.com/DLmaster_361/AUTO_MAA/raw/server/download_info.json", - timeout=10, - ) - download_info = response.json() - - download_config["proxy_list"] = list( - set(proxy_list + download_info["proxy_list"]) - ) - download_config["download_dict"] = download_info["download_dict"] - break - except Exception as e: - err = e - time.sleep(0.1) - else: - sys.exit(f"获取代理信息时出错:{err}") - - if (app_path / "changes.json").exists(): - (app_path / "changes.json").unlink() - - # 启动更新线程 - if version.parse(version_text(remote_version)) > version.parse( - version_text(current_version) - ): - app = AUTO_MAA_Downloader(app_path, "AUTO_MAA", remote_version, download_config) - sys.exit(app.exec()) diff --git a/app/ui/main_window.py b/app/ui/main_window.py index e3acc55..9a20e48 100644 --- a/app/ui/main_window.py +++ b/app/ui/main_window.py @@ -28,7 +28,6 @@ v4.3 from loguru import logger from PySide6.QtWidgets import QApplication, QSystemTrayIcon from qfluentwidgets import ( - qconfig, Action, SystemTrayMenu, SplashScreen, @@ -182,7 +181,7 @@ class AUTO_MAA(MSFluentWindow): Action( FluentIcon.POWER_BUTTON, "退出主程序", - triggered=lambda: (self.window().close(), QApplication.quit()), + triggered=lambda: System.set_power("KillSelf"), ) ) @@ -247,10 +246,10 @@ class AUTO_MAA(MSFluentWindow): # 清理旧日志 self.clean_old_logs() - # 清理临时更新器 - if (Config.app_path / "AUTO_Updater.active.exe").exists(): + # 清理安装包 + if (Config.app_path / "AUTO_MAA-Setup.exe").exists(): try: - (Config.app_path / "AUTO_Updater.active.exe").unlink() + (Config.app_path / "AUTO_MAA-Setup.exe").unlink() except Exception: pass diff --git a/app/ui/member_manager.py b/app/ui/member_manager.py index 91ecfaa..6f31289 100644 --- a/app/ui/member_manager.py +++ b/app/ui/member_manager.py @@ -58,7 +58,7 @@ import shutil from app.core import Config, MainInfoBar, TaskManager, MaaConfig, MaaUserConfig, Network from app.services import Crypto -from app.utils import DownloadManager +from .downloader import DownloadManager from .Widget import ( LineEditMessageBox, LineEditSettingCard, @@ -326,21 +326,41 @@ class MemberManager(QWidget): ) return None + # 从远程服务器获取应用列表 + Network.set_info( + mode="get", + url="https://gitee.com/DLmaster_361/AUTO_MAA/raw/server/apps_info.json", + ) + Network.start() + Network.loop.exec() + if Network.stutus_code == 200: + apps_info = Network.response_json + else: + logger.warning(f"获取应用列表时出错:{Network.error_message}") + MainInfoBar.push_info_bar( + "warning", + "获取应用列表时出错", + f"网络错误:{Network.stutus_code}", + 5000, + ) + return None + choice = ComboBoxMessageBox( self.window(), "选择一个脚本类型以下载相应脚本", ["选择脚本类型"], - [["MAA", "StarRailAssistant"]], + [list(apps_info.keys())], ) if choice.exec() and choice.input[0].currentIndex() != -1: app_name = choice.input[0].currentText() + app_rid = apps_info[app_name]["rid"] - (Config.app_path / f"script/{app_name}").mkdir(parents=True, exist_ok=True) + (Config.app_path / f"script/{app_rid}").mkdir(parents=True, exist_ok=True) folder = QFileDialog.getExistingDirectory( self, f"选择{app_name}下载目录", - str(Config.app_path / f"script/{app_name}"), + str(Config.app_path / f"script/{app_rid}"), ) if not folder: logger.warning(f"选择{app_name}下载目录时未选择文件夹") @@ -349,16 +369,11 @@ class MemberManager(QWidget): ) return None - if app_name in ["MAA"]: - - url = f"https://mirrorchyan.com/api/resources/{app_name}/latest?user_agent=AutoMaaGui&cdk={Crypto.win_decryptor(Config.get(Config.update_MirrorChyanCDK))}&os=win&arch=x64&channel=stable" - - elif app_name in ["StarRailAssistant"]: - - url = f"https://mirrorchyan.com/api/resources/{app_name}/latest?user_agent=AutoMaaGui&cdk={Crypto.win_decryptor(Config.get(Config.update_MirrorChyanCDK))}&channel=stable" - # 从mirrorc服务器获取最新版本信息 - Network.set_info(mode="get", url=url) + Network.set_info( + mode="get", + url=f"https://mirrorchyan.com/api/resources/{app_rid}/latest?user_agent=AutoMaaGui&cdk={Crypto.win_decryptor(Config.get(Config.update_MirrorChyanCDK))}&os={apps_info[app_name]["os"]}&arch={apps_info[app_name]["arch"]}&channel=stable", + ) Network.start() Network.loop.exec() if Network.stutus_code == 200: @@ -415,7 +430,7 @@ class MemberManager(QWidget): self.downloader = DownloadManager( Path(folder), - app_name, + app_rid, None, { "mode": "MirrorChyan", diff --git a/app/ui/setting.py b/app/ui/setting.py index a3b09a0..904f8e4 100644 --- a/app/ui/setting.py +++ b/app/ui/setting.py @@ -26,7 +26,8 @@ v4.3 """ from loguru import logger -from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout +from PySide6.QtWidgets import QWidget, QVBoxLayout +from PySide6.QtGui import QIcon from PySide6.QtCore import Qt from qfluentwidgets import ( ScrollArea, @@ -50,6 +51,7 @@ from typing import Dict, Union from app.core import Config, MainInfoBar, Network from app.services import Crypto, System, Notify +from .downloader import DownloadManager from .Widget import ( SwitchSettingCard, RangeSettingCard, @@ -378,45 +380,72 @@ class Setting(QWidget): else: all_version_info[key] = value.copy() - version_info = { - "更新总览": f"{main_version_info}\n\n{version_info_markdown(update_version_info)}", - "ALL~版本信息": version_info_markdown(all_version_info), - **{ - version_text(list(map(int, k.split(".")))): version_info_markdown(v) - for k, v in version_info_json.items() - }, - } - # 询问是否开始版本更新 - choice = NoticeMessageBox(self.window(), "版本更新", version_info) + choice = NoticeMessageBox( + self.window(), + "版本更新", + { + "更新总览": f"{main_version_info}\n\n{version_info_markdown(update_version_info)}", + "ALL~版本信息": version_info_markdown(all_version_info), + **{ + version_text( + list(map(int, k.split("."))) + ): version_info_markdown(v) + for k, v in version_info_json.items() + }, + }, + ) if choice.exec(): - with Config.version_path.open(mode="r", encoding="utf-8") as f: - version_info = json.load(f) - version_info["main_version"] = Config.VERSION - with Config.version_path.open(mode="w", encoding="utf-8") as f: - json.dump(version_info, f, ensure_ascii=False, indent=4) - - if (Config.app_path / "AUTO_Updater.exe").exists(): - shutil.copy( - Config.app_path / "AUTO_Updater.exe", - Config.app_path / "AUTO_Updater.active.exe", - ) + if "url" in version_info["data"]: + download_config = { + "mode": "MirrorChyan", + "thread_numb": 1, + "url": version_info["data"]["url"], + } else: - logger.error("更新器文件不存在") - MainInfoBar.push_info_bar( - "error", "更新器不存在", "请手动前往 GitHub 获取最新版本", -1 - ) - return None - subprocess.Popen( - [Config.app_path / "AUTO_Updater.active.exe"], - creationflags=subprocess.CREATE_NEW_PROCESS_GROUP - | subprocess.DETACHED_PROCESS - | subprocess.CREATE_NO_WINDOW, + # 从远程服务器获取代理信息 + Network.set_info( + mode="get", + url="https://gitee.com/DLmaster_361/AUTO_MAA/raw/server/download_info.json", + ) + Network.start() + Network.loop.exec() + if Network.stutus_code == 200: + download_info = Network.response_json + else: + logger.warning(f"获取应用列表时出错:{Network.error_message}") + MainInfoBar.push_info_bar( + "warning", + "获取应用列表时出错", + f"网络错误:{Network.stutus_code}", + 5000, + ) + return None + + download_config = { + "mode": "Proxy", + "thread_numb": Config.get(Config.update_ThreadNumb), + "proxy_list": list( + set( + Config.get(Config.update_ProxyUrlList) + + download_info["proxy_list"] + ) + ), + "download_dict": download_info["download_dict"], + } + + self.downloader = DownloadManager( + Config.app_path, "AUTO_MAA", remote_version, download_config ) - self.window().close() - QApplication.quit() + self.downloader.setWindowTitle("AUTO_MAA更新器") + self.downloader.setWindowIcon( + QIcon(str(Config.app_path / "resources/icons/AUTO_MAA_Updater.ico")) + ) + self.downloader.download_accomplish.connect(self.start_setup) + self.downloader.show() + self.downloader.run() elif ( if_show @@ -437,6 +466,23 @@ class Setting(QWidget): else: MainInfoBar.push_info_bar("success", "更新检查", "已是最新版本~", 3000) + def start_setup(self) -> None: + subprocess.Popen( + [ + Config.app_path / "AUTO_MAA-Setup.exe", + "/SP-", + "/SILENT", + "/NOCANCEL", + "/FORCECLOSEAPPLICATIONS", + "/LANG=Chinese", + f"/DIR={Config.app_path}", + ], + creationflags=subprocess.CREATE_NEW_PROCESS_GROUP + | subprocess.DETACHED_PROCESS + | subprocess.CREATE_NO_WINDOW, + ) + System.set_power("KillSelf") + def show_notice(self, if_show: bool = False, if_first: bool = False) -> None: """显示公告""" diff --git a/app/utils/AUTO_MAA.iss b/app/utils/AUTO_MAA.iss index 0fa38ff..ebb2710 100644 --- a/app/utils/AUTO_MAA.iss +++ b/app/utils/AUTO_MAA.iss @@ -51,7 +51,6 @@ Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{ Source: "{#MyAppPath}\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion Source: "{#MyAppPath}\app\*"; DestDir: "{app}\app"; Flags: ignoreversion recursesubdirs createallsubdirs Source: "{#MyAppPath}\resources\*"; DestDir: "{app}\resources"; Flags: ignoreversion recursesubdirs createallsubdirs -Source: "{#MyAppPath}\AUTO_Updater.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "{#MyAppPath}\main.py"; DestDir: "{app}"; Flags: ignoreversion Source: "{#MyAppPath}\requirements.txt"; DestDir: "{app}"; Flags: ignoreversion Source: "{#MyAppPath}\README.md"; DestDir: "{app}"; Flags: ignoreversion @@ -63,7 +62,7 @@ Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon [Run] -Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent +Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall [Code] var diff --git a/app/utils/__init__.py b/app/utils/__init__.py index 3f85bc5..917751c 100644 --- a/app/utils/__init__.py +++ b/app/utils/__init__.py @@ -29,6 +29,4 @@ __version__ = "4.2.0" __author__ = "DLmaster361 " __license__ = "GPL-3.0 license" -from .downloader import DownloadManager - -__all__ = ["DownloadManager"] +__all__ = [] diff --git a/app/utils/package.py b/app/utils/package.py index ba5037a..101808e 100644 --- a/app/utils/package.py +++ b/app/utils/package.py @@ -86,35 +86,10 @@ if __name__ == "__main__": print("AUTO_MAA main program packaging completed !") - print("Packaging AUTO_MAA update program ...") - - shutil.copy(root_path / "app/utils/downloader.py", root_path) - os.system( - "powershell -Command python -m nuitka --standalone --onefile --mingw64" - " --enable-plugins=pyside6 --windows-console-mode=disable" - " --onefile-tempdir-spec='{TEMP}\\AUTO_MAA_Updater'" - " --windows-icon-from-ico=resources\\icons\\AUTO_MAA_Updater.ico" - " --company-name='AUTO_MAA Team' --product-name=AUTO_MAA" - f" --file-version={version["updater_version"]}" - f" --product-version={version["main_version"]}" - " --file-description='AUTO_MAA Component'" - " --copyright='Copyright © 2024-2025 DLmaster361'" - " --assume-yes-for-downloads --output-filename=AUTO_Updater" - " --remove-output downloader.py" - ) - (root_path / "downloader.py").unlink() - - print("AUTO_MAA update program packaging completed !") + print("start to create setup program ...") (root_path / "AUTO_MAA").mkdir(parents=True, exist_ok=True) - - print("Start to move AUTO_MAA program ...") - shutil.move(root_path / "AUTO_MAA.exe", root_path / "AUTO_MAA/") - shutil.move(root_path / "AUTO_Updater.exe", root_path / "AUTO_MAA/") - - print("Start to copy rescourses ...") - shutil.copytree(root_path / "app", root_path / "AUTO_MAA/app") shutil.copytree(root_path / "resources", root_path / "AUTO_MAA/resources") shutil.copy(root_path / "main.py", root_path / "AUTO_MAA/") @@ -122,7 +97,25 @@ if __name__ == "__main__": shutil.copy(root_path / "README.md", root_path / "AUTO_MAA/") shutil.copy(root_path / "LICENSE", root_path / "AUTO_MAA/") - print("Start to compress ...") + with (root_path / "app/utils/AUTO_MAA.iss").open(mode="r", encoding="utf-8") as f: + iss = f.read() + iss = ( + iss.replace( + '#define MyAppVersion ""', + f'#define MyAppVersion "{version["main_version"]}"', + ) + .replace( + '#define MyAppPath ""', f'#define MyAppPath "{root_path / "AUTO_MAA"}"' + ) + .replace('#define OutputDir ""', f'#define OutputDir "{root_path}"') + ) + with (root_path / "AUTO_MAA.iss").open(mode="w", encoding="utf-8") as f: + f.write(iss) + + os.system(f'ISCC "{root_path / "AUTO_MAA.iss"}"') + + (root_path / "AUTO_MAA_Setup").mkdir(parents=True, exist_ok=True) + shutil.move(root_path / "AUTO_MAA-Setup.exe", root_path / "AUTO_MAA_Setup") shutil.make_archive( base_name=root_path / f"AUTO_MAA_{version_text(main_version_numb)}", @@ -130,9 +123,12 @@ if __name__ == "__main__": root_dir=root_path / "AUTO_MAA", base_dir=".", ) - shutil.rmtree(root_path / "AUTO_MAA") - print("compress completed !") + print("setup program created !") + + (root_path / "AUTO_MAA.iss").unlink(missing_ok=True) + shutil.rmtree(root_path / "AUTO_MAA") + shutil.rmtree(root_path / "AUTO_MAA_Setup") all_version_info = {} for v_i in version["version_info"].values(): @@ -146,20 +142,3 @@ if __name__ == "__main__": f"{version_text(main_version_numb)}\n{version_text(updater_version_numb)}\n\n{version_info_markdown(all_version_info)}", encoding="utf-8", ) - - with (root_path / "app/utils/AUTO_MAA.iss").open(mode="r", encoding="utf-8") as f: - iss = f.read() - - iss = ( - iss.replace( - '#define MyAppVersion ""', - f'#define MyAppVersion "{version["main_version"]}"', - ) - .replace( - '#define MyAppPath ""', f'#define MyAppPath "{root_path / "AUTO_MAA"}"' - ) - .replace('#define OutputDir ""', f'#define OutputDir "{root_path}"') - ) - - with (root_path / "AUTO_MAA.iss").open(mode="w", encoding="utf-8") as f: - f.write(iss) diff --git a/resources/version.json b/resources/version.json index 4b1a089..d786155 100644 --- a/resources/version.json +++ b/resources/version.json @@ -1,61 +1,14 @@ { - "main_version": "4.3.6.0", + "main_version": "4.3.7.0", "updater_version": "1.0.0.0", - "announcement": "\n## 新增功能\n- 屏蔽MuMu模拟器开屏广告功能上线\n- 更新器支持多线程下载\n- 添加强制关闭ADB与模拟器等增强任务项\n## 修复BUG\n- 修复统计信息HTML模板公招匹配错误\n- 修复密码显示按钮动画异常\n- 修复`检测到MAA未能实际执行任务`报错被异常屏蔽\n- 修复MAA超时判定异常失效\n## 程序优化\n- 关机等电源操作添加100s倒计时\n- 人工排查弹窗方法优化\n- 人工排查时自动屏蔽静默操作\n- 公告样式优化", "version_info": { - "4.3.6.0": { + "4.3.7.0": { "新增功能": [ - "适配MAA连战次数`AUTO`模式" - ] - }, - "4.3.6.5": { - "新增功能": [ - "release中添加安装程序" - ] - }, - "4.3.6.4": { - "修复BUG": [ - "修复详细模式下非定时自定义基建无法正常换班的问题" - ] - }, - "4.3.6.3": { - "新增功能": [ - "下载器仅支持调用Mirror酱" - ], - "修复BUG": [ - "修复Mirror酱更新检查报错不显示详细信息的问题" - ] - }, - "4.3.6.2": { - "新增功能": [ - "新增`无人值守模式`" - ], - "修复BUG": [ - "修复软件窗口最大化异常问题", - "修复异常操作导致窗口离开屏幕后难以复原的问题", - "修正剩余理智关卡文案", - "修复隐藏到托盘时,托盘无法退出主程序的问题", - "修复Server酱网络异常导致的卡死问题" + "下载器支持完整mirrorc列表" ], "程序优化": [ - "主窗口显示版本号" - ] - }, - "4.3.6.1": { - "新增功能": [ - "单次自动代理任务中,已完成的子任务在重复执行时不再启用" + "重构更新逻辑,去除独立更新器" ] } - }, - "proxy_list": [ - "https://gitproxy.click/", - "https://cdn.moran233.xyz/", - "https://gh.llkk.cc/", - "https://github.akams.cn/", - "https://www.ghproxy.cn/", - "https://ghfast.top/" - ], - "download_dict": { - "官方下载站-jp": "https://jp-download.fearr.xyz/AUTO_MAA/" } } \ No newline at end of file