找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 2672|回复: 9

用nant完成批处理和PE制作任务。

[复制链接]
发表于 2007-9-14 09:31:21 | 显示全部楼层 |阅读模式
这是一个我的扩展,还没完全好。
<?xml version="1.0"?>
<project name="PicoXp" default="mkiso">
<property name="InstSourceDir" value="h:\xpsp2\" />
<property name="prjini" value="picoxp.ini" />
<property name="OS" value="XP" />
<property name="SP" value="SP2" />

<target name="BuildPjinfo">
  
</target>

<target name="mkdirs">
  <mkdir dir="Iso" fail />
  <mkdir dir="PicoXP" fail />
  <mkdir dir="PicoXP\I386" fail />
  <mkdir dir="PicoXP\I386\Fonts" fail />
  <mkdir dir="PicoXP\I386\Inf" fail />
  <mkdir dir="PicoXP\I386\System32" fail />
  <mkdir dir="PicoXP\I386\System32\config" fail />
  <mkdir dir="PicoXP\I386\System32\drivers" fail />
</target>

<target name="mkhive">
  <copy file="src\emptyhive" tofile="picoxp\I386\system32\config\default" overwrite="true" />
  <copy file="src\emptyhive" tofile="picoxp\I386\system32\config\sam" overwrite="true" />
  <copy file="src\emptyhive" tofile="picoxp\I386\system32\config\security" overwrite="true" />
  <copy file="src\emptyhive" tofile="picoxp\I386\system32\config\software" overwrite="true" />
  <copy file="src\emptyhive" tofile="picoxp\I386\system32\setupreg.hiv" overwrite="true" />
  <regloadhive subkey="spe_default" file="picoxp\I386\system32\config\default" />
   <exec program="regedit.exe" commandline=" /s src\default.reg" />
     <regunloadhive subkey="spe_default" />
     <regloadhive subkey="spe_software" file="picoxp\I386\system32\config\software" />
      <exec program="regedit.exe" commandline=" /s src\software.reg" />
     <regunloadhive subkey="spe_software" />
     <regloadhive subkey="spe_setup" file="picoxp\I386\system32\setupreg.hiv" />
      <exec program="regedit.exe" commandline=" /s src\setuphiv.reg" />
     <regunloadhive subkey="spe_setup" />
     
     <copy file="src\config\default" tofile="picoxp\I386\system32\config\default" overwrite="true" />
  <copy file="src\config\sam" tofile="picoxp\I386\system32\config\sam" overwrite="true" />
  <copy file="src\config\security" tofile="picoxp\I386\system32\config\security" overwrite="true" />
  <copy file="src\config\software" tofile="picoxp\I386\system32\config\software" overwrite="true" />
  <copy file="src\config\setupreg.hiv" tofile="picoxp\I386\system32\setupreg.hiv" overwrite="true" />
</target>

<target name="mkfiles">
  <copy todir="picoxp\I386" overwrite="true">
   <fileset basedir="${InstSourceDir}\I386">
    <include name="NTDETECT.COM" />
    <include name="SETUPLDR.BIN" />
   </fileset>
  </copy>
  <copy todir="picoxp\I386\system32" overwrite="true">
   <fileset basedir="${InstSourceDir}\I386">
    <include name="BIOSINFO.INF" />
    <include name="BOOTVID.DL_" />
    <include name="HAL.DL_" />
    <include name="HALAACPI.DL_" />
    <include name="HALACPI.DL_" />
    <include name="HALAPIC.DL_" />
    <include name="HALAPIC.DL" />
    <include name="HALMACPI.DL_" />
    <include name="HALMPS.DL_" />
   </fileset>
  </copy>
  
  <if test="${OS=='XP'}" >
   <copy todir="picoxp\I386\system32" overwrite="true">
    <fileset basedir="${InstSourceDir}\I386">
     <include name="HALSP.DL_" />
    </fileset>
   </copy>
  </if>
  
  <copy todir="picoxp\I386\system32" overwrite="true">
   <fileset basedir="${InstSourceDir}\I386">
    <include name="IMAGEHLP.DLL" />
    <include name="NTDLL.DLL" />
    <include name="NTOSKRNL.EX_" />
   </fileset>
  </copy>
  
  <expand dstdir="picoxp\I386\system32" >
      <fileset basedir="${InstSourceDir}\I386">
       <include name="ADVAPI32.DL_" />
       <include name="AUTHZ.DL_" />
       <include name="BASESRV.DL_" />
       <include name="CMD.EX_" />
       <include name="CRYPT32.DL_" />
       <include name="CRYPTDLL.DL_" />
       <include name="CSRSRV.DL_" />
       <include name="CSRSS.EX_" />
       <include name="CTYPE.NL_" />
       <include name="DESK.CP_" />
       <include name="DNSAPI.DL_" />
       <include name="FRAMEBUF.DL_" />
       <include name="GDI32.DL_" />
       <include name="KERNEL32.DL_" />
       <include name="LOCALE.NL_" />
       <include name="L_INTL.NL_" />
       <include name="MPR.DL_" />
       <include name="MSASN1.DL_" />
       <include name="MSPRIVS.DL_" />
       <include name="MSVCRT.DL_" />
       <include name="NDDEAPI.DL_" />
       <include name="NETAPI32.DL_" />
       <include name="NTDSAPI.DL_" />
      </fileset>
     </expand>
     
     <if test="${OS=='XP'}" >
      <if test="${SP=='SP1'}" >
       <expand file="${InstSourceDir}\I386\NTKRNLMP.EX_" dstdir="picoxp\I386\system32" />
      </if>
  </if>     
  
     <expand dstdir="picoxp\I386\system32" >
      <fileset basedir="${InstSourceDir}\I386">
       <include name="PROFMAP.DL_" />
       <include name="PSAPI.DL_" />
       <include name="REGAPI.DL_" />
       <include name="RPCRT4.DL_" />
       <include name="SAMLIB.DL_" />
       <include name="SAMSRV.DL_" />
       <include name="SCESRV.DL_" />
       <include name="SECUR32.DL_" />
       <include name="SETUPAPI.DL_" />
       <include name="shell32.DL_" />
       <include name="SMSS.EX_" />
       <include name="SORTKEY.NL_" />
       <include name="SORTTBLS.NL_" />
       <include name="SXS.DL_" />
       <include name="UNICODE.NL_" />
       <include name="UNTFS.DL_" />
    <include name="USER32.DL_" />
    <include name="USERENV.DL_" />
    <include name="VERSION.DL_" />
    <include name="VGA.DL_" />
    <include name="VGA850.FO_" />
    <include name="VGAOEM.FO_" />
      </fileset>
     </expand>
     
     <if test="${OS=='XP'}" >
      <expand file="${InstSourceDir}\I386\WATCHDOG.SY_" dstdir="picoxp\I386\system32" />
     </if>
     
     <expand dstdir="picoxp\I386\system32" >
      <fileset basedir="${InstSourceDir}\I386">
    <include name="WIN32K.SY_" />
    <include name="WINLOGON.EX_" />
    <include name="WINMM.DL_" />
    <include name="WINSRV.DL_" />
    <include name="WINSTA.DL_" />
    <include name="WINTRUST.DL_" />
    <include name="WS2HELP.DL_" />
    <include name="WS2_32.DL_" />
      </fileset>
     </expand>
     
     <copy todir="picoxp\I386\system32\drivers" overwrite="true">
   <fileset basedir="${InstSourceDir}\I386">
    <include name="ACPI.SY_" />
    <include name="ACPIEC.SY_" />
    <include name="ALIIDE.SY_" />
    <include name="ATAPI.SY_" />
    <include name="CDFS.SY_" />
    <include name="CDROM.SY_" />
    <include name="CMDIDE.SY_" />
    <include name="FDC.SY_" />
    <include name="DISK.SY_" />
    <include name="DMBOOT.SY_" />
    <include name="DMIO.SY_" />
    <include name="DMLOAD.SY_" />
    <include name="FASTFAT.SY_" />
    <include name="FLPYDISK.SY_" />
    <include name="FTDISK.SY_" />
    <include name="HIDCLASS.SY_" />
    <include name="HIDPARSE.SY_" />
    <include name="I8042PRT.SY_" />
    <include name="INTELIDE.SY_" />
    <include name="ISAPNP.SY_" />
    <include name="KBDCLASS.SY_" />
    <include name="KBDHID.SY_" />
    <include name="KSECDD.SYS" />
    <include name="MOUNTMGR.SY_" />
    <include name="NTFS.SYS" />
    <include name="OPRGHDLR.SY_" />
    <include name="PARTMGR.SY_" />
    <include name="PCI.SY_" />
    <include name="PCIIDE.SY_" />
    <include name="SETUPDD.SY_" />
    <include name="SPDDLANG.SY_" />
    <include name="VIAIDE.SY_" />
    <include name="WMILIB.SY_" />
   </fileset>
  </copy>
  
  <copy file="${InstSourceDir}\I386\KDCOM.DL_" tofile="picoxp\I386\system32\KDCOM.DL_" overwrite="true" />
  <copy todir="picoxp\I386\system32\drivers" overwrite="true">
   <fileset basedir="${InstSourceDir}\I386">
    <include name="NULL.SY_" />
    <include name="NDIS.SY_" />
    <include name="CLASSPNP.SY_" />
    <include name="FS_REC.SY_" />
    <include name="MCD.SY_" />
    <include name="MUP.SY_" />
   </fileset>
  </copy>
  
  <expand dstdir="picoxp\I386\system32\drivers" >
      <fileset basedir="${InstSourceDir}\I386">
       <include name="DXAPI.SY_" />
       <include name="DXG.SY_" />
       <include name="DXGTHK.SY_" />
       <include name="NPFS.SY_" />
       <include name="PCIIDEX.SY_" />
       <include name="VGA.SY_" />
       <include name="VIDEOPRT.SY_" />
      </fileset>
     </expand>
     
     <if test="${OS=='2003'}" >
      <expand file="${InstSourceDir}\I386\WATCHDOG.SY_" dstdir="picoxp\I386\system32\drivers" />
     </if>
     
     <copy todir="picoxp\I386\system32\" overwrite="true">
   <fileset basedir="src\freedos32">
    <include name="SHELL32.DLL" />
    <include name="winmm.dll" />
   </fileset>
  </copy>
     
     <exec program="expand.exe" commandline=" ${InstSourceDir}\i386\driver.cab -F:mouclass.sys picoxp\I386\system32\drivers" />
     <exec program="expand.exe" commandline=" ${InstSourceDir}\i386\driver.cab -F:mouhid.sys picoxp\I386\system32\drivers" />
     
</target>

<target name="mkfonts" >
  <expand file="${InstSourceDir}\I386\ARIAL.TT_" dstdir="picoxp\I386\Fonts" />
  <expand file="${InstSourceDir}\I386\MARLETT.TT_" dstdir="picoxp\I386\Fonts" />
  <expand dstdir="picoxp\I386\system32">
   <fileset basedir="${InstSourceDir}\I386">
    <include name="l_intl.nl_" />
    <include name="vga850.fo_" />
    <include name="vga861.fo_" />
    <include name="vgaoem.fo_" />
   </fileset>
  </expand>
</target>


<target name="mkkbd">
  <copy todir="picoxp\I386\system32\">
   <fileset basedir="${InstSourceDir}\I386">
    <include name="KBDUS.DLL"/>
    <include name="c_037.nl_"/>
    <include name="c_10000.nl_"/>
    <include name="c_10079.nl_"/>
    <include name="c_1252.nl_"/>
    <include name="c_20127.nl_"/>
    <include name="C_28591.nl_"/>
    <include name="c_28605.nl_"/>
    <include name="c_437.nl_"/>
    <include name="c_500.nl_"/>
    <include name="c_850.nl_"/>
    <include name="c_860.nl_"/>
    <include name="c_861.nl_"/>
    <include name="c_863.nl_"/>
    <include name="c_865.nl_"/>
   </fileset>
  </copy>
</target>

<target name="mkiso">
  
  <exec program="bin\mkisofs.exe" commandline=" -iso-level 4 -force-uppercase -b bootsect.bin -no-emul-boot -boot-load-size 4 -hide bootsect.bin -hide boot.catalog -duplicates-once -o iso\picoxp.iso picoxp" />
</target>

<target name="mkprpiso">
  <copy file="src\txtsetup.sif"  tofile="PicoXP\I386\txtsetup.sif" overwrite="true"/>
  <touch file="picoxp\BOOT" />
  <copy file="src\bootsect.bin"  tofile="PicoXP\bootsect.bin" overwrite="true"/>
</target>

<target name="mkramboot">
  <delete dir="picoxp\RamBoot"/>
  <mkdir dir="picoxp\RamBoot"/>
  <iniwrite filename="picoxp\I386\txtsetup.sif" section="ScsiClass.Load" key="ramdisk" value="ramdisk.sys"/>
  <copy file="src\ramdisk.sy_" tofile="picoxp\I386\system32\drivers" overwrite="true"/>
  <mkdir dir="picoxp\RamBoot\I386"/>
  <touch file="picoxp\RamBoot\WINNT.SIF"/>
  <echo message="[SetupData]" file="picoxp\RamBoot\WINNT.SIF"/>
  <echo message='BootDevice="ramdisk(0)"' file="picoxp\RamBoot\WINNT.SIF" append="true"/>
  <echo message='BootPath="\i386\SYSTEM32\"' file="picoxp\RamBoot\WINNT.SIF" append="true"/>
  <echo message='OsLoadOptions="/minint /fastdetect /rdexportascd /rdpath=RamBoot.ISO"' file="picoxp\RamBoot\WINNT.SIF" append="true"/>
  <copy file="picoxp\bootsect.bin" tofile="picoxp\RamBoot\bootsect.bin"/>
</target>

<target name="clean">
  <delete dir="picoxp" />
  <delete dir="iso" />
</target>

<target name="build">
  <call target="mkdirs"/>
  <call target="mkhive"/>
  <call target="mkfiles"/>
  <call target="mkfonts"/>
  <call target="mkkbd"/>
  <call target="mkprpiso"/>
  <call target="mkiso"/>
</target>
</project>
 楼主| 发表于 2007-9-14 10:21:17 | 显示全部楼层
工具在
http://blog.vckbase.com/Files/BastEt/nantlite.rar
上面的debug.build任务有些词被过滤掉了。上面这个压缩包里的会全有的。有些工具(mkisofs和其他的相关的东东,有人要的话我也会上传)
我加了几个任务,原工具在nant.sf.net

这里面使用nantlite clean就把生成的目录删掉。
nantlite build就是从头到脚创建一个新的ISO。

TODO:
1、如何从目标注册表抽出新的注册表。
2、注册表的批量写,批量读。
3、expand任务的更新!
4、我会编译一个7zall.exe的命令行用来支持7z支持的所有格式。

picoxp里有个工具叫hojope,我想把他的那个功能也加进任务中去。

为什么我不用python,lua,autoit之类的工具,我都试着去做过,但感觉没有这样描述性强。

[ 本帖最后由 七猫 于 2007-9-14 10:23 AM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2007-9-14 10:29:57 | 显示全部楼层
http://blog.vckbase.com/Files/BastEt/binandsrc.rar

其他的配套的工具和注册表也已上传。
可以用nantlite中的regloadhive来加载到localmachine(也可以到user,但被我写死了)nantlite我加的原代码部分或者整个工程有人需要的话我也可以发布,我也仅仅是开始。很多东东要向大家请教。
回复

使用道具 举报

发表于 2007-9-14 11:11:50 | 显示全部楼层
能不能从已经有的IS_或IMG提取文件,酱紫非常方便我们在PE下定制安装到硬盘的PE(txtsetup只留下与该机子相关的和公共的硬件驱动),这无疑能大大提高安装在硬盘上的PE的启动速度并降低内存要求。
回复

使用道具 举报

 楼主| 发表于 2007-9-14 11:38:56 | 显示全部楼层
单独提取文件吗?IS_最好先解成ISO文件。命令行工具就可以了吧?
回复

使用道具 举报

 楼主| 发表于 2007-9-14 12:58:11 | 显示全部楼层
http://blog.vckbase.com/Files/BastEt/7za1.rar
比官方的7za.exe增加到跟GUI一样的格式支持。
(iso,arj,rar,cab,wim,nsis做的打包文件,打开了可以看nsis script的开关(官方以前的版本解nsis exe的时候可以看到script,后来的版本因NSIS使用者抗议所以取消了,我把这个开关又打开了)
适合在批处理文件中使用。帮助请参阅7zip的命令行帮助。

打不开的压缩档案请QQ:43791167
img的格式我准备用winimage的开发包做一个。这几天会放出来的。
回复

使用道具 举报

发表于 2007-9-14 13:16:49 | 显示全部楼层
先下载下来,不过好像winimage无法对压缩过的NTFS的IMG正确解码。
回复

使用道具 举报

 楼主| 发表于 2007-9-14 14:23:22 | 显示全部楼层
img可能是裸格式,里面可以放fat32,可以放ntfs,ext2,估计winimage只支持了fat,ntfs的格式的资料我这里有,但写成一个工具还是要花不少时间。
回复

使用道具 举报

发表于 2007-9-14 16:31:58 | 显示全部楼层
原帖由 七猫 于 2007-9-14 14:23 发表
img可能是裸格式,里面可以放fat32,可以放ntfs,ext2,估计winimage只支持了fat,ntfs的格式的资料我这里有,但写成一个工具还是要花不少时间。

这个可以用VDM挂接然后再来可能会简单点。
回复

使用道具 举报

发表于 2009-3-10 15:08:32 | 显示全部楼层
http://blog.vckbase.com/Files/BastEt/7za1.rar
这个不能下了,哪位兄弟有下到的,麻烦传一个上来。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-20 00:21

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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