March7thAssistant icon indicating copy to clipboard operation
March7thAssistant copied to clipboard

[Feat]: 关于小助手更新和崩铁版本更新

Open StarFall-86 opened this issue 8 months ago • 9 comments

请确保您已阅读以上注意事项,并勾选下方的确认框。

  • [x] 我确定这是一个从未被提出和实现过的功能。
  • [x] 我已经在 Issue Tracker 以及 Pull Request 中找过我要提出的功能,没有找到相同功能的 Issue 和 PR。
  • [x] 我已知晓并同意,此处仅用于建议新功能。若这个 Issue 是关于其他非主题的问题,则我的 Issue 可能会被无条件自动关闭/锁定。
  • [x] 我已知晓并同意,如果我不按照模板提供的指示进行填写,则我的 Issue 可能会被无条件删除。

需要添加的功能内容

关于三月七小助手的版本更新:当前的三月七小助手是:打开完整运行,检测更新,发送信息,然后不更新开始执行任务 期望(举例):打开完整运行,检测更新,如果存在更新则尝试更新,失败重试3次,如果失败超过三次或者更新成功就运行完整运行 另外,关于崩铁的版本更新,有些小助手的功能会在更新后崩溃,然而小助手的更新通常要等待好几天。比如3.0新差分宇宙更新后的饰品提取,这个时候希望能增加一些容错机制。如任务执行失败后尝试使用其他方式刷体力、完成每日任务,或者跳过刷体力步骤尽可能多的完成每日任务,而不是发个报错信息然后摆烂。 另外我写了一个自动更新崩铁版本的小脚本,毕竟只是一个啥都不懂的高中生写出来的东西放在github估计没眼看,但是还是希望类似的功能能够加入三月七小助手,也希望我写的算法能够被部分采纳。对于我们这些住校生来说,每42天的周三版本更新基本上大概率会导致3-10天的脚本崩溃,这个功能还是蛮刚需的。 StarRail_Updater.txt

StarFall-86 avatar Apr 04 '25 03:04 StarFall-86

你需要了解下 https://github.com/Scighost/Starward

liuziheng20091106 avatar Apr 05 '25 14:04 liuziheng20091106

关于三月七小助手的版本更新:当前的三月七小助手是:打开完整运行,检测更新,发送信息,然后不更新开始执行任务

你需要了解小助手目录下的March7th Updater.exe

补充内容:如果想在bat脚本中自动向命令发送回车,你可以使用<nul,如

pause < nul

但是!!三月七更新助手奇葩的逻辑(复制自己到temp目录然后重启自己!而且判断临时目录的逻辑也一言难尽)和更抽象的结束阶段......

temp_path = os.path.abspath("./temp")
    file_path = sys.argv[0]
    destination_path = os.path.join(temp_path, os.path.basename(file_path))

    if file_path != destination_path:
        if os.path.exists(temp_path):
            shutil.rmtree(temp_path)
        if os.path.exists("./Update.exe"):
            os.remove("./Update.exe")
        os.makedirs(temp_path, exist_ok=True)
        shutil.copy(file_path, destination_path)
        args = [destination_path] + sys.argv[1:]
        subprocess.Popen(args, creationflags=subprocess.DETACHED_PROCESS)
        sys.exit(0)

#还有...
input("按回车键退出并打开软件")
if os.system(f'cmd /c start "" "{os.path.abspath("./March7th Launcher.exe")}"'):
        subprocess.Popen(os.path.abspath("./March7th Launcher.exe"))

简直是在侮辱自动化......

好吧我的用词可能有些不当,但是我决定写一个更适合自动化的参数来优化其逻辑。等我PR。

liuziheng20091106 avatar Apr 05 '25 14:04 liuziheng20091106

自动更新崩铁版本的代码在Starward里有完美的实例,但是由于其代码时C#且没有封装传参调用,暂时没有啥好的办法使用。

你写的更新脚本很......,兼容性不必多说,但是作为住校生能够接触电脑时间比我们少多了,可以理解。

我自学过一些C#,我会尝试把StarWard里的更新功能单独拎出来编译,但是可能得到中考结束后了

liuziheng20091106 avatar Apr 05 '25 14:04 liuziheng20091106

https://github.com/liuziheng20091106/March7thAssistant 在这里看我的进度

liuziheng20091106 avatar Apr 05 '25 15:04 liuziheng20091106

OKOK咱也是PR了 目前小助手更新解决了......?(似乎不完全解决了,我再想想怎么进行进程通讯吧) #534

liuziheng20091106 avatar Apr 06 '25 05:04 liuziheng20091106

OKOK咱也是PR了 目前小助手更新解决了......?(似乎不完全解决了,我再想想怎么进行进程通讯吧) #534

行,试一下你的版本。我看这边好像也有几个新的commit了

wizardt avatar Apr 15 '25 03:04 wizardt

OKOK咱也是PR了 目前小助手更新解决了......?(似乎不完全解决了,我再想想怎么进行进程通讯吧) #534

不行,不会用。我这里的原项目是编译后的March7th Launcher.exe,无法把你写的东西揉进去,不会弄

wizardt avatar Apr 15 '25 04:04 wizardt

OKOK咱也是PR了 目前小助手更新解决了......?(似乎不完全解决了,我再想想怎么进行进程通讯吧) #534

不行,不会用。我这里的原项目是编译后的March7th Launcher.exe,无法把你写的东西揉进去,不会弄

请你不要慌张,我来改一改就行。

liuziheng20091106 avatar Apr 15 '25 10:04 liuziheng20091106

OKOK咱也是PR了 目前小助手更新解决了......?(似乎不完全解决了,我再想想怎么进行进程通讯吧) #534

不行,不会用。我这里的原项目是编译后的March7th Launcher.exe,无法把你写的东西揉进去,不会弄

新commit好像不冲突啊,不需要修改吧。不过你的是编译后的exe那肯定不行啊,你得自己重新编译啊

步骤2:设置Python环境

  - name: Set up python
    uses: actions/setup-python@v4
    with:
      python-version: "3.12"
      cache: "pip"

  # 步骤3:安装依赖
  - name: Install dependencies
    run: |
      python -m pip install --upgrade pip
      pip install -r requirements.txt pyinstaller

  # 步骤4:生成程序
  - name: Generate program
    run: |
      pyinstaller -D --distpath .\dist\ -i .\assets\logo\Terminal.ico --contents-directory libraries --exclude-module PyQt5 --uac-admin -n "March7th Assistant" main.py -y
      pyinstaller -D --distpath .\dist\ -i .\assets\logo\March7th.ico --contents-directory libraries --uac-admin -n "March7th Launcher" app.py -y -w
      pyinstaller -F --distpath .\dist\March7thAssistant\ -i .\assets\logo\Updater.ico -n "March7th Updater" updater.py -y

  # 步骤5:移动资源到dist目录
  - name: Move assets to dist directory
    run: |
      Copy-Item -Path ".\dist\March7th Assistant\*" -Destination ".\dist\March7thAssistant\" -Recurse -Force
      Copy-Item -Path ".\dist\March7th Launcher\*" -Destination ".\dist\March7thAssistant\" -Recurse -Force
      Copy-Item -Path ".\assets\" -Destination ".\dist\March7thAssistant\assets\" -Recurse -Force
      Copy-Item -Path ".\README.md" -Destination ".\dist\March7thAssistant\" -Force

  # 步骤6:创建压缩包
  - name: Create archive
    if: startsWith(github.ref, 'refs/tags/')
    run: |
      Rename-Item -Path .\dist\March7thAssistant -NewName March7thAssistant_${{ github.ref_name }}
      # Compress-Archive -Path .\dist\March7thAssistant_${{ github.ref_name }}\ -DestinationPath .\dist\March7thAssistant_${{ github.ref_name }}.zip -Force
      .\assets\binary\7za.exe a -tzip .\dist\March7thAssistant_${{ github.ref_name }}.zip .\dist\March7thAssistant_${{ github.ref_name }}\
      .\assets\binary\7za.exe a -t7z .\dist\March7thAssistant_${{ github.ref_name }}.7z .\dist\March7thAssistant_${{ github.ref_name }}\

  # 步骤7:移动第三方库到dist目录
  - name: Move 3rdparty to dist directory
    if: startsWith(github.ref, 'refs/tags/')
    run: |
      python build.py github-actions
      Copy-Item -Path .\3rdparty\ -Destination .\dist\March7thAssistant_${{ github.ref_name }}\3rdparty\ -Recurse -Force
      Rename-Item -Path .\dist\March7thAssistant_${{ github.ref_name }} -NewName March7thAssistant_${{ github.ref_name }}_full

  # 步骤8:创建完整的压缩包
  - name: Create full zip archive
    if: startsWith(github.ref, 'refs/tags/')
    run: |
      # Compress-Archive -Path .\dist\March7thAssistant_${{ github.ref_name }}_full\ -DestinationPath .\dist\March7thAssistant_${{ github.ref_name }}_full.zip -Force
      .\assets\binary\7za.exe a -tzip .\dist\March7thAssistant_${{ github.ref_name }}_full.zip .\dist\March7thAssistant_${{ github.ref_name }}_full\
      .\assets\binary\7za.exe a -t7z .\dist\March7thAssistant_${{ github.ref_name }}_full.7z .\dist\March7thAssistant_${{ github.ref_name }}_full\

liuziheng20091106 avatar Apr 17 '25 13:04 liuziheng20091106