零基础的 PhotoShop CEP 6 开发教程 「 9 」签名打包与 ZXPSignCmd

《零基础的 PhotoShop CEP 6 开发教程》系列目录

「 0 」目录
「 1 」配置开发环境
「 2 」CEP 文件结构
「 3 」CEP 的运行机制
「 4 」Hello World !
「 5 」事件(EVENTS)
「 6 」调用 JSX 并传递信息
「 7 」UI - HTML 开发的一些细节
「 8 」API - 文件读写与二进制数据
「 9 」签名打包与 ZXPSignCmd
「 X 」CEP 更新到 6.1版了


这次来说说,CEP 扩展打包发布相关的事。

CEP 扩展必须有签名才能运行

CEP 扩展必须有签名才能运行,而所谓签名是验证扩展文件是否与签名时一致的手段,能保证你的扩展不被篡改和识别扩展作者。所以你会发现修改了别人的扩展插件后,扩展就无法运行了。
不过在扩展开发者模式下, PhotoShop 会无视签名,关于打开发者模式,在 「 1 」配置开发环境 一文中介绍了。
这里提供 2 个 .reg 文件,在 Windows 下双击就能方便的开关开发者模式:
CEP 调试模式关闭.reg , CEP 调试模式打开.reg

签名方法

签名分为和自签名证书(self-signed certificates)或者商业签名证书(commercial certificates),
商业签名可以(也仅可以)在下列数字签名提供商中购买:

  • Chosen Security
  • Thawte
  • Globalsign
  • Verisign
  • Comodo
  • Godaddy

商业证书在使用 Adobe Extension Manager 安装时不会有如下警告:


零基础的 PhotoShop CEP 6 开发教程 「 9 」签名打包与 ZXPSignCmd_第1张图片
自签名证书警告

不过在 CC 2015 之后 Adobe Extension Manager 已经被移除了(Adobe 现在想让用户都从它的 Adobe Add-Ons 市场上购买、下载插件)

不用付钱我们也可以使用自签名证书,自签名证书可以使用 ZXPSignCmd 创建。

ZXPSignCmd

零基础的 PhotoShop CEP 6 开发教程 「 9 」签名打包与 ZXPSignCmd_第2张图片
ZXPSignCmd

ZXPSignCmd 是 Adobe 官方发布的签名与打包的命令行工具,有 Windows 和 OSX 2 个平台的版本。这里先介绍使用 ZXPSignCmd 创建证书和打包的方法,如果觉得命令行工具麻烦,可以使用我制作的 GUI 版本,后面会介绍。

创建证书

ZXPSignCmd -selfSignedCert      
ZXPSignCmd -selfSignedCert <国家代码> <地区> <组织名> <证书所有者名称> <证书密码> <证书名.p12>

例子:

ZXPSignCmd -selfSignedCert CN Changsha nullice.com nullice 123456 我的证书.p12>

签名并打包

ZXPSignCmd -sign     -tsa 
ZXPSignCmd -sign <要打包的项目目录> <输出文件路径> <证书路径> <证书密码> -tsa <时间戳服务地址>

其中 -tsa <时间戳服务地址> 不需要可以省略。

ZXPSignCmd  -sign  "PS.fonTags\fonTags"  "PS.fonTags\我的扩展.zxp"  "我的证书.p12"  "123456" 

要注意的是这里输出文件路径如果已经存在了一个文件的话(比如曾经打包的),ZXPSignCmd 是不会自己覆盖它的,需要自己手动删除。

打包后输出的文件是 ZIP 格式的,可以用 ZIP 解压缩工具解压。

ZXP WinGUI

在 Windows 下除了直接使用 ZXPSignCmd ,还可以使用有图形界面的 ZXP WinGUI,注意这不是 Adobe 官方的,只是我自己制作的。是否使用请谨慎判断。
开发用的工具能从官方渠道获取的就尽量用官方的,这不仅仅是为了自己的安全也是为了你开发软件的用户安全负责,CEP 的能调用的本地接口很多,如果被置入恶意代码的话很危险,出现像 XcodeGhost 一样的事件就不好了。

使用方法
  • 1 创建证书


    零基础的 PhotoShop CEP 6 开发教程 「 9 」签名打包与 ZXPSignCmd_第3张图片
    1 创建证书
  • 2 打包


    零基础的 PhotoShop CEP 6 开发教程 「 9 」签名打包与 ZXPSignCmd_第4张图片
    2 打包

ZXP WinGUI 实际只是直接调用 ZXPSignCmd ,不过除了图形界面以为还有这些方便使用的功能:

  • 自动清除过期的生成文件(覆盖)
  • 拖放文件夹输入项目目录
  • 生成打包 ZXP 的批处理

其中生成打包 ZXP 的批处理,可以在填写配置后生成一个 .bat 批处理文件,以后执行这个批处理就可以打包了


批处理

另外如果你喜欢用 gulp 的话,可以看看这篇: Automate ZXP Packaging with Gulp.js

注意

打包后插件目录中文件就不可以修改或者删减了,否则都会使签名验证失败。
这意味着你的扩展不能在插件目录中存储用户数据或者下载内容。
要存储这些扩展运行中产生的数据,请存储到类似 cs.getSystemPath(SystemPath.USER_DATA)的系统目录中去(详见「 8 」API - 文件读写与二进制数据一文的文件路径部分),总之就是不要让你的扩展在扩展目录中产生数据,或者修改自己的文件。

安装扩展

Adobe Extension Manager 已经不会在 CC 2015 以后的版本上了,
Announcement: Extension Manager End of Life Notification

零基础的 PhotoShop CEP 6 开发教程 「 9 」签名打包与 ZXPSignCmd_第5张图片
Extension Manager 已死

Adobe 想让人们都去它的 Adobe Add-Ons 市场下载扩展,不过实际上 Adobe Add-Ons 并不好用吗,尤其是国内网络环境下,Adobe Creative Cloud 客户端安装扩展不仅速度慢而且很容易失败

零基础的 PhotoShop CEP 6 开发教程 「 9 」签名打包与 ZXPSignCmd_第6张图片
Adobe Add-Ons

所以目前的扩展主流是自己发布文件让

  • 用户自己复制文件到扩展安装目录
  • 用户执行 .JSX、.Bat 脚本,帮助用户一键复制文件到扩展安装目录
  • 自己制作一个安装器软件
  • Adobe Extension Manager 的开源替代品 :ZXPInstaller

其中 ZXPInstaller 是一个功能和 Adobe Extension Manager 差不多的软件,不过 40 多 MB 的体积真不想跟用户说下个几 MB 的扩展前先装个这家伙...


零基础的 PhotoShop CEP 6 开发教程 「 9 」签名打包与 ZXPSignCmd_第7张图片
ZXPInstaller

你可能感兴趣的:(零基础的 PhotoShop CEP 6 开发教程 「 9 」签名打包与 ZXPSignCmd)