|
本帖最后由 slore 于 2016-8-30 21:44 编辑
What's me?
基于BAT批处理文件和VBS脚本的利用系统Dism命令对WIM文件进行更新框架。
可一键生成自定义PE, 或者精简,修改Windows 7以上系统安装镜像(install.wim)
此框架特点:
- 小,非常小,处理脚本压缩后不到15KB。
- 利用系统原生支持BAT,VBS脚本及系统自带命令,支持主流Windows平台及对应PE制作。
- 构建 平台:Windows 7, Windows 8, Windows 8.1, Windows 10 (x86, x64)
- 构建PE版本:WinPE 3.x, WinPE 4.0, WinPE 5.0, WinPE 5.1, Windows 10 PE (x86, x64)
- 构建Windows版本:Windows 7, Windows 8, Windows 8.1, Windows 10 (x86, x64)
- 脚本完全自由。不进行任何形式加密,任何人可以复制,修改,再发布,无任何限制。
- 原创i18n脚本组件, 支持多国语言。
- 只需放置文件,定义文件列表,不需要任何编程技巧即可方便构建属于自己的PE。
- 每个修正Patch为独立文件夹,可重复应用,功能添加修改独立清晰,也可发布,减少更新发布体积。
- 构建工程不管在何人机器,何平台总可以从boot.wim生成完全相同的PE,且修改可逆可追溯。
- 只用按空格继续即可,快速构建出可启动的个性化PE。(最快1分钟内)
- 可一键构建属于自己的PE/Windows系统。
使用方法:
STEP.1.准备环境(只需要1次)
a.解压附件到本地磁盘驱动器根目录,得到如下结构(仅列出使用时需要关注的文件或目录)
-PB_Workspace\
+mnt\
+build\
+ISO\
+Projects\
+PE_Builder\
+config.ini
b.将系统ISO的boot目录,bootmgr文件复制到mnt\build\ISO中,创建一个空sources目录。
(以上为默认启动光盘模板,可根据自己的情况修改)
STEP.2.配置config.ini文件中的参数,来定义所有工程的初始设定(设定可被各工程的config.ini的设定覆盖)。
*挂载目录(必须)
*用于复制原版系统文件的install.wim
*构建PE的基础WIM(boot.wim或者自己/别人做好的wim)
*挂载映像序号(默认为1)
*生成路径(必须)
*是否需要获取文件完全访问权(使用系统boot.wim时需要设置为0, 可能花费2~5分钟)
*是否需要获取注册表完全访问权
等
STEP.3. 在Projects目录下创建一个工程目录,里面存放各种Patch(*后续有例子说明)
STEP.4. 双击PE_Builder\PE_Builder.bat,选择构建工程,无异常一路空格即可构建出wim格式PE。
STEP.5. 双击PE_Builder\MakeBootISO.bat,等待数秒钟可以得到自制PE的启动ISO文件。
关于STEP.3可下载附件Mini10PE进行参考。
以下说明下*Patch*的构成。
Patch为一个目录,是某种精简,或者某种功能更新,结构如下:
Patch_Sample\
+INIT.bat <- 可缺省,用于应用Patch前,初始自定义脚本(处理生成增删改文件列表,或者别的COPY操作等)
+KEEP_ITEMS.txt <- 可缺省,定义某目录需要保留的文件,其余文件将被删除
+DEL_DIRS.txt <- 可缺省,定义要删除的目录,例如:Windows\SysWOW64
+DEL_FILES.txt <- 可缺省,定义要删除的文件,例如:Windows\System32\app.exe
+ADD_ITEMS.txt <- 可缺省,定义需要从install.wim文件复制的文件或文件夹列表
+X\ <- 可缺省,X文件夹,放置需要复制/更新到PE中的文件,例如: X\Windows\System32\PExlorer.exe
+*.reg <- 可缺省,需要导入到PE系统的注册表文件(注册表不需要修改项目路径为挂载后的PE_SOFT之类, 请保持PE下的注册表项名)
+LAST.bat <- 可缺省,用于收尾时需要的额外处理的自定义脚本(上述文件注册表修正以外,其他操作,如:动态创建快捷方式等)
注意1:KEEP_ITEMS.txt 文件第一行是需要保留的文件夹路径,结尾必须带"\",以下是需要保留的子目录或者子文件,目录结尾必须带"\"
注意2:各工程目录下的各Patch目录按字母顺序处理。如果向System32复制了某文件,如果某Patch采用KEEP_ITEMS.txt的形式,可能又被删除掉。
解决方法是,通过命名改变Patch适用的顺序,例如 A_TEST、B_TEST2,或者0_Patch1、1_Patch2。运用LAST.bat自定义适用顺序,将有顺序关系的Patch放到任意子目录(Package),
在LAST.bat中书写:
call PB_APPLY_PATCH %~dp0Package\PatchB
call PB_APPLY_PATCH %~dp0Package\PatchA
注意Patch名不要设置为X,因为此Package目录实际当一个Patch处理了,只是利用X目录以外的目录不进行任何操作的机制来达到自定义Patch适用顺序的目的的。
附件中的Mini10PE工程,可以从Windows 10的boot.wim构建出73MB的小容量WIN10PE。(几乎只有cmd.exe命令可用,regedit,taskmgr,notepad都无法运行,结果PExlorer.exe可以显示桌面)
由于精简WinSxS目录,System32\CatRoot目录的定义中有版本信息,个人测试时注意修改:"精简System32\KEEP_ITEMS.txt", "精简WinSxS\KEEP_ITEMS.txt"。
2016-07-06 更新:
0706完整版:
PB_Workspace0706.zip
(560.11 KB, 下载次数: 224)
MaintPE实例工程:
MaintPE.zip
(1.11 MB, 下载次数: 292)
精简PATCH包包含字体文件,3MB多无法附件上传,需要的话从下面的百度盘下载。
完整更新,在这里下载。
链接: http://pan.baidu.com/s/1kVwbKOZ 密码: k6ut (2016-08-30 补链接)
(本来差分更新,是希望使用的时候可以看到以前个更新以及避免config.ini文件覆盖,但也因此可能下载顺序不一直导致不是最新版,所以提供此链接,内附Projects工程样例)
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=378646
- 利用PB_APPLY_PACKAGE.bat应用外部路径的通用补丁时,补丁无法应用问题。
工作目录不正确导致的,添加了2行代码。(pushd "%~1", popd)
2016-07-02 更新:
*请下载最新完整版*
下载后替换PB_Workspace下面的PE_Builder目录即可。
- 修正KEEP_TIEMS.txt中定义的目录无法保留子目录的问题
- 修正非中文操作系统上,工序,错误无法高亮显示问题
- 添加CLEANUP模式(PE_Builder_CLEANUP.bat),强制清理工程WIM挂载,注册表挂载,X盘映射等(当构建出错未做清理时,为了下次构建顺利时使用。)
- 提交WIM前,清理注册表更新残留LOG文件
- 通过DISM命令获取构建WIM的基本信息保存至环境变量后续可利用(体系结构,版本号,默认语言)
- 保留文件,删除文件/夹,复制系统文件可支持使用环境变量
- 上面的功能配合起来,不同版本,不同体系结构(x86/64),不同语言的镜像,可以利用相同的PATCH定义
- PE_Builder目录改名为WIM_Builder(内部文件代码不变)
新功能应用实例:
1.基本信息获取
- 工序:获取WIM文件信息
- PB_PE_ARCH=x64
- PB_PE_BUIID=16384
- PB_PE_LANG=zh-CN
- PB_PE_VER=10.0.10240
复制代码
2.平台通用精简WinSxs的PATCH
如果config.ini中定义PB_PE_WOW64=1时,对WinSxs目录保留amd64,syswow64,x86开头的指定文件,
否则,x64平台只保留amd64开头,x86平台保留x86开头的指定文件。
+精简WinSxs\
+INIT.bat
+KEEP_ITEMS.txt
+LAST.bat
INIT.bat --- 根据体系结构设置匹配前缀
- set PE_ARCH_PREFIX=%PB_PE_ARCH%
- if "%PB_PE_ARCH%"=="x64" set PE_ARCH_PREFIX=amd64
- if "%PB_PE_ARCH%_%PB_PE_WOW64%"=="x64_1" (
- set PE_ARCH_PREFIX=*
- )
复制代码
KEEP_ITEMS.txt --- 各系统平台通用的保留文件定义
- Windows\WinSxS
- %PE_ARCH_PREFIX%_microsoft-windows-servicingstack_*_*_none_*
- =Manifests
- Manifests\%PE_ARCH_PREFIX%_microsoft.windows.systemcompatible_*_*_none_*.manifest
- Manifests\%PE_ARCH_PREFIX%_microsoft.windows.fusion_components_all_*_*_none_*.manifest
- ;below "+Manifests" keyword
- ;not only the directory and also the Manifests file will be added
- +Manifests
- %PE_ARCH_PREFIX%_microsoft.windows.common-controls_*_*_none_*
- %PE_ARCH_PREFIX%_microsoft.windows.gdiplus.systemcopy_*_*_none_*
- %PE_ARCH_PREFIX%_microsoft.windows.gdiplus_*_*_none_*
- %PE_ARCH_PREFIX%_microsoft.windows.isolationautomation_*_none_*
- %PE_ARCH_PREFIX%_microsoft.windows.i..utomation.proxystub_*_none_*
- %PE_ARCH_PREFIX%_microsoft.windows.c..-controls.resources_*_%PB_PE_LANG%_*
复制代码
LAST.bat --- microsoft-windows-servicingstack下只保留drvstore.dll(可省略)
- rem just keep drvstore.dll
- set MS_SS=
- for /f "delims=" %%i in ('dir /b X:\Windows\WinSxS\%PE_ARCH_PREFIX%_microsoft-windows-servicingstack_*_*_none_*') do (
- set MS_SS=%%i
- )
- if "x%MS_SS%"=="x" goto :EOF
- move /Y X:\Windows\WinSxS\%MS_SS%\drvstore.dll X:\Windows\WinSxS\
- del /Q X:\Windows\WinSxS\%MS_SS%\*.*
- move /Y X:\Windows\WinSxS\drvstore.dll X:\Windows\WinSxS\%MS_SS%\
- set MS_SS=
复制代码
下个小版本要做的功能:
- 各Project目录下,根据体系结构信息,应用专属PATCH集合(x64/x86/WOW64)
- ADD_ITEMS.txt中支持"+MUI"关键字,复制dll时,连同对应的多语言文件一起复制
2016-06-23 更新:
下载后替换PB_Workspace下面的PE_Builder目录即可。
- config\下的注册表文件自动挂载,reg文件自动处理项目名并导入。(任意*.reg文件放入工程目录或者PATCH目录即可,直接支持导入正常系统或者PE系统导出reg格式,不要加工项目名)
- WinSxS精简的KEEP_ITEMS.txt支持通配符,以方便不同版本,不同位数的PE构建。
注意:支持通配符扩展KEEP_ITEMS.txt中的目录结尾不要加"\";
第一行只能是Windows\WinSxS或Windows\System32\CatRoot
子目录前必须用"=子目录"声明子目录路径;
对于WinSxS目录,增加一个"+Manifests"语句,这行之下的目录保留的同时会保留Manifest中的同名文件。
例如:
KEEP_ITEMS.txt
- Windows\WinSxS
- =Manifests
- Manifests\amd64_microsoft.windows.i..utomation.proxystub_*_none_*.manifest
- Manifests\amd64_microsoft.windows.isolationautomation_*_none_*.manifest
- Manifests\amd64_microsoft.windows.c..-controls.resources_*_zh-cn_*.manifest
- Manifests\amd64_microsoft.windows.c..-controls.resources_*_zh-cn_*.manifest
- Manifests\amd64_microsoft.windows.systemcompatible_*_*_none_*.manifest
- Manifests\amd64_microsoft.windows.1234_*_*_none_*.manifest <--- 不存在的话,控制台会有提示“找不到文件”,后续精简动作继续进行
- ;below "+Manifests" keyword
- ;not only the directory and also the Manifests file will be added
- +Manifests
- amd64_microsoft.windows.common-controls_*_*_none_*
复制代码
这样同样的精简PATCH设定可以精简全大版本(7,8,8.1,10)和全小版本(10240,16586等)的WinSxS,将amd64改为*即可同时保留amd64,Syswow64,x86的WinSxs文件。(对于支持32位应用的64位PE会方便些)
至此,从文件到注册表的处理已可全部自动完成,本月或者之后应该不会再有功能更新,
有时间了发布工程或者Patch设定。
2016-06-22 小更新:
*请下载最新完整版*
下载后替换PB_Workspace下面的PE_Builder目录即可。
- 根据ADD_ITEMS.txt文件定义(目录请以"\"结尾)从install.wim复制系统文件
- 添加PB_SRC_INDEX参数,指定install.wim的映像序号(默认值为1,不设置的时候为1)
- 添加了一个PE_Builder_STRAIGHT.bat脚本,实现选择构建工程后,途中无按任意键继续的确认交互,一路处理到ISO镜像作成
因为我使用boot.wim的第二卷,不需要修改注册表和从install.wim中获取文件。
截图:
多语言支持
通过Mini10PE工程,构建的73MB PE预览。
相同Mini10PE工程, 删除 精简System32和WinSxs 这2个Patch文件夹,基于Windows 8.1 Boot构建的PE。
附件:
PB_Workspace
*请下载最新完整版*
Mini10PE工程(需要放到Projects下面)
Mini10PE.zip
(1.68 MB, 下载次数: 428)
|
评分
-
查看全部评分
|