Edgeless PE 插件开发小记

最近了解到了 Edgeless 这个神奇的 PE 系统,对它特有的“插件“功能十分入迷,自己也做了几个插件,在这其中也踩了不少坑,就写这篇文章记录一下。

什么是Edgeless插件?

Edgeless内核启动完成之后,会运行一个脚本。这个脚本即为Launcher.bat(其内容也可以被用户自定义)。
默认情况下,该脚本会查找插件存放的位置,先将所有.7z压缩包解压到%ProgramFiles%Edgeless,然后并发执行%ProgramFiles%Edgeless目录下的所有.cmd和.wcs(pecmd脚本)文件,这些脚本文件(即外置批处理)将完成各自软件的setup设置。 外置批处理的生命周期被设计为一次性,被执行后他们将会被移动到“安装程序”文件夹内 所以,插件包通常拥有这样的结构:
- 一个文件夹(包含目标程序及其需要的文件) - 一个.cmd或.wcs脚本(即外置批处理,用于执行绿化安装操作)

以上是来自官方手册的介绍,我就不多说了。

怎么制作它呢?

很简单。首先呢,你得准备好要作为插件的软件。这最好是一个免安装或者只需很少步骤就可以使用的软件,当然,如果你知道这个软件的安装过程,并且这个过程可以使用以下工具中的任何一个复现的话,那也可以:

  • CMD
  • PECMD
  • VBScript(你问我为什么?因为VBScript脚本可以在CMD里用 cscript.exe 调用啊)

接下来,在桌面或者其他什么别的地方新建个文件夹(根文件夹),在这个文件夹里再建个名字有辨识度的文件夹(程序文件夹),把你准备好的软件的全部文件以及它运行所依赖的运行库的文件都放进这里面,然后就可以不动这个文件夹了。

接下来,返回到根文件夹,在这里新建个以 .cmd 为扩展名的文件,这就相当于你的插件的安装程序了。 里面怎么写呢? 如果你只是要在桌面上给创建个快捷方式,就这么写:

#创建桌面快捷方式“绿色软件”,指向"X:\Program Files\Edgeless\我的绿色软件\program.exe"
pecmd link "X:\Users\Default\Desktop\绿色软件","X:\Program Files\Edgeless\我的绿色软件\program.exe"

其中的 我的绿色软件 就是刚刚你创建的程序文件夹的名字。很简单对吧? 那么怎么执行脚本呢?

#静默运行setup.cmd(!表示静默运行,去掉则显示运行窗口)
pecmd exec !"X:\Program Files\Edgeless\我的绿色软件\setup.cmd"

你肯定看到了一个你可能没听说过的东西——pecmd。顾名思义,这是用来操控PE的命令提示符。在 PE 里,使用 PECMD 比直接用 CMD 方便。当然,以上的脚本也可以这么写:

#创建桌面快捷方式“绿色软件”,指向"X:\Program Files\Edgeless\我的绿色软件\program.exe"
link "X:\Users\Default\Desktop\绿色软件","X:\Program Files\Edgeless\我的绿色软件\program.exe"
#静默运行setup.cmd(!表示静默运行,去掉则显示运行窗口)
exec !"X:\Program Files\Edgeless\我的绿色软件\setup.cmd"

只是要用 .wcs 格式存起来。 还可以为开始菜单添加快捷方式:

pecmd link "%Programs%\引导编辑\BOOTICEx64","%ProgramFiles%\Edgeless\BOOTICEx64.exe"

更多的用法,可以看看 官方文档

您可以不经过Edgeless团队的同意自由更改发布插件作品,但是请不要忘记您的道德操守。 我们不希望看到有违反Edgeless三无精神(无劫持、无广告、无收费)或是违反中华人民共和国相关法律条款的作品出现,也不会承认此类作品与我们有任何关系。 继续开发视为您已经同意此条款。

踩过的坑

千万留意文件的编码! 千万留意文件的编码! **千万留意文件的编码!**对于不带中文的安装脚本,都要使用 UTF-8 编码保存,对于带中文的安装脚本,都要使用 GBK 编码保存。如果你是在PE里调试你的插件,**切记不要使用7-ZIP的编辑功能!**所有被编辑完后压缩回去的脚本,编码都会变成 UTF-8 with BOM,我不知道 with 了什么 BOM,但反正你的脚本就BOOM了,连英文部分都会乱码。

其次,注意文件夹及文件的大小写和保存路径。压缩的时候要注意里面到底压进去了几层目录。正确的姿势是:一打开压缩好的插件包就看得到脚本和子文件夹

好了我也没什么好说的了。反正如果出了问题先检查你的脚本,再看看文件路径,大多数问题都可以解决的。


Edgeless PE 插件开发小记
https://www.xkww3n.cyou/2019/04/20/develop-edgeless-plugins/
作者
xkww3n
发布于
2019年4月20日
许可协议