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

Windows构建服务器上Arduino CLI无法获取Documents文件夹的解决咨询

解决方案

方法1:手动指定Arduino CLI的数据目录(替代Documents文件夹)

Arduino CLI允许通过命令行参数或环境变量自定义数据存储目录,无需依赖用户的Documents文件夹,这是最直接的解决方式:

  • 命令行参数指定:执行Arduino CLI命令时添加--data-dir参数,指定一个系统用户有权限访问的存在目录。例如:

    # 先创建目标目录(如果不存在)
    md D:\ArduinoCLI_Data
    # 安装ESP32核心库时指定数据目录
    arduino-cli core install esp32:esp32 --data-dir "D:\ArduinoCLI_Data"
    
  • 环境变量指定:在GitHub Action的YAML配置中设置ARDUINO_DATA_DIR环境变量,后续所有Arduino CLI命令都会自动使用该目录:

    steps:
      - name: Prepare Arduino Data Directory
        run: |
          md D:\ArduinoCLI_Data
          echo "ARDUINO_DATA_DIR=D:\ArduinoCLI_Data" | Out-File -FilePath $env:GITHUB_ENV -Append
      - name: Install ESP32 Core Library
        run: arduino-cli core install esp32:esp32
    

注意:确保指定的目录对nt authority/system用户有读写权限,系统盘下的自定义目录默认具备该权限。

方法2:切换到本地管理员用户运行Arduino CLI

如果必须沿用原有Documents文件夹逻辑,可以在GitHub Action中通过PowerShell切换到本地管理员身份执行命令:

  1. 将本地管理员的密码存储到GitHub Secrets中(命名为ADMIN_PASSWORD)
  2. 在YAML中添加PowerShell脚本实现用户切换:
    steps:
      - name: Run Arduino CLI as Local Admin
        run: |
          $username = "你的本地管理员用户名"
          $password = ConvertTo-SecureString "${{ secrets.ADMIN_PASSWORD }}" -AsPlainText -Force
          $credential = New-Object System.Management.Automation.PSCredential ($username, $password)
          Start-Process -FilePath "arduino-cli.exe" -ArgumentList "core install esp32:esp32" -Credential $credential -Wait -NoNewWindow
    

此方式需确保管理员用户的Documents文件夹已存在,且GitHub Action能正确加载凭证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 15:21:13