插件包载入原理

在介绍如何开发插件包之前,先来讲一下插件包的载入原理

FirPE内核启动完成之后,会运行一个脚本。这个脚本即为Launcher.bat(其内容也可以被用户自定义)。

默认情况下,该脚本会查找插件存放的位置,先将所有.7z压缩包解压到%ProgramFiles%\Resource,然后并发执行%ProgramFiles%\Resource目录下的所有.cmd和.bat和.wcs(pecmd脚本)文件,这些脚本文件将完成各自软件的setup设置。
所以,插件包通常拥有这样的结构:

    null
  • 一个文件夹(包含目标程序及其需要的文件)
  • 一个.cmd或.wcs脚本(用于执行绿化安装操作)
如何开发Edgeless插件包?

开发者在为脚本和文件夹命名时要尽可能避免与其他项目重名,保证自己插件的运行目录里面不会出现奇怪的东西(文件夹重名会导致所以重名插件的内容被释放到同一个文件夹,可能会引起错误。当然,根据这个原理也可以开发针对某个插件的拓展包)

典型开发步骤

一、移植绿色软件

Step1
测试使用
解压文件,然后在FirPE环境中测试该程序是否可以直接使用
如果可用,请跳转到Step2
如果不可用,这就比较麻烦了。尝试找到出错原因。如缺失dll文件,就从网络上找到相应的dll文件放到主程序所在目录或system32/SysWOW64等文件夹内或者注册此dll后再次尝试。如果是其他报错原因… emmmm我也不会,你加油

Step2
打包程序
如果一切顺利,你的程序能够在FirPE内成功运行了,那么接下来就是打包环节。在这个环节里,你将要为软件的完美运行铺好路。
创建一个文件夹,把绿色版的程序放到这个文件夹(下文简称目标文件夹)内。对程序的配置文件进行优化(并尽可能删除个人使用信息)、
如果需要补充dll或者其他文件,将这些文件放置在目标文件夹内并通过合适的方式编写批处理文件释放他们。
例:需要注册run.dll文件
编写批处理,内容为:

regsvr32 run.dll

例:需要删除%ProgramFiles%内的refuserun.exe并复制rely.exe到%ProgramFiles%
编写批处理,内容为:

::删除refuserun.exe
del /f /q %ProgramFiles%\refuserun.exe
::复制rely.exe
copy rely.exe %ProgramFiles%\rely.exe

保存将以上代码保存在setup.cmd内并放置在目标文件夹中即可
需要其他操作也请一并安排好

Step3
编写外置批处理
新建一个批处理“安装我的绿色软件.cmd”,这个批处理和目标文件夹(此处命名为“我的绿色软件”)放在同一个目录内,内容为

call 我的绿色软件\setup.cmd
exit

这样,FirPE就会执行“安装我的绿色软件.cmd”这个批处理文件,然后通过这个文件call文件夹内的setup.cmd来执行安装的相关事项。

建议在最后一行加上exit,否则批处理运行结束后cmd窗口可能不会马上退出,导致后台出现cmd.exe残留。

当然,这只是一种写法。你也可以把安装过程完全放在目标文件夹外的这个批处理中(使用cd命令切换目录)。
完成后,将文件夹与外置批处理压缩为7z格式的压缩包,在FirPE中进行测试和调试,最终完成插件的开发。

二、自己编写脚本

这一开发方案需要开发者具有一定的批处理和/或pecmd脚本编写基础,通常可用于编写自定义执行维护操作的插件。

如果是通过脚本进行维护操作,那么通常情况下插件包内只需要存在一个批处理文件就可以了(.cmd/.bat/.wcs)
如果是通过脚本实现类似于软件的功能,请参考“ 一、移植绿色软件”,将依赖文件放置在文件夹内并保留一个外置的安装脚本即可。

案例

1.Chrome49(移植绿色软件)
首先,我在无忧启动论坛找到了tools241优化过的Chrome49资源包把它下载下来,执行Step1,发现可直接运行。

如何开发Edgeless插件包?

接下来,执行Step2。将内容物进行精简并分离ChromePortable.bat内的安装代码和运行代码。顺便把自带的丑陋图标替换了。

如何开发Edgeless插件包?

编写外置批处理Chrome49.cmd

如何开发Edgeless插件包?

其中

pecmd link "X:\Users\Default\Desktop\Chrome","X:\Program Files\Edgeless\Chrome49\Chrome.cmd",,"X:\Program Files\Edgeless\Chrome49\Chrome.ico",0

表示将"X:\Program Files\Edgeless\Chrome49\Chrome.cmd"在桌面创建快捷方式,图标为"X:\Program Files\Edgeless\Chrome49\Chrome.ico",名称为Chrome。
这是一个常用的pecmd命令,可以为程序添加桌面快捷方式。
将Chrome49.cmd和Chrome49文件夹压缩为7z,即可完成Chrome49插件包的制作

如何开发Edgeless插件包?

完成插件包的制作后不要忘记在实际情景中测试哦

拓展阅读:
为开始菜单添加快捷方式的命令如下:

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

添加全局快捷键(慎用!注意与其他常见快捷键的冲突)

pecmd HOTK #121,%ProgramFiles%\Edgeless\Orderdrv\orderdrv.cmd        `F10 理顺盘符`

2.随机壁纸(pecmd脚本插件包示例)

编写wcs脚本(如何编写请自行查找关于pecmd命令行的内容)并添加相应的依赖内容

如何开发Edgeless插件包?

编写外置批处理文件(拓展名为.wcs)

如何开发Edgeless插件包?

打包完成(详细过程请参考案例1)

本文转载于Edgeless,略有修改

考虑到之后的插件包兼容问题,本文教程为开发Edgeless插件,同时FirPE兼容
Edgeless插件


用心创造未来