packagesbuild是否支持读取.pkgproj文件中定义的环境变量?
问题原因
packagesbuild不会自动继承当前终端Shell会话中export的环境变量,它有独立的构建变量传递规则,直接在Shell中导出变量无法被pkgproj模板识别。
解决方案
你可以通过packagesbuild自带的--build-variable参数显式传递自定义变量,不需要提前export环境变量,直接执行如下构建命令即可:
packagesbuild --build-variable APP_PATH='/Users/sachin/Documents/Test/Client/Example.app' example.pkgproj
如果需要批量生成不同应用的安装包,可以封装为Shell脚本实现复用,示例脚本逻辑如下:
# 定义需要打包的应用路径列表 APP_PATHS=( "/Users/sachin/Documents/Test/Client/Example.app" "/Users/sachin/Documents/Test/Client/Example2.app" ) for path in "${APP_PATHS[@]}" do # 提取应用名作为输出包名,可根据自身需求调整 app_name=$(basename "$path" .app) packagesbuild --build-variable APP_PATH="$path" --output "./${app_name}.pkg" example.pkgproj done
注意事项
- 你当前pkgproj模板中
${APP_PATH}的变量引用格式完全正确,不需要修改模板内容 - 传递的路径建议使用绝对路径,避免相对路径导致的文件找不到问题
- 确保运行构建命令的用户对传递的APP_PATH路径有读取权限
内容的提问来源于stack exchange,提问作者Sachin Srivastava
相关产品推荐
相关产品推荐

