@Echo Off
COLOR 3F
PUSHD %~dp0
Set Prog=深度Windows PE 4.0专用安装程序
Set L1=　　　　　　╭══════════════════╮
Set L2=　　　　　　║　　　　　　　　　　　　　　　　　　║
Set L3=　　　╭══┤　 深度Windows PE 4.0专用安装程序   ├══╮
Set L4=　　　║　　║　　　　　　　　　　　　　　　　　　║　　║
Set L5=　　　║　　╰══════════════════╯　　║
Set L6=　　　║　　　　　　　　　　　　　　　　　　　　　　　　║
Set L7=　　　╟════════════════════════╢
Set L8=　　　║　版权所有：深度技术论坛  　　        盗版不究  ║
Set L9=　　　╰────────────────────────╯
Title %Prog%
Set PE核心文件=Deepin.IM_
Set PE配置文件=Programs\WinPE.ini
Set 日志文件=DPEInstall.log
Set 加属性=ATTRIB +S +H +R
Set 去属性=ATTRIB -S -H -R

:CheckOS
if /i not "%os%."=="Windows_NT." goto 操作系统问题
::判断系统版本并设置TheOS
ver|find /i " 6.0">nul &&set Winver=vista&&  set TheOS=Windows Vista
ver|find /i " 5.0">nul &&set Winver=winnt&&  set TheOS=Windows 2000
ver|find /i " 5.1">nul &&set Winver=winnt&&  set TheOS=Windows XP
ver|find /i " 5.2">nul &&set Winver=winnt&&  set TheOS=Windows 2003
goto 开始

:操作系统问题
cls
Echo.
Echo.
Echo  注意：未经测试，本软件可能不适用于非 Windows PE/2000/XP/2003/Vista 操作系统。
::一个无聊的延迟
PING/n 5 127.1>NUL
Exit

:开始
COLOR 3F
cls
Title %Prog%——主菜单
Echo.
Echo %L1%
Echo %L2%
Echo %L3%
Echo %L4%
Echo %L5%
Echo %L6%
Echo 　　　║ 　请选择安装方式：　　　　　　　　　　　　　　 ║
Echo %L6%
Echo 　　　║　　[1] 普通安装/启动  (硬盘安装)　　　　　　　 ║
Echo 　　　║　　                                            ║
Echo 　　　║　　[2] Grub安装/启动 (U 盘安装，MS-DOS + GRUB) ║
Echo 　　　║　　                                            ║
Echo 　　　║　　[Q] 退出安装　　　　　　　　　　　　　　　　║
Echo %L6%
Echo %L7%
Echo %L7%
Echo %L8%
Echo %L9%
Echo.
::这里是提示操作系统版本
Echo　　　    您现在使用的是 %TheOS% 操作系统 ！
if "%TheOS%"=="Windows XP" Echo　　　    ( 或 Windows XP 核心的 WinPE )
if "%TheOS%"=="Windows 2003" Echo　　　    ( 或 Windows 2003 核心的 WinPE )
Echo.
Echo.

Set /P 选择="			请选择要进行的操作 (0/1/2/Q) ，然后按回车："
If "%选择%"=="" Goto 开始
::这句”If Not "%Choice%"=="" Set Choice=%Choice:~0,1%“貌似没什么太大用处的说
If Not "%选择%"=="" Set Choice=%Choice:~0,1%
If /I "%选择%"=="1" Goto 硬盘安装
If /I "%选择%"=="2" Goto UD
If /I "%选择%"=="Q" Exit
Goto 开始

:硬盘安装
cls
Title %Prog%——普通安装（安装到 C 盘）
Echo %L1%
Echo %L2%
Echo %L3%
Echo %L4%
Echo %L5%
Echo 　　　║　　当前操作：普通安装——安装到 C 盘 　　　　　║
Echo %L6%
Echo %L7%
Echo %L8%
Echo %L9%
Echo.
if /i "%TheOS%"=="Windows Vista" (
       goto :vista安装
) Else (
       goto :通用安装
)
goto :HD

:vista安装
For %%I In (Z Y X W V U T S R Q P O N M L K J I H G F E D C) Do If Exist %%I:\BOOTMGR Set RP=%%I:
Set PE核心目录=%RP%\deepin

set vid=
set timeout=5
set gname=Deepin Windows PE 4.0
set gname2=\deepin\deepin.bin

bcdedit >c:\windows\temp_bcd.txt
If Exist %PE核心目录% Goto 错误一
If Exist %RP%\windows\启动菜单 Goto 错误一
Set TargetP=硬盘 && Set TxtSp= 
If "%OP%"=="" Call :设定外置

if not exist %RP%\windows\启动菜单 md %RP%\windows\启动菜单
BCDEDIT /export %RP%\windows\启动菜单\bcdbak >nul 2>nul

bcdedit   /create /d "%gname%" /application bootsector >c:\windows\vid.ini
If Not Exist %PE核心目录% MD %PE核心目录%>NUL 2>NUL
If Exist %RP%\DPLDR %去属性% %RP%\DPLDR
If Exist %RP%\DEEPIN.PE %去属性% %RP%\DEEPIN.PE
Echo 正在复制文件，请稍候 ............
MyIns\MyIns.exe e MyIns\MyIns.dll -o%PE核心目录% DEEPIN.BIN -r -y>NUL 2>NUL
MyIns\MyIns.exe e MyIns\MyIns.dll -o%RP%\ DEEPIN.PE -r -y>NUL 2>NUL
for /f "tokens=2 delims={" %%i In (c:\windows\vid.ini) Do (
               set vida=%%i
)
for /f "tokens=1 delims=}" %%i In ("%vida%") Do (
               set vid={%%i}
)
echo %vid%>c:\windows\vid.ini
bcdedit   /set %vid% device partition=c:   >nul
bcdedit   /set %vid% path %gname2% >nul
bcdedit   /displayorder %vid% /addlast >nul
bcdedit   /timeout   %timeout% >nul
del c:\windows\temp_bcd.txt >nul 2>nul
del c:\windows\temp_bcd1.txt >nul 2>nul
Call :vista拷贝文件
Goto 成功

:通用安装
For %%I In (Z Y X W V U T S R Q P O N M L K J I H G F E D C) Do If Exist %%I:\BOOT.INI Set RP=%%I:

Set PE核心目录=%RP%\deepin
If Exist %PE核心目录% Goto 错误一
FIND /I "C:\deepin" %RP%\BOOT.INI>NUL 2>NUL
If "%Errorlevel%"=="0" Goto 错误一
Set TargetP=硬盘 && Set TxtSp= 
If "%OP%"=="" Call :设定外置

If Not Exist %PE核心目录% MD %PE核心目录%>NUL 2>NUL
If Exist %RP%\DPLDR %去属性% %RP%\DPLDR
If Exist %RP%\DEEPIN.PE %去属性% %RP%\DEEPIN.PE
Echo 正在复制文件，请稍候 。。。
MyIns\MyIns.exe e MyIns\MyIns.dll -o%PE核心目录% DEEPIN.BIN -r -y>NUL 2>NUL
MyIns\MyIns.exe e MyIns\MyIns.dll -o%RP%\ DEEPIN.PE -r -y>NUL 2>NUL
Call :通用拷贝文件
Goto 成功

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:UD
cls 
Title %Prog%——U 盘安装
For /F "skip=2 tokens=*" %%I In ('xiaoma_ins\CHECKUSB.EXE') DO SET Us=%%I
::这里的%Us%是U盘的盘符
If "%Us%"=="当前可移动磁盘分区：" Goto NoUD
Echo %Us%&&Echo.
If "%NoUD%"=="Yes" Echo 错误：您设定的分区 %OP% 不存在、写保护、未格式化或不是 U 盘分区，请按任意键重新设定。&&Echo.
Set /P OP=请选择您的 U 盘盘符（不需要冒号，例如 F）：
Echo.&&Echo.
If "%OP%"=="" Goto UD
If Not "%OP%"=="" Set OP=%OP:~0,1%:
For /F %%I In ('xiaoma_ins\CHECKUSB.EXE %OP%') DO SET Err2=%%I
If Not "%Err2%"=="1" Set NoUD=Yes&&Goto UD
::上面这里测试了输入的U盘盘符是否存在或不是U盘分区或（未格式化）::未格式化这里不知道能不能检测出来，估计是下面的代码的工作，

Set TestFile=%OP%\MINIPETest_%RANDOM%.MT
Cd.>%TestFile%
If Not Exist %TestFile% Set NoUD=Yes&&Goto UD
Del %TestFile% /Q>NUL 2>NUL
::上面这里测试了U盘是否写保护或未格式化

Set U=U&&Set PEDIR=%OP%\MINIPE
Set TargetP= U 盘&&Set TxtSp=
::那个Set U=U用来干什么的？
CLS
Echo 您选择的 U 盘分区为 %OP%，下面将对您的 U 盘进行格式化并写入引导
Echo.
Echo 请严格按照相关工具软件界面中的提示操作，以防出错...o(∩_∩)o...
Echo.
Echo 哈…还是再说一遍吧，请在WinPE安装目录下选择DOS基本文件。
Echo.
Echo 请按任意键开始.......
PAUSE>NUL
start /wait xiaoma_ins\HPUSBFW.EXE
If Not Exist %OP% Goto UD
If Not Exist %OP%\IO.SYS cls&echo.&echo  %OP%盘不存在DOS启动文件，安装不能继续，按任意键重新开始...&pause>nul&Goto UD
If Not Exist %OP%\COMMAND.COM cls&echo.&echo  %OP%盘DOS启动文件不全，安装不能继续，按任意键重新开始...&pause>nul&Goto UD
cls
Echo.
Echo  开始将WinPE安装到U盘（USB移动硬盘），请稍候...
If Not Exist %PEDIR% MD %PEDIR%>NUL 2>NUL
copy xiaoma_ins\WINNT.XPE %OP%\ >nul
copy xiaoma_ins\LDRXPE %OP%\MINIPE\NTLDR >nul
If Not Exist %OP%\NTDETECT.COM copy xiaoma_ins\NTDETECT.COM %OP%\ >NUL 2>NUL
if exist %OP%\Config.sys Ren %OP%\Config.sys Config.sys.old
Echo.
Echo  正在复制外置程序...
XCOPY ..\Programs /E %OP%\Programs\ /Y /H /R>NUL 2>NUL



IF NOT "%OP%"=="" XCOPY ..\MINIPE /E %OP%\MINIPE\ /Y /H /R>NUL 2>NUL

IF NOT "%Pass%"=="" ECHO TEAM ENVI passmd5=%Pass%^|ENVI LOGINPASS=1 > %OP%\MINIPE\WINPE.INI
IF NOT "%Pass%"=="" TYPE ..\%PE配置文件% >>%OP%\MINIPE\WINPE.INI

Copy xiaoma_ins\deepin.XPM.GZ %OP%\MINIPE\ /y>NUL 2>NUL
Copy xiaoma_ins\muifont.gz %OP%\MINIPE\ /y>NUL 2>NUL
Copy xiaoma_ins\GRUB.EXE %OP%\ /y>NUL 2>NUL
Copy xiaoma_ins\menu.lst %OP%\ /y>NUL 2>NUL
Copy xiaoma_ins\CONFIG.SYS %OP%\ /y>NUL 2>NUL

Copy xiaoma_ins\DOSTOOL.IMG %OP%\MINIPE\  /y>NUL 2>NUL
Copy xiaoma_ins\PM805.IMG %OP%\MINIPE\  /y>NUL 2>NUL
Copy xiaoma_ins\DOS2PE.IMG %OP%\MINIPE\  /y>NUL 2>NUL
Copy xiaoma_ins\mype %OP%\MINIPE\  /y>NUL 2>NUL

Echo.
Echo  正在复制PE核心文件...
Copy ..\%PE核心文件% %OP%\MINIPE\ /Y>NUL 2>NUL

For %%h In (NTDETECT.COM Config.sys GRUB.exe menu.lst NTLDR WINNT.XPE Deepin.IM_ MINIPE Programs) Do attrib +h +s %OP%\%%h /s /d>nul 2>nul
Goto 成功

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:NoUD
CLS
Title %Prog%——U 盘安装
Echo.
Echo %L1%
Echo %L2%
Echo %L3%
Echo %L4%
Echo %L5%
Echo %L6%
Echo 　　　║ 您的计算机似乎没有安装 U 盘，您想怎么办？　　　║
Echo %L6%
Echo 　　　║　　[B] 返回首页，重新选择安装选项。　　　　　　║
Echo 　　　║                                                ║
Echo 　　　║　　[Q] 退出安装　　　　　　　　　　　　　　　　║
Echo %L6%
Echo %L7%
Echo %L8%
Echo %L9%
Echo.
Set Choice=
Set /P Choice=　　　请选择要进行的操作 (B/Q) ，然后按回车：
If "%Choice%"=="" Goto NoUD
If Not "%Choice%"=="" Set Choice=%Choice:~0,1%
If /I "%Choice%"=="B" Goto Start
If /I "%Choice%"=="Q" Exit
Goto NoUD
Exit

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::



:错误一
CLS
Title %Prog%——卸载
Echo.
Echo %L1%
Echo %L2%
Echo %L3%
Echo %L4%
Echo %L5%
Echo %L6%
Echo 　　　║ 您的%TargetP%中好像已经安装了 WinPE，您想怎么办？%TxtSp%　║
Echo %L6%
Echo 　　　║　　[1] 卸载原有的 WinPE，并且重新安装。　　　　║
Echo 　　　║　　[2] 卸载原有的 WinPE，并且不再安装。　　　　║
Echo 　　　║　　[B] 返回首页，重新选择安装选项。　　　　　　║
Echo 　　　║　　[Q] 退出安装　　　　　　　　　　　　　　　　║
Echo %L6%
Echo %L7%
Echo %L8%
Echo %L9%
Echo.
Set 选择=
Set /P 选择=　　　请选择要进行的操作 (1/2/B/Q) ，然后按回车：
If "%选择%"=="" Goto 错误一
If Not "%选择%"=="" Set Choice=%Choice:~0,1%
If /I "%选择%"=="1" Set Choi=1&&Goto 卸载
If /I "%选择%"=="2" Goto 卸载
If /I "%选择%"=="B" Goto 开始
If /I "%选择%"=="Q" Exit
Goto 错误一
Exit

:卸载
if /i "%TheOS%"=="Windows Vista" (
       goto :vista卸载
) Else (
       goto :通用卸载
)

:vista卸载
BCDEDIT /import %RP%\windows\启动菜单\bcdbak >nul 2>nul
rd %RP%\windows\启动菜单 /q /s
If Exist %RP%\DPLDR %去属性% %RP%\DPLDR&&Del %RP%\DPLDR /Q>NUL 2>NUL
If Exist %RP%\NTDETECT.COM %去属性% %RP%\NTDETECT.COM&&Del %RP%\NTDETECT.COM /Q>NUL 2>NUL
If Exist %RP%\DEEPIN.PE %去属性% %RP%\DEEPIN.PE&&Del %RP%\DEEPIN.PE /Q>NUL 2>NUL
If Exist %RP%\%日志文件% For /F "eol=; tokens=2 delims=^=" %%i In ('find /I ^"WinPE外挂位置^" %RP%\%日志文件%') do SET OPU=%%i
If Not "%U%"=="" Set OPU=%OP%

If Exist %OPU%\Programs RD %OPU%\Programs /S /Q>NUL 2>NUL
If Exist %RP%\%日志文件% %去属性% %RP%\%日志文件%&&Del %RP%\%日志文件% /Q>NUL 2>NUL
If Exist %RP%\deepin RD %RP%\deepin /S /Q>NUL 2>NUL
Title %Prog%——卸载完成
If "%Choi%"=="1" (Echo.&&Echo.&&Echo　　　　卸载完成，请按任意键准备安装.........&&PAUSE>NUL 2>NUL&&Goto 开始)
Echo.&&Echo.&&Echo　　　　卸载完成，请按任意键退出.........
PAUSE>NUL 2>NUL
Exit


:通用卸载
If Exist %RP%\DPLDR %去属性% %RP%\DPLDR&&Del %RP%\DPLDR /Q>NUL 2>NUL
If Exist %RP%\DEEPIN.PE %去属性% %RP%\DEEPIN.PE&&Del %RP%\DEEPIN.PE /Q>NUL 2>NUL
If Exist %RP%\MTLDR.PE %去属性% %RP%\MTLDR.PE&&Del %RP%\MTLDR.PE /Q>NUL 2>NUL
If Exist %RP%\MTLDR %去属性% %RP%\MTLDR&&Del %RP%\MTLDR /Q>NUL 2>NUL
If Exist %RP%\%日志文件% For /F "eol=; tokens=2 delims=^=" %%i In ('find /I ^"WinPE外挂位置^" %RP%\%日志文件%') do SET OPU=%%i
If Not "%U%"=="" Set OPU=%OP%

If Exist %OPU%\Programs RD %OPU%\Programs /S /Q>NUL 2>NUL
If Exist %RP%\%日志文件% %去属性% %RP%\%日志文件%&&Del %RP%\%日志文件% /Q>NUL 2>NUL
If Exist %RP%\deepin RD %RP%\deepin /S /Q>NUL 2>NUL
%去属性% %RP%\BOOT.INI>NUL 2>NUL
If Exist %RP%\BOOT.BAK (
%去属性% %RP%\BOOT.BAK
TYPE %RP%\BOOT.BAK|FIND /I /V "c:\deepin">%RP%\BOOT.INI
) Else (
If Exist %RP%\BOOT.INI Copy %RP%\BOOT.INI %RP%\BOOT.BAK /Y>NUL 2>NUL
If Exist %RP%\BOOT.BAK TYPE %RP%\BOOT.BAK|FIND /I /V "c:\deepin">%RP%\BOOT.INI
)
If Exist %RP%\BOOT.BAK %去属性% %RP%\BOOT.BAK&&Del %RP%\BOOT.BAK>NUL 2>NUL
If Exist %RP%\BOOT.INI %加属性% %RP%\BOOT.INI
Title %Prog%——卸载完成
If "%Choi%"=="1" (Echo.&&Echo.&&Echo　　　　卸载完成，请按任意键准备安装.........&&PAUSE>NUL 2>NUL&&Goto 开始)
Echo.&&Echo.&&Echo　　　　卸载完成，请按任意键退出.........
PAUSE>NUL 2>NUL
Exit


:vista拷贝文件
Copy ..\%PE核心文件% %PE核心目录% /Y>NUL 2>NUL
copy ..\bootfont.bin %RP% >nul 2>nul
MyIns\MyIns.exe e MyIns\MyIns.dll -o%RP%\%LDRP% DPLDR -r -y>NUL 2>NUL
If Not Exist %RP%\NTDETECT.COM MyIns\MyIns.exe e MyIns\MyIns.dll -o%RP% NTDETECT.COM -r -y>NUL 2>NUL
XCOPY ..\Programs /E %OP%\Programs\ /Y /H /R>NUL 2>NUL
If Exist %OP%\%PE配置文件% %去属性% %OP%\%PE配置文件%
TYPE ..\%PE配置文件%|FIND /I /V "安装.CMD">%OP%\%PE配置文件%
%去属性% %RP%\DEEPIN.PE
>>%RP%\DEEPIN.PE <nul Set/p=/rdpath=deepin\%PE核心文件%"
%加属性% %RP%\NTDETECT.COM
%加属性% %RP%\DEEPIN.PE
%加属性% %RP%\deepin /S /D
rem %加属性% %OP%\Programs /S /D
If "%U%"=="" Call :添加日志
Goto :EOF


:通用拷贝文件
For /F "tokens=2 delims=." %%i In ('Ver') DO Set SysVer=%%i
If "%U%"=="" If %SysVer:~0,1% LSS 1 Set SysVer=2K
MyIns\MyIns.exe e MyIns\MyIns.dll -o%RP%\%LDRP% DPLDR -r -y>NUL 2>NUL
If Not Exist %RP%\NTDETECT.COM MyIns\MyIns.exe e MyIns\MyIns.dll -o%RP% NTDETECT.COM -r -y>NUL 2>NUL
Copy ..\%PE核心文件% %PE核心目录% /Y>NUL 2>NUL
If "%U%"=="" %去属性% %RP%\BOOT.INI
If "%U%"=="" If Exist %RP%\BOOT.BAK %去属性% %RP%\BOOT.BAK
If "%U%"=="" Copy %RP%\BOOT.INI %RP%\BOOT.BAK>NUL 2>NUL
If "%U%"=="" TYPE %RP%\BOOT.BAK|FIND /I /V "c:\deepin">%RP%\BOOT.INI
If "%U%"=="" Echo C:\deepin\deepin.bin="Deepin Windows PE 4.0">>%RP%\BOOT.INI
copy ..\bootfont.bin %RP% >nul 2>nul
If /I "%SysVer%"=="2K" (
	%去属性% %RP%\NTLDR&&%去属性% %RP%\bootfont.bin
	Ren %RP%\NTLDR NTLDR.2K&&Ren %RP%\bootfont.bin bootfont.bin.2K
	MyIns\MyIns.exe e MyIns\MyIns.dll -o%RP% NTLDR -r -y>NUL 2>NUL
	MyIns\MyIns.exe e MyIns\MyIns.dll -o%RP% bootfont.bin -r -y>NUL 2>NUL
)

XCOPY ..\Programs /E %OP%\Programs\ /Y /H /R>NUL 2>NUL
If Exist %OP%\%PE配置文件% %去属性% %OP%\%PE配置文件%
TYPE ..\%PE配置文件%|FIND /I /V "安装.CMD">%OP%\%PE配置文件%
>>%RP%\DEEPIN.PE <nul Set/p=/rdpath=deepin\%PE核心文件%"
%加属性% %RP%\%LDRP%DPLDR
%加属性% %RP%\NTDETECT.COM
%加属性% %RP%\DEEPIN.PE
If "%U%"=="" %加属性% %RP%\BOOT.INI
%加属性% %RP%\deepin /S /D

rem %加属性% %OP%\Programs /S /D
If Exist %RP%\MTLDR.PE %加属性% %RP%\MTLDR.PE
If Exist %RP%\MTLDR %加属性% %RP%\MTLDR
If "%U%"=="" Call :添加日志
Goto :EOF




:添加日志
>%RP%\%日志文件% Cd.
>>%RP%\%日志文件% Echo ;此文件为 WinPE 的安装日志文件，请不要随意删除
>>%RP%\%日志文件% Echo ;否则可能会造成 WinPE 的卸载不够彻底！！！
>>%RP%\%日志文件% Echo.
>>%RP%\%日志文件% Echo WinPE镜像文件=%PE核心文件%
>>%RP%\%日志文件% Echo WinPE外挂位置=%OP%
>>%RP%\%日志文件% Echo WinPE安装日期=%Date% %Time%
%加属性% %RP%\%日志文件%
Goto :EOF

:成功
Title %Prog%——安装完成
CLS
Echo 已经成功将镜像 %PE核心文件% 安装到您的 %RP% 盘。
If "%U%"=="" (
Echo 外置程序 文件夹按照您的设置，复制到了 %OP% 盘。
Echo.
Echo 系统分区中的 BOOT.INI 备份为 BOOT.BAK。（如果是vista系统，启动菜单已经备份）
)
Echo.&&Echo.
Echo 如果您需要将 WinPE 卸载，请重新运行本安装程序。
Echo.
Echo 请按任意键退出...........
PAUSE>NUL 2>NUL
Exit

:设定外置
If "%NoOP%"=="Yes" Echo 错误：您设定的分区不存在或写保护，请按任意键重新设定。&&Echo.
Set /P OP=请设定 外置程序 存放的分区符[不需要冒号，例如 D(推荐)]：
Echo.&&Echo.
If "%OP%"=="" Goto 设定外置
If Not "%OP%"=="" Set OP=%OP:~0,1%:
Set TestFile=%OP%\MaotaoTest.MT
Cd.>%TestFile%
If Not Exist %TestFile% Set NoOP=Yes&&Goto 设定外置
Del %TestFile% /Q>NUL 2>NUL
Goto :EOF