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

Delphi中EnvOptions.proj丢失iOS密钥时,如何用MSBuild生成IPA?

问题描述

我尝试在Delphi中使用MSBuild自动化创建iOS IPA文件,使用的构建命令如下:

MSBuild "C:\MyProject\Source\MyProject.dproj" /p:Config=Release /p:Platform=iOSDevice64 /t:Build;Deploy /verbosity:minimal

但遇到问题:当我打开Delphi并以Release模式编译非iOS项目时,IDE会自动更新位于C:\Users\me\AppData\Roaming\Embarcadero\BDS\23.0\EnvOptions.proj的文件,移除其中的以下关键iOS配置密钥:

<ENV_PF_DevAppStore/>
<ENV_PF_MobileProvisionAppStore/>
<ENV_PF_MobileProvisionPathAppStore/>
<ENV_PF_DevTeamIdAppStore/>
<ENV_PF_AppIdentifierAppStore/>
<ENV_PF_KeyChainAccessAppStore/>
<ENV_PF_EntitlementExtraKeyValuesAppStore/>

这导致执行MSBuild命令构建部署iOS应用时因缺少这些密钥而失败。请问如何在Delphi中通过MSBuild创建iOS IPA,避免这些关键密钥被移除?是否有办法阻止Delphi编译非iOS项目时删除这些密钥,或在执行MSBuild前自动恢复它们?

解决方案

方法1:直接在MSBuild命令中传入iOS配置参数

绕过EnvOptions.proj的依赖,把所有需要的iOS配置直接作为MSBuild的命令行参数传递,完全不受IDE修改配置文件的影响。示例命令如下:

MSBuild "C:\MyProject\Source\MyProject.dproj" /p:Config=Release /p:Platform=iOSDevice64 /p:ENV_PF_DevAppStore=你的配置值 /p:ENV_PF_MobileProvisionAppStore=你的描述文件名称 /p:ENV_PF_MobileProvisionPathAppStore=你的描述文件完整路径 /p:ENV_PF_DevTeamIdAppStore=你的开发者团队ID /p:ENV_PF_AppIdentifierAppStore=你的AppID标识 /p:ENV_PF_KeyChainAccessAppStore=你的钥匙串访问配置 /p:ENV_PF_EntitlementExtraKeyValuesAppStore=额外权限键值配置 /t:Build;Deploy /verbosity:minimal

方法2:备份并自动恢复EnvOptions.proj配置

  1. 手动编辑EnvOptions.proj,添加好所有需要的iOS配置密钥,然后在同一目录下创建备份文件(比如命名为EnvOptions.proj.backup)。
  2. 在执行MSBuild命令前,通过脚本先恢复备份配置:
    • 批处理脚本示例:
      copy "C:\Users\me\AppData\Roaming\Embarcadero\BDS\23.0\EnvOptions.proj.backup" "C:\Users\me\AppData\Roaming\Embarcadero\BDS\23.0\EnvOptions.proj" /Y
      MSBuild "C:\MyProject\Source\MyProject.dproj" /p:Config=Release /p:Platform=iOSDevice64 /t:Build;Deploy /verbosity:minimal
      
    • PowerShell脚本示例:
      Copy-Item -Path "C:\Users\me\AppData\Roaming\Embarcadero\BDS\23.0\EnvOptions.proj.backup" -Destination "C:\Users\me\AppData\Roaming\Embarcadero\BDS\23.0\EnvOptions.proj" -Force
      & MSBuild "C:\MyProject\Source\MyProject.dproj" /p:Config=Release /p:Platform=iOSDevice64 /t:Build;Deploy /verbosity:minimal
      
  3. 注意:执行脚本时需确保IDE未锁定EnvOptions.proj文件,建议在IDE关闭状态下运行构建脚本。

方法3:调整IDE配置避免自动清理

打开Delphi IDE,依次进入工具 -> 选项 -> 跨平台 -> iOS,确认所有AppStore相关配置项已正确填写并保存。部分Delphi版本带有“自动清理未使用平台配置”的选项,可尝试关闭该功能;若找不到对应选项,可尝试编译非iOS项目时使用Debug模式,看是否会触发配置清理行为。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 10:23:22