无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: slore
打印 上一主题 下一主题

[原创] (2022-02-02 更新) Re:WIN10XPE - 从零开始构建的全功能PE

    [复制链接]
1291#
发表于 2019-9-3 14:20:28 | 只看该作者
使用默认,不改任何设置,是没有问题的,可以启动。但我自己设置了一下
就报错了。






点评

跟你的选择一样,再尝试将install.wim里的Windows\System32\drivers里的所有文件都复制到PE里,卡在了进入PE的画面,鼠标可以动。就是进不了桌面。。可能是某些服务起不来,就卡死了。。我等了5分钟,没有进入。。。  发表于 2019-9-3 16:01
合并的不要选  发表于 2019-9-3 14:44
非要合并system,可能就需要将install.wim里的Windows\System32\drivers里的所有文件都复制到PE里。不知道有没有负作用  发表于 2019-9-3 14:36
鼠标放到红字上你,可以看到提示。。。  发表于 2019-9-3 14:23
合并完整SYSTEM不要选。  发表于 2019-9-3 14:22
回复

使用道具 举报

1292#
发表于 2019-9-3 14:31:57 | 只看该作者
本帖最后由 liuzhaoyzz 于 2019-9-3 15:22 编辑

另外可能打算做一个SlimPE,包含80~90%的相同功能,但体积只有1/3或一半的PE。(能用更小巧的第3方实现的功能,不采用系统原生组件)
(感觉功能全的维护PE约160MB(200MB内),带网络的约260MB(350MB内)。)


请问下slore大神,带网络的大概260-350MB实现了吗?我勾选强力精简就会导致admin卡死,体积也只能到550MB。如果实现了,适用于那个版本?

        如果卡在左上角的话,说明系统netprofm服务没启动。获取有线网络状态的API会卡死。(正常系统也一样)
UI_WIFI.zip/main.jcfg:
"wirednetworkicon":false,
就好了。  
(最近打算更新下WinXShell,这个打算自动检测服务,如果服务不正常就仅显示无线信号强度)   

我漏看了,晚点试下。



另外请问下,自制补丁,把精简文件命令放在main.bat和last.bat,有什么区别?
  

点评

所有的main.bat先执行,然后是last.bat执行。 文件添加提取,都应该放到main.bat,同时regcopy也应该放到main.bat。 last.bat就是对文件的修改,配置文件的编辑,注册表的修改。 提供2个,是避免只有main.bat,  详情 回复 发表于 2019-9-3 15:24
回复

使用道具 举报

1293#
 楼主| 发表于 2019-9-3 15:24:37 | 只看该作者
liuzhaoyzz 发表于 2019-9-3 14:31
请问下slore大神,带网络的大概260-350MB实现了吗?我勾选强力精简就会导致admin卡死,体积也只能到550 ...

所有的main.bat先执行,然后是last.bat执行。
文件添加提取,都应该放到main.bat,同时regcopy也应该放到main.bat。
last.bat就是对文件的修改,配置文件的编辑,注册表的修改。

提供2个,是避免只有main.bat,改好了,后来别的补丁又覆盖了。
如果你确认你的文件只有你这个补丁用其实随便。

last.bat还有一个作用,就是你的设定与其他补丁有关系,比如某个补丁如果存在starisback就添加到开始菜单目录,没有就快捷方式创建到桌面。
那么这个逻辑应该在last.bat中写,你可以判断X:\Program Files下是否有starisback。如果在main.bat中的话。与你补丁的名字有关,比statisbak补丁下运行的话,此时X下面没有,但是last运行的时候,所有补丁的增加文件已经有了,可以判断。

其实互相影响的补丁比较少,只是设计上这么做了,尤其是一些修改dll的补丁,修改了,别的补丁又从install.Wim.解压原始文件覆盖了就麻烦了。
回复

使用道具 举报

1294#
发表于 2019-9-3 15:53:25 来自手机 | 只看该作者
        大概明白了。
        引用: 2、希望可以自己选择添加的选项,实现DIY控制内核大小。   本来就可以啊。新建一个"精简"文件夹,里面放一个main.html(内容“精简”), 然后放一个main.bat,里面可以写: del /f X:\Windows\Fonts\xxxx copy slim.ttf  X:\Windows\Fonts\simsun.ttf del / X:\Windows\System32\xxx.dll    为了保证追加功能顺利,暂时没有精简。
当时看到这个是在main.bat,然后又有个帖子推荐last.bat,所以有此疑问。
回复

使用道具 举报

1295#
发表于 2019-9-3 16:42:24 | 只看该作者
基础差,还在继续研究折腾,有没有大佬能给份做好其他软件集成的工程文件借鉴下的。
并非纯伸手党要文件,我只是想学习下怎么写里面的命令。
新手初学,大佬勿怪哈

点评

7-Zip和PENetwork的例子不够么?  发表于 2019-9-3 16:51
回复

使用道具 举报

1296#
 楼主| 发表于 2019-9-3 16:50:54 | 只看该作者
liuzhaoyzz 发表于 2019-9-3 08:25
后来,我发现,要想用好WIMBuilder2你必须具有以下能力:
1、一定的中文语言阅读能力,两个帖子 ...

整理的不错,个人觉得没有那么高的要求。
达到你说的要求的话,是可以制作新的Project的人。

如果只是想简单DIY一个PE,要求没那么高。

2、一定的英文语言阅读能力,否则满屏幕的英文会让你头晕,过了CET4最好。


基本英语是需要的。主要是配置选项和批处理命令,但是都是简单单词,
网页翻译即可。

3、半年以上的批处理编程能力、初级的html和js编程能力及阅读能力。


不做界面选项,简单的只写批出来main.bat就行。
copy, xcopy, del, reg命令。

5、学习新事物的能力,slore大神创建了很多宏命令以及具有特殊含义的标识符。


最常见的就是添加dll文件,和修改注册表。
有文件列表,找一个main.bat照猫画虎就好了。

要是不懂就问,已经尽力用简单的方式去处理了。比如根据不同版本添加文件:
+ver > 18960
gameinput.dll
+ver*

当然批处理水平好的话,直接去看lib\macros,
开头有使用说明。

全开源的,谁有新的语法设计,也可以改,或者给我说。

6、一年以上的深入windows底层了解部分文件和注册表的功能,了解PE的启动过程,否则无法继续精简。


简单DIY的话,通常就是补充第3方程序,和补充支持dll就行了。
你说这条,与WimBuilder2工具使用无关,而是你需要PE某个功能。
(手动添加可以,然后再将操作转化为批处理)

7、一定的耐心和求知欲,slore大神的wimbuilder2工程浩大,bat+cmd+vbs总行数: 20330行,总文件数: 544,弄懂十分之一即可。


lib目录下不用统计,我写好的宏直接用,自己不用写,
只看Projects\WIN10XPE下面的,bat应该代码不多。

看懂
MMC\DiskMgr.bat
00-Shell\Explorer\submain.bat
就可以了。

8、用代码代替所见即所得的操作的能力,比如复制和删除文件列表,用代码实现注册表文件导入导出。


需要,但是并不难吧。
copy, xcopy, del, reg命令 + for指令。

9、搞定老婆和熊孩子干扰的能力。


用git等工具管理你的工程的批处理脚本吧。
随时可以停手。建议安装VituralBox,添加一个win10虚拟机。修改完,可以一键构建,生成ISO, 启动镜像测试。。。
配合内存盘的话,1,2分钟构建测试一次。
(加快构建可以用已经构建的boot.wim,与外壳无关功能可以不要shell)
回复

使用道具 举报

1297#
发表于 2019-9-3 17:06:00 | 只看该作者
大佬能否开个基础讲解的帖子,比如命令案例什么的,这样我这种小白也好在帖子内学习,现在是不断翻各个楼层看大佬们的讨论,有些看迷糊了哈

点评

首页: 如何自己制作的功能补丁? 请参考 #315,#316,#317楼 说明 再看工程中的Apps,基本就够了,不用看 帖子回复。 搞不定,你把你想做的事情,拿出一个例子, 你做了什么,还有什么问题,发出来,我给  详情 回复 发表于 2019-9-3 17:12
回复

使用道具 举报

1298#
 楼主| 发表于 2019-9-3 17:09:21 | 只看该作者
liuzhaoyzz 发表于 2019-9-2 08:28
桌面没有创建快捷方式,应该是我忘了勾选软件哪一栏的原因。不好意思。是我对wimbuilde ...
您曾经说精简PE是个体力活,我看不是,是个有难度的技术活。


关于精简PE。
运行所有你想用的程序,查看Prefetch,确认访问过的dll。
不关闭的话,直接tasklist /m

然后,将有用的dll文件,按字母也好,按大小也好,
慢慢的一批一批的删除(改名),再测试各个功能,
没有问题的话,他们就可以del了。

另外自己可以看wim的目录大小。找大个文件来精简。

安全精简的几个,
中文字体,找2,3MB的可以替换,维护绝对够用。
imageres.dll,23MB啊,删除256x256的各种资源,可以精简到几MB。
还有其他的DLL。
Explorer不要了,换个TC,Q-Dir, Launcher,WinXShell。维护够用,几十MB就出来了。
驱动文件夹,默认都上百MB,留下磁盘和基本的,其他外置。
官方输入法别用,换个小小,真小还好用。几十MB又出来了。

不太依赖系统功能的话,大刀阔斧的砍就好了。
所以是体力活。

搞清楚某个系统功能依赖的注册表和最小文件才是技术活。

注册表精简,量力而行吧,主要看时间,看着65MB,压缩后就4MB。
用默认的才16MB~30MB吧,压缩下也就2,3MB。
精简不好问题还多,不如精简资源,字体,dll。
ieframe.dll(14MB)可以删除。虽然影响几个系统的功能,但是根本不主要。
俄罗斯的好像精简了资源到2MB。

还有,用英文,32位版本。。。直接瘦一圈。

点评

你指明了大方向,中文字体、imageres.dll(23MB)、ieframe.dll(14MB)、WinXShell、小小输入法,难度最大的可能还是system32和syswow64哪些。  详情 回复 发表于 2019-9-3 18:24
回复

使用道具 举报

1299#
 楼主| 发表于 2019-9-3 17:12:29 | 只看该作者
5603572 发表于 2019-9-3 17:06
大佬能否开个基础讲解的帖子,比如命令案例什么的,这样我这种小白也好在帖子内学习,现在是不断翻各个楼层 ...

首页:
如何自己制作的功能补丁?
请参考 #315,#316,#317楼 说明

再看工程中的Apps,基本就够了,不用看 帖子回复。

搞不定,你把你想做的事情,拿出一个例子,
你做了什么,还有什么问题,发出来,我给你指点下你就明白了。
回复

使用道具 举报

1300#
发表于 2019-9-3 17:31:21 | 只看该作者
本帖最后由 5603572 于 2019-9-3 17:58 编辑

谢谢大佬!
我从我的角度去描述下我的做法吧,大佬看下是我哪里有理解不对的
------------------------------------------------------
例子:我想把teamviewer14 加入到PE中,然后在桌面显示即可
因为我组件都选了FULL,我发现直接下载最新的便携版teamviewer可以直接启动
所以我想要的效果就是:
1. 封装ISO的时候把teamviewer便携版的压缩包解压到X盘
2. 在桌面加上快捷方式

我的做法:
1. 我在WimBuilder2-20190901\Projects\WIN10XPE\02-Apps 目录下建立了TeamViewer14文件夹
2. 复制了原7z目录里面的 main.bat  zh-CN.js  main.html 3个文件到TeamViewer14文件夹
已经能够在补丁的软件清单里看到teamviewer这个应用了



3. 然后我把TeamViewer.zip的压缩包放到路径:\WimBuilder2-20190901\vendor\TeamViewer14

4. 按我的理解,现在应该是修改main.bat文件,执行复制TeamViewer.zip到x盘,然后设置桌面快捷方式就好了
我的问题就是。。。。这个bat 我参考了7z和PENetwork的写法,这里就看不太懂了。

按照我的理解,我估计不会的地方就是:
1. WimBuilder2-20190901\Projects\WIN10XPE\02-Apps 目录下的main.bat 里面的批处理的写法不会
2. 我看到 \WimBuilder2-20190901\vendor\ 目录下有的程序目录里面也存在main.bat ,但是有的又没有,所以我这里看不太明白。

点评

这个简单,用好压制作exe自解压+创建快捷方式+删除自己,位置放在启动文件夹里就行,开机自己运行删除  发表于 2019-9-4 00:55
当你发现简单的V2X, 不可以解决的时候, 可以自行添加 main.bat, V2X会自动调用 vendor\xxxx\main.bat来实现 自定义动作... 你没这个需求的时候,不知道也可以.  详情 回复 发表于 2019-9-3 23:12
自己想做的事情是 1.把vendor\TeamViewer14\TeamViewer14.5.1691便携版.zip 解压到 X:\Program Files\TeamViewer14 2.然后对X:\Program Files\TeamViewer14\TeamViewer.exe创建桌面快捷方式 对于1,如果不清  详情 回复 发表于 2019-9-3 23:07
回复

使用道具 举报

1301#
发表于 2019-9-3 18:24:45 | 只看该作者
slore 发表于 2019-9-3 17:09
关于精简PE。
运行所有你想用的程序,查看Prefetch,确认访问过的dll。
不关闭的话,直接tasklist  ...

        你指明了大方向,中文字体、imageres.dll(23MB)、ieframe.dll(14MB)、WinXShell、小小输入法,难度最大的可能还是system32和syswow64哪些。

点评

Prefetch 预读文件, tasklist /m ,还有其他小个头的PE能运行你想要的软件, 的文件列表, 删除->测试->删除->...  发表于 2019-9-3 23:10
回复

使用道具 举报

1302#
 楼主| 发表于 2019-9-3 23:07:27 | 只看该作者
本帖最后由 slore 于 2019-9-3 23:08 编辑
5603572 发表于 2019-9-3 17:31
谢谢大佬!
我从我的角度去描述下我的做法吧,大佬看下是我哪里有理解不对的
-------------------------- ...

4. 按我的理解,现在应该是修改main.bat文件,执行复制TeamViewer.zip到x盘,然后设置桌面快捷方式就好了
我的问题就是。。。。这个bat 我参考了7z和PENetwork的写法,这里就看不太懂了。


自己想做的事情是
1.把vendor\TeamViewer14\TeamViewer14.5.1691便携版.zip 解压到 X:\Program Files\TeamViewer14
2.然后对X:\Program Files\TeamViewer14\TeamViewer.exe创建桌面快捷方式

对于1,如果不清楚WB2的宏命令, 如果自己想要批处理处理的话, 可以用7z.exe命令行,可以做到.

WimBuilder2提供了一个V2X的宏, 可以自动解压最新版本到X盘.
7-Zip和PENetwork, StartIsBack的main.bat都有.

  1. call V2X 7-Zip -Extract "7z*-%_Vx8664%.exe" "%X_PF%\7-Zip"

  2. call V2X PENetwork -extract "PENetwork%_V_x64%.7z" "%X_PF%\PENetwork"

  3. call V2X StartIsBack -extract StartIsBackPlusPlus_setup[v*].exe "%X_PF%\StartIsBack"
复制代码


所以你的第一个动作可以用1行代码搞定.

  1. call V2X TeamViewer14 -Extract "TeamViewer*便携版.zip" "%X_PF%\TeamViewer"
复制代码

  1. 参数说明:
  2. TeamViewer14 --- vendor下面的文件夹
  3. "TeamViewer*便携版.zip" --- 需要匹配的文件格式(dir /b)
  4. "%X_PF%\TeamViewer"  --- 解压路径, 你也可以写 "X:\Program Files\TeamViewer", X_PF是环境变量,能短些.
复制代码


对于2, 创建快捷方式, 就是在pecmd.ini中添加LINK命令.
WB2提供了一个LINK宏命令, 用于修改pecmd.ini添加LINK命令.

7-Zip的main.bat有.

  1. call Link "#pDesktop#p\7-zip" "#pProgramFiles#p\7-zip\7zFM.exe"
复制代码

感觉
call Link "%%Desktop%%\7-zip" "%%ProgramFiles%%\7-zip\7zFM.exe"
可能也可以吧, 但是避免解析了当前构建系统的环境变量, 所以 提供一些特殊字符的转义.[/code]

#p => percent 百分号 => %, 当然还有 引号 quote 可以用 #q 代替.


本身的功能是将:
LINK %Desktop%\7-zip %ProgramFiles%\7-zip\7zFM.exe
插入到pecmd.iniShortcuts过程中.

参照此行, 即可得到.
  1. call Link "#pDesktop#p\TeamViewer14" "#pProgramFiles#p\TeamViewer14\TeamViewer.exe"
复制代码


最终main.bat只有2行即可.
  1. call V2X TeamViewer14 -Extract "TeamViewer*便携版.zip" "%X_PF%\TeamViewer"
  2. call Link "#pDesktop#p\TeamViewer14" "#pProgramFiles#p\TeamViewer14\TeamViewer.exe"
复制代码



以后TeamViewer更新, 你不用修改任何代码, 把
TeamViewer14.8.1234便携版.zip 放到 vendor\TeamViewer14 目录即可.

点评

http://wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=411399&pid=3762767&fromuid=298214 317楼所说的pintool,固定到程序组和任务栏。 我看到vender里面有pintool工具,然后call X2X,然后cal  详情 回复 发表于 2019-9-4 10:36
非常感谢! 其实我也意识到应该只是2段代码解决事情,一段复制解压,一段设置桌面快捷方式。 我想反映的就是有时候对于我们不太懂的来说,需要的是一些简单例子的写法,然后有个对照就好 就类似于 你的这个  详情 回复 发表于 2019-9-4 09:39
回复

使用道具 举报

1303#
 楼主| 发表于 2019-9-3 23:12:17 | 只看该作者
5603572 发表于 2019-9-3 17:31
谢谢大佬!
我从我的角度去描述下我的做法吧,大佬看下是我哪里有理解不对的
-------------------------- ...
2. 我看到 \WimBuilder2-20190901\vendor\ 目录下有的程序目录里面也存在main.bat ,但是有的又没有,所以我这里看不太明白。


当你发现简单的V2X, 不可以解决的时候, 可以自行添加 main.bat, V2X会自动调用
vendor\xxxx\main.bat来实现 自定义动作...

你没这个需求的时候,不知道也可以.
回复

使用道具 举报

1304#
发表于 2019-9-3 23:59:25 | 只看该作者
系统喇叭都隐藏了,怎么可以恢复显示?

点评

默认勾选音频就会出。。。没隐藏。  发表于 2019-9-4 06:44
回复

使用道具 举报

1305#
发表于 2019-9-4 09:39:20 | 只看该作者
slore 发表于 2019-9-3 23:07
自己想做的事情是
1.把vendor\TeamViewer14\TeamViewer14.5.1691便携版.zip 解压到 X:\Program Fi ...

非常感谢!
其实我也意识到应该只是2段代码解决事情,一段复制解压,一段设置桌面快捷方式。
我想反映的就是有时候对于我们不太懂的来说,需要的是一些简单例子的写法,然后有个对照就好
就类似于
  1. 参数说明:
  2. TeamViewer14 --- vendor下面的文件夹
  3. "TeamViewer*便携版.zip" --- 需要匹配的文件格式(dir /b)
  4. "%X_PF%\TeamViewer"  --- 解压路径, 你也可以写 "X:\Program Files\TeamViewer", X_PF是环境变量,能短些.
复制代码


你的这个解释就让我很清楚了,而原来我参照7z的时候搞不清楚它是咋写的。
这个就是我这种新手可能面临的问题,希望大佬谅解

点评

好吧,我把这段说明回头写到7-Zip的main.bat中。  发表于 2019-9-4 12:32
回复

使用道具 举报

1306#
发表于 2019-9-4 09:43:42 | 只看该作者

强烈赞,期待一下
回复

使用道具 举报

1307#
发表于 2019-9-4 10:36:18 | 只看该作者
本帖最后由 liuzhaoyzz 于 2019-10-7 12:30 编辑
slore 发表于 2019-9-3 23:07
自己想做的事情是
1.把vendor\TeamViewer14\TeamViewer14.5.1691便携版.zip 解压到 X:\Program Fi ...


        
http://wuyou.net/forum.php?mod=r ... &fromuid=298214
317楼所说的pintool,固定到程序组和任务栏。
我看到vendor里面有pintool工具,然后call X2X,然后call X2X里面拷贝了X系列的文件夹,vendor里面的pintool如果勾选了,默认会被拷贝到windows\system32或者syswow64目录是吗?那就可以直接调用了吧。
那么自己做补丁的话,直接在last.bat里面调用pintool?怎么调用,请给个示例代码。
如果要把pintool命令放在pecmd.lua里面,那就比较麻烦,因为每次构建都要修改一次pecmd.lua,如果放在last.bat里面搞定添加到程序组和任务栏就好了。

call Link "#pDesktop#p\TeamViewer14" "#pProgramFiles#p\TeamViewer14\TeamViewer.exe"

link宏命令只能添加到桌面吧,添加到程序组只能用pintool是吗?

点评

link宏命令只能添加到桌面吧,添加到程序组只能用pintool是吗? LINK是创建快捷方式,第一个参数是快捷方式的路径,和文件名。 程序组也可以啊。你把Desktop改成Programs就好了。  详情 回复 发表于 2019-9-4 18:13
PinTool现在是pecmd.ini中最后定义的。没有宏命令自动添加修改。 但不是唯一的,LUA启动器的话,pecmd.lua中也有。 WinXShell.exe -luacode Taskbar:Pin('cmd.exe') 后续会自动添加到Startup/下面Pin.lua,启  详情 回复 发表于 2019-9-4 11:59
回复

使用道具 举报

1308#
 楼主| 发表于 2019-9-4 11:59:35 | 只看该作者
liuzhaoyzz 发表于 2019-9-4 10:36
http://wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=411399&pid=3762767&fromuid= ...

PinTool现在是pecmd.ini中最后定义的。没有宏命令自动添加修改。
但不是唯一的,LUA启动器的话,pecmd.lua中也有。

WinXShell.exe -luacode Taskbar:Pin('cmd.exe')

后续会自动添加到Startup/下面Pin.lua,启动的时候WinXShell去执行就好了。

开始菜单上的Pin测试好了,就加个PIN的宏命令。

不过,最终形态是,APPs下面的对象可以自动生成界面菜单,是否创建快捷方式,是否Pin只是界面选择就好,不用自己写代码。

点评

WOW64  发表于 2019-9-4 12:34
这个不是APP中复制,是启动管理的main.bat,如果是pecmd模式,会复制PinTool。具体路径忘了。有32位,64位的,一般不会需要WOW63  发表于 2019-9-4 12:34
回复

使用道具 举报

1309#
发表于 2019-9-4 14:39:41 来自手机 | 只看该作者
支持支持
回复

使用道具 举报

1310#
发表于 2019-9-4 16:14:35 | 只看该作者
本帖最后由 liuzhaoyzz 于 2019-10-7 13:01 编辑

        
接触到的东西越多,就越来越糊涂。。。
1、
但不是唯一的,LUA启动器的话,pecmd.lua中也有。
WinXShell.exe -luacode Taskbar:Pin('cmd.exe')

如果选择LUA作为启动器的话,是不是就是用WINXshell调用并解释执行pecmd.lua?
lua不是需要解释器lua.exe的吗?这个解释器是什么?解释器不依赖于pecmd.exe了吧?是不是依赖于winxshell内嵌的解释器?

2、我在pecmd.lua里面看到:
  1. local function PostShell()
  2.   WaitShell()
  3.   sui:hide()
  4.   File.delete('%HOMEPROFILE%\\Desktop\\desktop.ini')
  5.   File.delete('%HOMEPROFILE%\\Desktop\\shutdown.bat') -- no need this file if there is WinXShell.exe's UI_Shutdown
  6.   exec('/wait /hide', 'cmd.exe /c del /q "%APPDATA%\\Microsoft\\Internet Explorer\\Quick Launch\\User Pinned\\TaskBar\\*.lnk"')
  7.   Taskbar:Pin('%ProgramFiles%\\WinXShell\\WinXShell.exe', 'UI_Shutdown', '-ui -jcfg wxsUI\\UI_Shutdown.zip\\full.jcfg -blur 5', 'shell32.dll', 27)
  8.   Taskbar:Pin('Explorer.exe')
  9.   Taskbar:Pin('cmd.exe')
  10.   Startmenu:Pin('notepad.exe')
  11.   exec('/hide', 'cmd.exe /c ' .. script_path .. '\\Autoruns\\Runner.bat Startup')
  12. end
复制代码

上面的代码Taskbar:Pin和Startmenu:Pin是在pecmd.lua里面实现固定到程序和开始菜单的,那么在目前部分宏命令没实现的情况下,能否在last.bat里面搞定添加到程序组和任务栏?这个pin和pintool不是一回事吧?


3、
WinXShell.exe -luacode Taskbar:Pin('cmd.exe')

你给的这个代码放在哪里?是放在pecmd.lua的local function PostShell()这个函数里面?那不是每次都要改这个代码?
如果补丁不能和pecmd.lua分离开来,本来是这个补丁包里面的东西,又牵涉到pecmd.lua这个通用解释器,有点纠缠不清,不符合“分治”的思想。


4、
  1. last.bat
  2. rem 复制对应位数的EXE到系统System32目录
  3. call X2X %WB_PE_ARCH%

  4. rem 利用TextReplace宏更新pecmd.ini(!没提供转义导致被变量扩展了,暂时替换2遍)
  5. call TextReplace "%X_SYS%\pecmd.ini" "#// EXEC !#pWinDir#p\System32\FixScreen.exe" "EXEC #pWinDir#p\System32\FixScreen.exe"
  6. call TextReplace "%X_SYS%\pecmd.ini" "#// EXEC #pWinDir#p\System32\FixScreen.exe" "EXEC !#pWinDir#p\System32\FixScreen.exe"

  7. call TextReplace "%X_SYS%\pecmd.ini" "#// EXEC #pWinDir#p\System32\PinTool.exe" "EXEC #pWinDir#p\System32\PinTool.exe"
复制代码

317楼,上面的例子是放在last.bat里面的,可是只看到pintool调用,没看到是指向哪个程序的,上面的例子是指向FixScreen.exe?没看到pintool的指向性参数啊?那每个补丁里面如果想要添加到开始菜单或者固定到任务栏,必须都放一个pintool.exe?vendor里面不是有了吗,不是已经x2x拷贝到x:\windows\system32里面了吗?vendor不是所有程序可共享的吗?

5、另外,pintool是否搭配的是explorer.exe作为shell使用,如果winxshell作为shell使用,pintool是否有效?


点评

1.是的 WinXShell.exe调用pecmd.lua。 标准的话是lua.exe但是原版lua功能比较简单,WinXShell有很多操作系统的功能,修改壁纸,设置音量,连接wifi,改变分辨率,所以把lua编译到WinXShell中了。lua功能虽然少,  详情 回复 发表于 2019-9-4 17:20
[attachimg]400209[/attachimg] 手机不是很方便。你先看,这4个文件你是否可以理解。 回头编辑。  详情 回复 发表于 2019-9-4 16:41
回复

使用道具 举报

1311#
 楼主| 发表于 2019-9-4 16:41:37 | 只看该作者
liuzhaoyzz 发表于 2019-9-4 16:14
接触到的东西越多,就越来越糊涂。。。
1、
如果选择LUA作为启动器的话,是不是就是用WINXshel ...



手机不是很方便。你先看,这4个文件你是否可以理解。
回头编辑。
回复

使用道具 举报

1312#
发表于 2019-9-4 16:54:22 | 只看该作者
本帖最后由 liuzhaoyzz 于 2019-9-4 17:26 编辑

        大概可以理解,这是你即将实现的宏命令吧?即将实现的宏命令是否可用于LUA、pecmd、startnet.cmd这几种启动器?
        另外,main.bat不是主要用来拷贝文件的吗?固定到开始菜单和任务栏是不是感觉放到last.bat里面更合适?先拷贝文件,再创建快捷方式?

点评

现在LINK命令是,分别去修改pecmd.ini或者pecmd.lua,所以 started.cmd启动模式不支持。 所以我打算提取出来,统一用Shortcuts.lua,以后LINK命令直接写到这个文件,PreShell的阶段调用shortcuts.lua就所有都可  详情 回复 发表于 2019-9-4 17:07
回复

使用道具 举报

1313#
 楼主| 发表于 2019-9-4 17:07:33 | 只看该作者
本帖最后由 slore 于 2019-9-4 17:10 编辑
liuzhaoyzz 发表于 2019-9-4 16:54
大概可以理解,这是你即将实现的宏命令吧?即将实现的宏命令是否可用于LUA、pecmd、startcmd这几种 ...


现在LINK命令是,分别去修改pecmd.ini或者pecmd.lua,所以
started.cmd启动模式不支持。

所以我打算提取出来,统一用Shortcuts.lua,以后LINK命令直接写到这个文件,PreShell的阶段调用shortcuts.lua就所有都可以用。

同样的,我上面的例子,Pin.lua就是任何启动管理器都可以用。

>>向lua文件中追加,没人删除这个文件,就不用单独建立一个last.bat。分开也可以。不是那么严格的。哪怕你把main.bat都写到last.bat也可以。
你都写main.bat发现被覆盖,或者不稳定时,才考虑用last.bat。没必要特别区分。
回复

使用道具 举报

1314#
发表于 2019-9-4 17:17:35 | 只看该作者
我测试在\WimBuilder2-20190901\Projects\WIN10XPE\02-Apps\TeamViewer14 目录下
创建main.bat文件,直接写入2段指令:
  1. call V2X TeamViewer14 -Extract "TeamViewer*便携版.zip" "%X_PF%\TeamViewer"
  2. call Link "#Desktop#\TeamViewer14" "#ProgramFiles#\TeamViewer14\TeamViewer.exe"
复制代码

发现目录是已经能够成功复制到目录下,但是快捷方式没创建成功,是不是复制解压的指令和创建快捷方式的指令不能同时运行?
难道是我需要在\WimBuilder2-20190901\Projects\WIN10XPE\02-Apps\TeamViewer14 目录下的配置文件
分成2个文件, main.bat 内放第一段指令,last.bat 放第二段指令?

点评

额,还是 liuzhaoyzz大佬说的对,原因就是我的路径写错了,不好意思哈!  发表于 2019-9-4 18:00
call Link "#Desktop#\TeamViewer14" "#ProgramFiles#\TeamViewer\TeamViewer14.exe"这样子吧?你检查并修改下路径指向撒。  发表于 2019-9-4 17:32
回复

使用道具 举报

1315#
发表于 2019-9-4 17:20:02 | 只看该作者
本帖最后由 liuzhaoyzz 于 2019-9-4 17:27 编辑

        wimbuilder2的架构是非常好、很强大灵活的模块化设计,各个补丁包基本相互可以独立,用户侧弄懂架构和模块之后,可以象搭积木那样子,一个个功能组合起来就是一个PE,不需要再手工解压缩、挂载、修改注册表、删文件、重新打包等等一系列的繁琐的所见即所得的操作,全部用代码来实现,源代码全公开,解决思路全公开,这是自由软件的精髓所在!大家接受这个理念之后,分享出补丁软件包,分享出精简方案补丁,可定制性很强。
        现在的LINK宏命令已经实现了分治的思想,是否用Shortcuts.lua,这应该是远景的事情吧,startnet.cmd很少人用吧,现阶段可能90%的人用的都是pecmd.exe。
        等您有空的时候,希望对1312楼逐条、逐语句做个详细解释,谢谢!
回复

使用道具 举报

1316#
 楼主| 发表于 2019-9-4 17:20:59 | 只看该作者
本帖最后由 slore 于 2019-9-4 18:09 编辑
liuzhaoyzz 发表于 2019-9-4 16:14
接触到的东西越多,就越来越糊涂。。。
1、
如果选择LUA作为启动器的话,是不是就是用WINXshel ...


1.是的 WinXShell.exe调用pecmd.lua。

标准的话是lua.exe但是原版lua功能比较简单,WinXShell有很多操作系统的功能,修改壁纸,设置音量,连接wifi,改变分辨率,所以把lua编译到WinXShell中了。lua功能虽然少,但是它的脚本语法是完全的,支持函数,支持嵌套,标准的变量声明,循环等。
开源,完整的脚本解释器。

当然你也可以自己扩展,按照lua标准编译自己的扩展dll,放到winxshell的lua_helper中,直接也可以用。


2.这个Pin是WinXShell自己实现的,lua的语法更自然,自己也可以随意修改。还可以缺省路径。

PinTool是单独的exe,支持ini文件,你看pecmd.ini最后的内容。要写文件,格式还有一堆竖线,必须带个数字。。。不好用,但是pecmd的PINT命令没人维护,所以至少能用就保留了。喜欢PECMD.exe的人继续吧。

Taskbar:Pin和Startmenu:Pin你启动的时候调用就可以。
没有我宏,你可以参考link宏,直接TxtReplace命令修改pecmd.ini。


3.你手动修改PostShell()自然没分治,动起脑筋把手动操作变成代码就会分治。现在的LINK都是在PreShell的CustomShorts下面,但是LINK宏命令是分治。

Pin宏
把要Pin的程序路径,插入到PostShell中。

各各应用程序的main自己调用Pin宏,就分治了。


4. 关于Pintool。
Pecmd.ini中有一行调用,用pintool解析pecmd.ini自身。
fixscreen与这个无关。就是这个模块在,pecmd.ini就调用,不在就注释掉。

不用各个应用程序目录放pintool,各个应用程序自己修改pecmd.ini最后的文本即可。


5. WinXShell不支持Pin。实际上是以前XP时代的Quick Launch文件夹下创建快捷方式。

WinXShlul的Taskbar:Pin后续会自动识别是explorer还是winxshell做对应的Pin操作。其他程序估计不会考虑WinXShell所以只能自己实现了。不过创建快捷方式已经实现了,没放到Taskbar中而已。
回复

使用道具 举报

1317#
 楼主| 发表于 2019-9-4 18:13:15 | 只看该作者
liuzhaoyzz 发表于 2019-9-4 10:36
http://wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=411399&pid=3762767&fromuid= ...

link宏命令只能添加到桌面吧,添加到程序组只能用pintool是吗?

LINK是创建快捷方式,第一个参数是快捷方式的路径,和文件名。
程序组也可以啊。你把Desktop改成Programs就好了。
回复

使用道具 举报

1318#
发表于 2019-9-4 18:50:45 | 只看该作者
本帖最后由 5603572 于 2019-9-4 20:15 编辑

请教下大佬,我从其他PE提取了网卡的驱动 Netdrive.dll ,我要怎样把这个它的驱动加载到PE内?

我想到的逻辑是:
建立main.bat将驱动从02-APP复制到 X_PF目录:
  1. call X2X WIFI -Extract "Netdrive.dll" "%X_PF%"
复制代码


然后修改 \Projects\WIN10XPE\_CustomFiles_\PEMaterial 目录下的PECMD.INI ,加上一段命令
  1. exec =!7z.exe x "X:\Program Files\Netdrive.dll" -o"%SystemRoot%\system32"
复制代码



但是我这样测试好像不成功额。。

点评

-Extract的话, 会自动调用7z解压到X:\Program Files下面了. 如果你只是想复制到PE, 直接: copy /y "%V%\WIFI\netdrive.dll" "%X_SYS%\" 你就一个工程, 而且没有版本依赖的话, 你就放到: 00-Apps\MyTool\  详情 回复 发表于 2019-9-4 22:49
回复

使用道具 举报

1319#
发表于 2019-9-4 18:53:52 来自手机 | 只看该作者
本帖最后由 liuzhaoyzz 于 2019-9-4 19:09 编辑

        这样子说来,是不是更加推荐LUA启动器+explorer.exe作为shell?现阶段,从固定到任务栏这个小角度来说,pintool,pecmd的pint,winxshell的pin对于explorer.exe支持较好,pintool和pecmd的pint都需要pecmd.exe的支持才能解析,是不是可以认为lua启动器+winxshell的pin+explorer.exe作为shell这个组合更好,winshell的pin简单易懂,然后winxshell去hook windows的API并修复托盘区的那些问题等等。
       Pin宏
把要Pin的程序路径,插入到PostShell中。

各个应用程序的main自己调用Pin宏,就分治了。

这个还是等你以后改吧,或者你给个示例,我看来还是直接搞postshell()这个函数直接,其他的搞不懂。固定到任务栏也不什么大事,可以忽略。

点评

Lua可以单独用和pecmd一起,和单独纯LUA启动器没啥区别。只是你要不到带WinXShell.exe。不带就只能选pintool  发表于 2019-9-4 19:30
之前图片就是完整代码。。。Pin.bat有点错,要写pin.lua的完整路径。  发表于 2019-9-4 19:28
回复

使用道具 举报

1320#
 楼主| 发表于 2019-9-4 22:49:54 | 只看该作者
本帖最后由 slore 于 2019-9-4 23:02 编辑
5603572 发表于 2019-9-4 18:50
请教下大佬,我从其他PE提取了网卡的驱动 Netdrive.dll ,我要怎样把这个它的驱动加载到PE内?

我想到的 ...


-Extract的话, 会自动调用7z解压到X:\Program Files下面了.

如果你只是想复制到PE, 直接:
copy /y "%V%\WIFI\netdrive.dll" "%X_SYS%\"

你就一个工程, 而且没有版本依赖的话, 你就放到:
00-Apps\MyTool\
    main.bat
    main.html
    netdrive.dll

main.bat 直接 copy /y netdrive.dll "%X_PF%\"

===============================================
如果你是想把vendor\WIFI\Netdrive.dll 复制到 X:\Program Files\下面,

call V2X WIFI -Copy Netdrive.dll "%X_PF%"


不要用解压(-Extract), 直接用复制(-Copy)即可.
===============================================

还有更简单的方法....
放到:
Projects\WIN10XPE\X\
     \Program Files\Netdrive.dll

或者在Projects\WIN10XPE下面自己建立一个 X_PF文件夹, 把Netdrive.dll放进去, 不用写代码.

Projects\WIN10XPE\X_PF\Netdrive.dll
===============================================
推荐制作独立补丁的方法:
02-Apps\
     网卡驱动\
        X_PF\
             Netdrive.dll
        main.html (啥也不用写)
        main.bat

main.bat
  1. call X2X
  2. echo "X:\Program Files\7-Zip\7z.exe" x "X:\Program Files\Netdrive.dll" -o"X:\Windows\System32" >> "%X_OSInit%\ExtractWifiDrivers.bat"
复制代码


===============================================
条条大路通罗马, 自己选择合适的方法吧.

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-7-2 14:18

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表