大家好。
我想创建一个带有一些自定义的 Windows 安装程序
1 - 我想知道一个生成已经包含配置的 .ini 文件的脚本
示例:使用我键入的名称创建一个新的 .ini 文件,其中包含
[建立][姓名]
2 - 我想知道一个与 unattend.xml 链接的脚本
示例:当我输入用户名、密码和组时更改用户、密码和组 xml 文件所以我可以使用我的自定义安装 Windows例如,有 WinNTSetup
如果难以理解,请原谅我的翻译
创建INI文件或者XML文件都可以使用PECMD的WRIT命令,例如:
WRIT C:\setup.ini,+0,[setup] WRIT C:\setup.ini,+0,file=abc WRIT C:\setup.ini,+0,[name] WRIT C:\setup.ini,+0,username=123
创建XML文件时,也是用一样的方法去逐行写入文本。
PECMD提供了一个读取INI文件的方法文件:
_SUB READINI // [-f filename[=%READINI_STORE%]] [-ret UsrRetName] TAG NAME [DEF_VAL] SET &I=1 FIND $%~1=-f, TEAM CALC #&I=%&I%+2| SET &READINI_STORE=%~2 MSTR &&V,&&Vi=<~%I%*>%* SET &RetName= FIND $%&&V%=-ret, TEAM CALC #&I=%&I%+2| SET RetName=%&Vi% FIND $%&READINI_STORE%=,EXIT _SUB //参数错误 SET &V= MSTR &&TAG,&&NM,&&V=<~%&I%*>%* FIND $[ '%&&TAG%'='' | ''='%&&NM%' ], EXIT _SUB //参数错误 FIND $%&RetName%=, SET RetName=%&NM% STRL &len=%NM%= CALC #&&off=%&len%+1 SET &fnd=0 READ %&READINI_STORE%,*,&&VS FORX *NL &&VS,&&Vi, { @FIND $%&Vi%=[%&TAG%], TEAM SET fnd=1| EXIT - @MSTR * &&c1=1,1,&Vi @FIND $%&&c1%=[, TEAM SET fnd=0| EXIT - @MSTR * &&c1=1,%&len%,&Vi @IFEX #[ %&fnd%=1 & '%&&c1%'='%&NM%=' ],TEAM SET fnd=2| MSTR &V=%&off%,0,%&Vi%| EXIT FORX } ENVI-ret %&RetName%=%&&V% _END SET &V=error READINI -f A.INI -ret &&V setup name "(null)" MESS. [setup]:name=[%&&V%] SET &name=error READINI -f A.INI setup name "(null)" MESS. [setup]:name=[%name%] SET &title=error @TEAM SET &READINI_STORE=A.INI READINI setup title "(null)" MESS. [setup]:title=[%title%] SET &V=error READINI -ret &&V setup title "(null)" MESS. [setup]:title=[%&&V%]
希望能帮助到你😃
caocaofff 创建INI文件或者XML文件都可以使用PECMD的WRIT命令,例如: WRIT C:\setup.ini,+0,[setup] WRIT C:\setup.ini,+0,file=abc WR ...
非常感谢,对我帮助很大
有没有办法进入 EDIT1 并让它自动出现在 EDIT2 中?
我知道如果我使用 ENVI @EDIT2=%EDIT1% 它会完成这个过程,但是为了让它工作我必须按 Enter
我想知道是否有一种方法可以在不按 Enter 的情况下自动执行此操作
例子:如果我在EDIT1中输入(HELLO),它会自动出现在EDIT2中,如果我删除我在EDIT1中写的内容,它会自动删除EDIT2
并使其禁止输入特殊字符
keketoco00 有没有办法进入 EDIT1 并让它自动出现在 EDIT2 中? 我知道如果我使用 ENVI @EDIT2=%EDIT1% 它会完成这个过程,但是为了让它工作我必须按 Ente ...
看了帮助文档,edit控件的事件触发方式只能是按回车键或双击,所以这个问题需要问问pecmd的开发者是否有解决的办法
我懂了
是否可以按住回车键? 也许它像这个例子一样工作:SEND #13_
keketoco00 我懂了 是否可以按住回车键? 也许它像这个例子一样工作:SEND #13_
你可能仍然需要通过其他方式来触发操作
ENVI EN_CHANGE=0x0300
CALL @WIN1
_SUB WIN1,W354H309,
edit Edit1,L10T10W275H70,,,
edit Edit2,L10T82W275H70,,,
ENVI @Edit1.ID=?;ID1
ENVI @this.MSG=_COMMAND#%ID1%#%EN_CHANGE%::wp,lp, envi @Edit2=%Edit1%
_END
527104427 ENVI EN_CHANGE=0x0300 CALL @WIN1 _SUB WIN1,W354H309, edit Edit1,L10T10W275H70,,, edit Ed ...
非常感谢 caocaofff
这正是我想要的
纸币 1000
keketoco00 非常感谢 caocaofff 这正是我想要的 纸币 1000
哈哈哈,请问是人民币吗?
顺便说一下,我可不是草草坛主哦
527104427 哈哈哈,请问是人民币吗? 顺便说一下,我可不是草草坛主哦
哈哈哈,5大一出手就解决了👍
改天加个打赏积分的功能
caocaofff 哈哈哈,5大一出手就解决了👍 改天加个打赏积分的功能
再看看我 caocaofff
我还需要你的帮助一次
1 - 我想将 index:name:windows 版本放入 LIST1
例子:https://ibb.co/8XdJm67
2 - 我需要使用 FILE 命令将 unattend.xml 发送到 \Panther\ 文件夹
3 - 我希望磁盘卷出现在 LABE1 Volume: Name: MBR\UEFI: Windows Installation: How many GB is the disk
例子:https://ibb.co/Jnt3DgX
我试着自己做,但没有结果。
所以我的帮助是你
keketoco00 再看看我 caocaofff 我还需要你的帮助一次 1 - 我想将 index:name:windows 版本放入 LIST1 例子:https://ibb.co/8XdJm67 ...
1、先使用第三方命令获取WIM映像文件信息,例如:
.\wimlib-imagex.exe info D:\install.wim
然后对输出的内容进行筛选,加入LIST控件
2、可以看FILE命令的示例
FILE x:\unattend.xml=>x:\Panther
3、也需要先获取磁盘分区相关信息,然后将信息使用ENVI命令输出到LABE控件
=================
以上具体的命令比较复杂😰,建议参考CGI源码
非常感谢
我将审查 CGI 源代码
关于#2,我想将 unattend.xml 导入到我正在安装的 Windows 的 \Panther 文件夹中
该示例包含来自 install(VHD).wcs 的代码
_Sub add_auto
找到#%chk_auto.check%=1,
{
发送。 mess3=%ext_mess2% \n 导入独立脚本 ...
发送 @ext_mess2=%mess3%
ifex "%Edit_auto%",
ifex %1\windows\Panther\unattend.xml,文件-force -q %1\windows\Panther\unattend.xml >> %1\windows\Panther\unattend.xml.old
file -force -q "%Edit_auto%" => %1\windows\Panther\unattend.xml
}
_结尾
但我不知道如何让它适应我的
keketoco00 非常感谢 我将审查 CGI 源代码 关于#2,我想将 unattend.xml 导入到我正在安装的 Windows 的 \Panther 文件夹中 该示例包含来自 install(V ...
这段代码的含义是:勾选chk_auto控件后,在释放WIM文件后,会对目标Windows\Panther目录下的unattend.xml先重命名,然后覆盖新的文件。
你也可以添加一个勾选框,然后使用类似的代码
pecmd能按浏览器看到的格式显示xml文件吗
123 pecmd能按浏览器看到的格式显示xml文件吗
不能吧😟
你好,caocaofff,你好吗?我尝试进行搜索,但没有成功,这些代码对于像我这样的业余爱好者来说很复杂,你能给我解释一下这个退出代码吗?我调用代码后 第三,如何发送到LIST和LABE?另一件事,关于 FILE 我想发送 .xml 文件以进行自动格式化,例如 WinNTSetup,事实上我正在尝试构建一个像 WinNTSetup 这样的程序
caocaofff 1、先使用第三方命令获取WIM映像文件信息,例如: .\wimlib-imagex.exe info D:\install.wim 然后对输出的内容进行筛选,加入LIST控件 2、可以看FI ...
.
keketoco00 你好,caocaofff,你好吗?我尝试进行搜索,但没有成功,这些代码对于像我这样的业余爱好者来说很复杂,你能给我解释一下这个退出代码吗?我调用代码后 第三,如何发送到LIST和LABE?另一件事,关 ...
1、如果你希望将某内容显示到LABE或者LIST控件,则应该先获取这个内容为变量形式,例如&&Text,然后将这个变量显示到指定的控件上
//调用wimlib-imagex读取wim文件信息,当前实例表示读取d:\3\install.wim的第1卷,只读取前4行,赋值给PE变量&&text EXEC*4 &&text=d:\3\wimlib-imagex info d:\3\install.wim 1 //读取最后一行,保存为变量&line READ -,0,&line,%&text% //从变量&line中读取第2个值(按空格为分段) MSTR &name=<2>%&line% //此时&name的值就是第1卷的卷名,可以将这个值添加到LIST控件的下拉框中(假设LIST控件名是List1) ENVI @List1=+%&name%
2、我没找到合适的第三方程序来操作xml文件(例如XMLStarlet),所以只能使用PECMD的WRIT命令对unattend.xml进行操作(重新写某行文本),例如:
WRIT %_CD%\unattend.xml,7,<UILanguage>zh-CN</UILanguage>
caocaofff 1、如果你希望将某内容显示到LABE或者LIST控件,则应该先获取这个内容为变量形式,例如&&Text,然后将这个变量显示到指定的控件上 //调用wimlib-ima ...
https://ibb.co/bm7Trcs
这是正确的方法吗?
做1合1
要获取磁盘信息,我应该使用diskpart吗?
keketoco00 https://ibb.co/bm7Trcs 这是正确的方法吗? 做1合1 要获取磁盘信息,我应该使用diskpart吗?
很棒的代码!
获取磁盘信息可以使用pecmd的disk和part命令
caocaofff 很棒的代码! 获取磁盘信息可以使用pecmd的disk和part命令
谢谢,我发送给您的此命令的问题之一是如何仅将 INDEX 发送到 Winlib Apply 命令,因为此命令列出了 INDEX 以及显示名称 我正在尝试解决这个问题,PART 和 DISK 是下一步 谢谢,我快到了,非常感激