Wimbuilder2-基于hta/vbs/js/bat的图形界面新的PE生成器
本帖最后由 slore 于 2020-5-8 23:25 编辑Wimbuilder2
特点:
[*]纯脚本打造,小,简单,快速且可自由修改所有功能, 所作更改, F5刷新即生效, 不用编译, 不用打包, 不用安装
[*]利用wimlib直接从install.Wim提取所需文件,省去挂载卸载install.wim时间,生成速度非常快
[*]使用TrustInstaller权限启动, 不需要对文件,注册表进行权限修改,生产速度更快
[*]设定界面采用HTML, 随改F5刷新即可见, 支持目前绝大部分HTML5语法, 更做出更炫,更自由的设定界面(还可以使用js脚本, 动态改变)
[*]对系统功能所需文件,注册表从结构上独立成单个功能补丁, 便于学习, 和给更多版本参考共用
[*]为增删改Wim内容提供便利宏命令(批处理),制作补丁不用写复杂脚本, 使用简单的文件列表, 注册表信息即可,功能补丁制作学习曲线低
[*]脚本自身(js),界面(html),补丁(bat)均采用广为人知的脚本语法,普通用户可利用常用宏,懂bat等即可创建自定义宏
[*]自定义设定界面, 自定义组件功能补丁完全独立,可以给不同工程共用
[*]界面,脚本,功能补丁支持国际化
运行环境:Windows 7~Windows Server 2019未精简系统。
原生boot.wim(2)/wimre.wim环境(默认带HTA组件(mshta.exe, mshtml.dll)的版本【Win10的已测试】)。
程序截图:
最新更新反映在 【PE作品发布区】
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=411399
github最新版(含WIN10XPE工程)永久地址: https://github.com/slorelee/wimbuilder2/archive/master.zip
新版附件中带一个WIN10XPE的例子(winre.wim为基础), 将winbuilder的工程转换为简洁的批处理脚本工程(273KB).
完全从系统install.wim提取所需文件,不包含任何非系统文件,构建了一个包含以下组件的Windows PE(支持10.0.17763):
[*]原生Windows Explorer外壳(RS5以上支持暗黑主题)
[*]DWM服务支持
[*]设备管理器
[*]磁盘管理器
[*]服务管理器
[*]原生简体中文,繁体中文,韩语输入法
[*]原生搜索功能 (2018-11-18)
[*]基本显示器驱动,显卡驱动 (2018-11-18)
[*]网络支持 (2018-11-18)
[*]WOW64支持(x64环境下可运行x86程序) (2018-12-05)
[*]IE 11(x64 & x86) (2018-12-05)
使用方法:
1.运行wimbuilder.cmd启动
2.准备界面:选择install.wim,选择winre.wim(索引1)[从install.wim\Windows\System32\Recovery\提取],
3.工程界面:选择WIN10XPE工程
4.补丁界面:选择需要集成的功能补丁,以及补丁设置
5.构建界面:点击1-run即可生成wim文件(1-exec通常不使用,为出错时运行选项,保存构建记录到界面),
再点3-makeiso将生成ISO(请自己准备ISO模板放到_ISO_目录中)
默认工程不含第三方工具,有人问添加工具的方法,这里提供PECMD启动器,PENetwork工具 的2个例子补丁,请参照。
基本上就是把文件解压出来就可以了。
101楼(11页) PECMD作为启动器,隐藏掉CMD命令提示符窗口的补丁
http://bbs.wuyou.net/forum.php?m ... 4934&fromuid=166812
102楼(11页) 为PE添加PENetwork工具
http://bbs.wuyou.net/forum.php?m ... 4941&fromuid=166812
发现论坛上实际对于WimBuilder2本身的 反馈,建议不多,更多的是生产出来的PE的问题,建议。
最新更新反映在 【PE作品发布区】
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=411399
2018-12-04 更新:
因为对纯x64的PE环境支持,增加了些x64的程序,导致整体大于3MB,所以分成x86,x64版本提供下载。
都可以构建x86,x64的PE。(x64版没有bin\x86和bin\SetACL.exe,x86版没有bin\x64,仅此区别,其他是脚本所以都一样。)
1.增加一个200kb测试补丁用boot.wim(第一卷x64,第二卷x86),空的Windows目录,注册表结构,用于测试补丁变化,且快速加载。
2.增加构建后可自动启动虚拟机测试ISO接口(带VirtualBox启动例子)。
3.第一次访问构建页面后,其他页面增加一键快速构建按钮。
4.WIN10XPE工程,增加 WOW64支持(x64环境下可运行x86程序),IE 11(x64 & x86)
5.其他细节更新,已知小问题修正
本帖最后由 slore 于 2018-11-3 23:02 编辑
xuexiang 发表于 2018-7-3 17:42
大神这么厉害,能不能做个类似win10开始菜单界面的程序,一个页面可以自定义放置自己的软件,pe下使用
用WinXShell.exe写了一个界面:
做一个快捷方式,固定到任务栏就行了。
自定义界面:
UI_Launcher.zip/main.xml
自定义应用程序启动:
UI_Launcher.zip/main.lua
function onclick(ctrl)
if ctrl == "calc" then
suilib.call("run", "calc.exe")
elseif ctrl == "notepad" then
suilib.call("run", "notepad.exe")
end
end
旧版的WinXShell.exe也可以出界面,不过只支持窗口在中间或者右下角显示,
附件是开发中的版本,加了一个左下角显示窗口的选项,你可以运行下看看效果。
此功能已经集成在最新的WinXShell.exe,且有全屏模式,与Wimbuilder2无关.
本帖最后由 xuexiang 于 2018-6-29 13:55 编辑
slore 发表于 2018-6-25 13:05
看过程对boot.wim的加载已经完成,但是准备打补丁时,没有找到:
Projects\WIN10XPE\main.bat
不支持预览版,17134直接成功
17134boot卷1不行,好奇setup比pe就多了setup支持安装的两个组件
新版
17704测试正常,
可以正常运行联想一键恢复okr9,理论上okr8也支持
pe re setup组件一样,组件也很多
本帖最后由 slore 于 2018-6-24 22:40 编辑
title wimbuilder 是如何工作的呢?
用户->wimbuilderUI: 选择源install.wim文件
用户->wimbuilderUI: 选择基础wim文件(例如:boot.wim)
用户->wimbuilderUI: 选择一个工程
note right of wimbuilderUI:显示工程相关信息与可变更参数选项界面
用户->wimbuilderUI: 选择要为基础wim文件进行的[补丁]
用户->wimbuilderUI: 点击 'build' (构建)按钮
wimbuilderUI->wimbuilder(批处理): 构建工程(bin\\_process.bat)
wimbuilder(批处理)->wimbuilder(批处理): 提取源install.wim的注册表HIVE文件
note right of wimbuilder(批处理): 放在\n_Factory_\\target\\<project>\\install\\windows\\system32\\config\\*.*
wimbuilder(批处理)->wimbuilder(批处理): 复制boot.wim到*_Factory_*(工厂)进行加工
note right of wimbuilder(批处理): 复制boot.wim到\n_Factory_\\target\\<project>\\boot.wim\n(不对基础wim进行修改)
wimbuilder(批处理)->wimbuilder(批处理):挂载install.wim的注册表HIVE文件
note right of wimbuilder(批处理): 挂载路径为:\nHKLM\\Src_SYSTEM,\nHKLM\\Src_Software,\n...\n(用于REGCOPY)
wimbuilder(批处理)->wimbuilder(批处理):通过Dism命令挂载boot.wim
note right of wimbuilder(批处理): 挂载路径为:\n_Factory_\\target\\<project>\\Mounted
wimbuilder(批处理)->wimbuilder(批处理):映射挂载路径为X:驱动器
note right of wimbuilder(批处理): SUBST "%_WB_MNT_DIR%" X:\\\n(用于对X:\\xxx操作)
wimbuilder(批处理)->wimbuilder(批处理): 挂载boot.wim的注册表HIVE文件
note right of wimbuilder(批处理): 挂载路径为:\nHKLM\\Tmp_SYSTEM,\nHKLM\\Tmp_Software,\n...
wimbuilder(批处理)->wimbuilder(批处理): 处理用户补丁main.bat
note right of wimbuilder(批处理): 通过宏 增/删/改文件,更新注册表\nOpenTextFile,\nREGCOPY,\nACLRegKey,\n...
wimbuilder(批处理)->wimbuilder(批处理): 提交修改并导出新wim
note right of wimbuilder(批处理): bin\\_cleanup.bat卸载注册表,commit变更\n导出到:\n_Factory_\\target\\<project>\\build\\boot.wim
用户->wimbuilderUI: 点击 'iso' (镜像制作)按钮
wimbuilderUI->wimbuilder(批处理):bin\\_MakeBootISO.bat
note right of wimbuilder(批处理): 复制build\\boot.wim -> _ISO_\\sources\\boot.wim\n利用oscdimg.exe制作镜像到\n_Factory_\\BOOTPE.iso 本帖最后由 slore 于 2018-11-18 00:06 编辑
如何构建例子工程WIN10XPE?
1.点左侧【准备】,选择 install.wim,选择 boot.wim,下一步 (config.js文件中可配置默认路径,所以通常不再需要准备界面)
2.【Project工程】选WIN10XPE工程,下一步
3.【Patch补丁】选择需要应用的补丁,以及进行补丁的选项
4.【build构建】点1-run_build进行构建,
再点2-make_iso创建ISO文件
(0-cleanup按钮,用于卸载注册表和WIM文件的挂载,通常顺利挂载wim的情况下,不需要,如果磁盘空间,或者被占用导致构建失败时,才需要按此按钮)
本帖最后由 slore 于 2018-12-5 00:05 编辑
更新历史
2018-11-22 更新:
* 易用性改善,将自动记忆当前的选项,下次启动不需要再指定
* 自动检测可用磁盘驱动器用于挂载
* 可以选择构建完成后立即创建ISO镜像
* 1-exec模式将保留构建日志
2018-11-20 更新:
与前一版本没太大区别。只是支持选择映射磁盘驱动,另外winre.wim/boot.wim下直接进行构建进行了适配。
(ADO组件依赖移除,findstr等命令缺失,代替处理等等),不在PE下运行WimBuilder2构建PE的话,可暂时不用下载。
2018-11-18 更新:
1.WIN10XPE工程,增加 原生搜索功能,基本显示器驱动,显卡驱动,网络支持
2.增加一个精简补丁实例
3.WimBuilder2对驱动补丁支持,精简接口,进行适配,增强AddFiles宏,RegCopy宏, 增加RegEx宏。
4.根据使用建议,对准备及工程界面,进行易用性增强
5.可在HTA内核为IE8环境构建(Windows 7)
[*]支持选择镜像盘,且根据系统镜像创建ISO模板
[*]支持选择sources目录,直接关联install.wim和boot.wim/winre.wim
[*]支持从install.wim自动提取winre.wim
[*]界面进行必要的提示,与检查
[*]当仅有一个工程时,默认选择该工程
winre.wim(win10)原生支持HTA,vbs,js,所以在winre.wim下也可以运行wimbuilder2,
但是没有ado组件,所以无法读取UTF8格式的国际化资源,界面是英文。(资源文件改成ANSI,UTF16-LE可以解决)
X映射修改完再更新。(2018-11-20版已更新)
因为做界面增强,IE11补丁未完成
已经把“系统自带搜索功能”,“网络支持”实现了,不过x64版本原生IE浏览器,需要WOW64支持,而且下载文件需要切换Administrator用户,
周末把WoW64和SwitchAdmin补丁整理下再更新(针对驱动更新,还有精简改了些代码)。
2018-11-3 更新:
[*]功能补丁结构更加完善
[*]自动根据目录生成功能补丁选择树
[*]可初始化界面的参数默认值(现在支持界面元素:文本,下拉框选择,复选按钮,单选按钮,图片)
[*]可将或者界面中动态修改的参数值(之后会通过环境变量传递, 给批处理使用)
[*]功能补丁的多国语言显示支持
2018-06-26 更新:
[*]修复:最新预览版(10.0.17692.1000)构建时,无法正常卸载的问题
[*]改进:当默认boot.wim不存在时,先显示【准备】界面
[*]改进:暂时禁用【准备】页面变更【工作空间】按钮(WORKSPACE,Projects存放目录,暂时使用当前目录)
[*]改进:当不存在_ISO_模板时,提供一个最小ISO模板(保证生产ISO按钮成功)
详细原因分析,如何修改批处理解决问题,参照#30楼说明。
也可以在github上查看修改履历
https://github.com/slorelee/wimbuilder2/commit/58aefe3c0db127c38cbee1543fa05efaceb62dc4
本帖最后由 slore 于 2018-11-22 02:13 编辑
占楼
占楼{:1_186:} 占楼是不是太多了?!{:1_201:} 看看更新了什么 感谢分享, 沙发没占上 能添加文件列表=增加文件
注册表是pe的还是ins 的 本帖最后由 slore 于 2018-6-24 22:16 编辑
黑中见白 发表于 2018-6-24 20:55
能添加文件列表=增加文件
注册表是pe的还是ins 的
例子是,用boot.wim自己的注册表,然后从ins中复制必要的CLSID,INTERFACE等项目。
当然可以直接复制SOFTWARE,进行修改更简单。
==================================================
自动挂载
instal.wim的注册表文件到HKLM\Src_SYSTEM,HKLM\Src_SOFTWARE;
自动挂载
PE的注册表文件到HKLM\Tmp_SYSTEM,HKLM\Tmp_SOFTWARE;
利用REGCOPY复制install的注册表的所需内容,你也可以自己用reg命令操作。
详细流程及对应文件,请参考2楼:
wimbuilder是如何为你工作的? slore 发表于 2018-6-24 22:14
例子是,用boot.wim自己的注册表,然后从ins中复制必要的CLSID,INTERFACE等项目。
当然可以直接复制S ...
主要是我自己用其他软件弄的pe 服务不全,没有蓝牙 厉害! 看看更新了什么 很强大的样子啊,记号下 感谢分享 这样算是改进的版本,减少手工步骤 好东东,收下啦~楼主忒牛,谢la... 感谢大神分享 弱弱的问一下,有几人会用? MPFENG 发表于 2018-6-25 12:33
弱弱的问一下,有几人会用?
点8下鼠标
1.点【准备】,选择 install.wim,选择 boot.wim,下一步,
2.选WIN10XPE工程,下一步,
3.patch跳过,直接下一步,
4.点1-run,再点2-make_iso
slore 发表于 2018-6-25 12:45
点8下鼠标
1.点【准备】,选择 install.wim,选择 boot.wim,下一步,
我昨天测试就这样,今天按你的步骤还这样,
--- 构建信息
WB_BASE=F:\sources\boot.wim
WB_BASE_INDEX=1
WB_PROJECT=WIN10XPE
WB_SKIP_UFR=1
WB_SKIP_URR=1
WB_SRC=F:\sources\install.wim
WB_SRC_INDEX=1
WB_STRAIGHT_MODE=1
WB_UI_LANG=zh-CN
WB_WORKSPACE=
工序:获取WIM文件信息
WB_PE_ARCH=x64
WB_PE_BUIID=1000
WB_PE_LANG=zh-CN
WB_PE_VER=10.0.17692
工序:挂载 WIM 映像
Extracting file data: 70 MiB of 70 MiB (100%) done
Done extracting files.
已复制 1 个文件。
--- MOUNT -*
部署映像服务和管理工具
版本: 10.0.17134.1
正在安装映像
[==========================100.0%==========================]
操作成功完成。
系统找不到指定的路径。
'main.bat' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
--- UNMOUNT /commit
部署映像服务和管理工具
版本: 10.0.17134.1
映像文件 : C:\Users\10\Downloads\wimbuilder2\_Factory_\target\WIN10XPE\boot.wim
映像索引 : 1
错误: 32
另一个程序正在使用此文件,进程无法访问。
可以在 C:\Windows\Logs\DISM\dism.log 上找到 DISM 日志文件
Cleanup finished.
--- EXPORT -*
部署映像服务和管理工具
版本: 10.0.17134.1
正在导出映像
[==========================100.0%==========================]
操作成功完成。
C:\Users\10\Downloads\wimbuilder2\_Factory_\target\WIN10XPE\boot.wim
另一个程序正在使用此文件,进程无法访问。
C:\Users\10\Downloads\wimbuilder2> 本帖最后由 slore 于 2018-6-25 13:07 编辑
xuexiang 发表于 2018-6-25 12:56
我昨天测试就这样,今天按你的步骤还这样,
看过程对boot.wim的加载已经完成,但是准备打补丁时,没有找到:
Projects\WIN10XPE\main.bat
系统找不到指定的路径。
'main.bat' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
然后程序自动 卸载挂载的WIM文件,但是可能注册表的正在使用,没有卸载掉,
所以卸载WIM没有成功。
确认方法:
bin\_process.bat的第一行 echo off改成echo on,
下面找下main.bat,
前一句应该是 pushd 切换到 Project\WIN10XPE\ 目录,
这句失败了,不过看到你路径是
C:\Users\10\Downloads\wimbuilder2\
没有空格,奇怪字符,不该失败的。
确认注册表是否被正常卸载,打开regedit,看下HKEY_LOCAL_MACHINE下面是否有:
Src_Software,Src_SYSTEM,Tmp_Software,Tmp_SYSTEM。
有的话,到build界面,先选择0-cleanup。清除上次残留注册表和boot,wim挂载。
=============================================
你的WB_WORKSPACE=是空?
这个请用默认的 "." 使用当前目录试试。
预览版不能制作,过程会出错,不能卸载保存 生成纯净的PE太好了 技术宅呀! xuexiang 发表于 2018-6-25 16:07
预览版不能制作,过程会出错,不能卸载保存
关于预览版(10.0.17692.1000)不能卸载保存的原因是,自动挂载的注册表项目没有卸载干净导致的。
问题代码:
wimbuilder2/bin/PERegPorter.bat
rem check existence before UNLOAD
rem Query -* HKEY_USERS\.DEFAULT\Environment
rem Query -* HKEY_LOCAL_MACHINE\SAM\SAM
rem Query -* HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
rem Query -* HKEY_LOCAL_MACHINE\SYSTEM\Software
rem Query -* HKEY_CURRENT_USER\Environment
卸载前先检查了是否挂载了,HKLM不能直接卸载所以找了一个子项去检查,
HKEY_USERS\.DEFAULT和HKEY_CURRENT_USER找的是Environment。
发现最新预览版和RS4的注册表不一样,没有Environment子项,所以导致注册表扔被挂载到Tmp_DEFAULT,没有卸载掉,所以wim镜像卸载保存失败。
因为已经挂载到主系统的HKLM\Tmp_xxxx下面了,所以直接判断Tmp_xxxx是否存在即可,修改代码如下即可:
if /i "x%2"=="xUNLOAD" ( if /i "x%2"=="xUNLOAD" (
- reg query HKLM\%1_DEFAULT\Environment /ve 2>nul 1>&2
+ reg query HKLM\%1_DEFAULT /ve 2>nul 1>&2
if ERRORLEVEL 1 goto :DEAL_SAM if ERRORLEVEL 1 goto :DEAL_SAM
)
==========================================================
其他改善代码如下:
* 基础wim文件不存在是,默认显示【准备】页面,而不是直接到【工程】界面
assets/js/init.js
i18n_trans();
function page_init() { function page_init() {
+ if (!fso.FileExists($wb_base)) {
+ $('#menu_start').click();
+ return;
+ }
$('#menu_project').click();
}
* 因默认访问当前目录的Projects文件夹,暂时禁用WORKSPACE选择按钮
<a href="#" disabled="disabled" id="wb_workspace_folder_btn" class="ibutton browse i18n-title"
title="Set the build workspace">Browse</a><br/> title="Set the build workspace">Browse</a><br/>
会基本的HTML,bat,js就可以自己改进/自定义WimBuilder。 请教大神:
如图的情况,是什么原因引起的?应如何处理?
谢谢!
