You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过AppVeyor将x86和x64产物部署至GitHub Releases?

解决AppVeyor构建x86/x64版本时部署到GitHub Releases的覆盖问题

我明白你遇到的问题了——AppVeyor会为x86和x64平台分别启动独立的构建任务,每个任务只会生成对应平台的可执行文件,然后各自执行部署步骤。因为你设置了force_update: true,后执行的任务会直接覆盖GitHub Releases里的内容,最终只留下最后一个任务上传的文件。

下面是两种可行的解决方案,帮你把两个平台的可执行文件一起部署到GitHub Releases:

方法一:使用Final Job统一部署(推荐)

这种方法会创建一个专门的"最终任务",等待x86和x64的构建任务全部完成后,一次性把两个平台的可执行文件上传到GitHub Releases,完全避免覆盖问题。

修改你的appveyor.yml如下:

version: '{build}'
image: Visual Studio 2017
configuration: Release

# 定义构建矩阵,包含x86、x64构建任务,以及一个用于部署的final任务
matrix:
  include:
    - platform: x86
    - platform: x64
    - platform: final
      build: off  # 这个任务不执行构建
      depends_on:
        - x86  # 依赖x86任务成功完成
        - x64  # 依赖x64任务成功完成

# 只有非final任务才执行构建
build:
  verbosity: minimal
  condition: platform != final

# 为每个平台生成对应的artifact,添加条件避免找不到文件的警告
artifacts:
  - path: Release\pathfinding.exe
    name: pathfinding-x86.exe
    condition: platform == x86
  - path: x64\Release\pathfinding.exe
    name: pathfinding-x64.exe
    condition: platform == x64

# 只在final任务中执行部署,一次性上传两个artifact
deploy:
  - provider: GitHub
    auth_token: secure: the-token-is-hidden-on-purpose
    force_update: true
    artifact: pathfinding-x86.exe, pathfinding-x64.exe  # 指定要上传的所有文件
    on:
      APPVEYOR_REPO_TAG: true
      platform: final  # 限制仅在final任务执行部署

方法二:调整部署策略,关闭强制更新(不推荐)

如果你不想添加额外任务,可以关闭force_update: true,让每个任务上传的文件追加到Releases中,而不是覆盖。但这种方法有个缺点:如果后续重新构建,Releases里会积累重复文件,需要手动清理。

修改deploy部分的配置:

deploy:
  - provider: GitHub
    auth_token: secure: the-token-is-hidden-on-purpose
    force_update: false  # 关闭强制更新,改为追加文件
    on:
      APPVEYOR_REPO_TAG: true

不过还是推荐第一种方法,它更清晰、可控,也不会产生冗余文件。

内容的提问来源于stack exchange,提问作者user7853410

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 09:00:46