ArcGIS Pro ATBX 工具箱加密
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_0d6e251a/arcgis-pro-atbx-encryption-skill。
技能介绍
要解决什么问题
发布 ArcGIS Pro 自定义工具箱时,.atbx 里内嵌的 Script Tool 往往带着明文 tool.script.execute.py。只要别人解压或浏览工具箱结构,源码就会被直接看到。GUI 里逐个点加密既慢,又容易漏掉 validate 脚本或搞错密码策略。本技能把流程锁在 .atbx 专用管线:不引导你去改 .pyt、不默认走 arcpy.EncryptPYT,也不靠「点界面点到手酸」完成批量发布。
技能如何工作
在 Windows + ArcGIS Pro 自带 Python 环境下,通过捆绑脚本调用 AfCore.dll 原生加密入口,批量处理内嵌脚本:
scripts/batch_encrypt_atbx.py:对tool.script.execute.py加密,可按需包含tool.script.validate.pyscripts/inspect_atbx.py:查看单个.atbx或对比明文/加密归档结构scripts/validate_atbx_runtime.py:用 ArcPy 导入加密工具箱、列出工具,可选冒烟执行scripts/doctor_atbx_environment.py:检查 Python、arcpy、AfCore 导出是否就绪
典型顺序是:确认输入全是 .atbx(或含 .atbx 的文件夹)→ 环境不明先跑 doctor → 结构不明先 inspect → 按你的口令策略加密 → 再 inspect + ArcPy 验证 → 汇报输出路径、口令来源方式、跳过项与残留风险。
口令规则写得很硬:你明确给了口令就用你的;没给则用 --generate-password --no-password-prompt 在内存里生成高熵口令,不打印、不存储、输出里也不可恢复——这是源码保护发布,不是密钥管理系统。
适用边界与注意点
- 工具若只 外链
.py、没有内嵌tool.script.execute.py,需要先走发布流程把脚本嵌进.atbx,否则本技能无法替你「凭空加密」。 - 加密后
pw必须留在tool.content,不要手删或手改;ArcGIS Pro 靠它识别加密载荷。 - 已有
pw的工具箱默认跳过;要重加密需显式--force。覆盖发布物要用户明确接受才用--overwrite;原地替换建议--in-place并保留备份。 - 若报告里
password_source为generated:undisclosed,不要声称能找回口令——工具仍可运行,但带口令的源码查看/编辑路径被刻意关闭。 - 成功标准包括:加密脚本出现 ArcGIS 识别的密文头(如
00022e68)、ArcPy 能导入、代表性工具在安全参数下可跑,且发布包中排除未加密源码与备份。
使用场景
- 对外发布含 Script Tool 的自定义 `.atbx` 前,要在 Windows 上批量加密内嵌 `execute` 脚本且不转成 `.pyt`。
- 交付文件夹里有多份工具箱,需按统一口令或自动生成不可披露口令,批量产出加密副本并排除明文源码。
- 加密后要做结构对比与 ArcPy 导入,确认工具列表可见、代表性工具在安全参数下仍能冒烟执行。
- 首次在本机跑加密流水线前,用 doctor 检查 ArcGIS Pro Python、`arcpy` 与 AfCore.dll 导出是否齐全。
适合人员
- 维护 ArcGIS Pro 地理处理工具箱、向甲方或公众分发前必须隐藏内嵌 Python 逻辑的 GIS 开发工程师
- 负责局内工具「发布包」目录,要整夹加密多份 `.atbx`、保留备份并写清跳过/已加密项的 GIS 运维或数据管理人员
- 在 Windows 发布流水线上集成 `.atbx` 加密,需区分用户指定口令与 `generated:undisclosed` 策略的 DevOps 或 GIS 平台工程师
- 加密后要做验收的同事:需要用 inspect 与 `validate_atbx_runtime` 对照成功标准(`pw`、密文头、ArcPy 可导入)的 QA 或技术支持