无忧启动论坛

标题: PE如何改才能支持在VISTA下安装? [打印本页]

作者: kgb3000    时间: 2008-11-6 14:22
标题: PE如何改才能支持在VISTA下安装?
请教各位,我手上有一个简单版30M PE,感觉很好用,但在VISTA下安装不了,如果安装了,连VISTA也启动不了,请问如何改?才能支持在VISTA下安装?
作者: dos时代菜鸟    时间: 2008-11-6 14:48
把注册表中  minint 那部分删除
具体位置记不清了。
作者: yichya    时间: 2008-11-6 18:03
标题: 回复 #2 dos时代菜鸟 的帖子
不是在PE下安装VISTA,而是在VISTA下装PE。
顺便帮楼上补充一句:把HALAACPI.DLL改名成HAL.DLL。
作者: 421062724    时间: 2008-11-6 18:38
人家是说在vista下不能安装PE~~~不是在PE下不能安装vista吧
作者: 421062724    时间: 2008-11-6 18:53
要在vista下安装PE,参见这段东西,本人测试过可用

  1. @Echo Off
  2. mode con cols=65 lines=26
  3. Set Prog=维护PE安装工具
  4. Set L1=      ╭──────────────────╮
  5. Set L2=      │                  │
  6. Set L3=   ╭──┤        PE维护光盘安装工具        ├──╮
  7. Set L4=   │  │                  │  │
  8. Set L5=   │  ╰──────────────────╯  │
  9. Set L6=   │                        │
  10. Set L7=   ├────────────────────────┤
  11. Set L8=   │                  欢迎使用                    │
  12. Set L9=   ╰────────────────────────╯
  13. Title %Prog%
  14. ::初始化一些变量
  15. Set PEFile=WINPE.IM_
  16. Set SOFT=外部软件
  17. Set LogFile=PEInstall.log
  18. Set AddATTR=ATTRIB +S +H +R
  19. Set DelATTR=ATTRIB -S -H -R
  20. ::核心文件=%PEFile%;外置程序位置=%SOFT%;日志文件名称=%LogFile%;
  21. :CheckOS
  22. if /i not "%os%."=="Windows_NT." goto SystemErro
  23. ::判断系统版本并设置TheOS
  24. ver|find /i " 6.0">nul &&set Winver=vista&&  set TheOS=Vista
  25. ver|find /i " 5.0">nul &&set Winver=winnt&&  set TheOS=2000
  26. ver|find /i " 5.1">nul &&set Winver=winnt&&  set TheOS=XP
  27. ver|find /i " 5.2">nul &&set Winver=winnt&&  set TheOS=2003
  28. goto Start
  29. :SystemErro
  30. cls
  31. Echo.
  32. Echo.
  33. Echo  注意:未经测试,本软件可能不适用于非 Windows PE/2000/XP/2003/Vista 操作系统。
  34. Echo  按回车键退出安装程序
  35. Pause >nul
  36. Exit
  37. ::初始化完毕,开始加载界面
  38. :Start
  39. CLS
  40. Title %Prog%——安装
  41. Echo.
  42. Echo %L1%
  43. Echo %L2%
  44. Echo %L3%
  45. Echo %L4%
  46. Echo %L5%
  47. Echo %L6%
  48. Echo    │  请选择安装方式:               │
  49. Echo %L6%
  50. Echo    │  [1] 普通安装/启动 (硬盘安装)        │
  51. Echo    │  [Q] 退出安装                │
  52. Echo %L6%
  53. Echo %L7%
  54. Echo %L7%
  55. Echo %L8%
  56. Echo %L9%
  57. Echo.
  58. Echo       您现在使用的是 Windows %TheOS% 操作系统 !
  59. if "%TheOS%"=="XP" Echo       ( 或 Windows XP 核心的 WinPE )
  60. if "%TheOS%"=="2003" Echo       ( 或 Windows 2003 核心的 WinPE )
  61. if "%TheOS%"=="Vista" Echo       ( 请确保您拥有管理员权限以及关闭了UAC,否则安装可能失败 )
  62. Echo.
  63. Set Choice=
  64. Set /P Choice=   请选择要进行的操作 (1/2/Q) ,按回车确认:
  65. If "%Choice%"=="" Goto Start
  66. If Not "%Choice%"=="" Set Choice=%Choice:~0,1%
  67. If /I "%Choice%"=="1" Goto HD
  68. If /I "%Choice%"=="2" Goto UD
  69. If /I "%Choice%"=="Q" Exit
  70. Goto Start
  71. :HD
  72. Set RP=
  73. 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:
  74. ::设定PE安装文件夹的名称
  75. Set PEDIR=%RP%\WINPEXP
  76. ::设定完毕
  77. Set TargetP=硬盘&&Set TxtSp=
  78. ::判断是否安装了PE
  79. If Exist %PEDIR% Goto Err1
  80. FIND /I "%PEDIR%" %RP%\BOOT.INI>NUL 2>NUL
  81. If "%Errorlevel%"=="0" Goto Err1
  82. ::选择不同的安装模式
  83. If /i "%TheOS%"=="Vista" (
  84.        goto :Vista_Install
  85. ) Else (
  86.        goto :Pubilc_Install
  87. )
  88. Goto :HD
  89. :Err1
  90. CLS
  91. Title %Prog%——卸载
  92. Echo.
  93. Echo %L1%
  94. Echo %L2%
  95. Echo %L3%
  96. Echo %L4%
  97. Echo %L5%
  98. Echo %L6%
  99. Echo    │ 您的%TargetP%中好像已经安装了 WinPE,您想怎么办?%TxtSp% │
  100. Echo %L6%
  101. Echo    │  [1] 卸载原有的 WinPE,并且重新安装。    │
  102. Echo    │  [2] 卸载原有的 WinPE,并且不再安装。    │
  103. Echo    │  [B] 返回首页,重新选择安装选项。      │
  104. Echo    │  [Q] 退出安装                │
  105. Echo %L6%
  106. Echo %L7%
  107. Echo %L8%
  108. Echo %L9%
  109. Echo.
  110. Set Choice=
  111. Set /P Choice=   请选择要进行的操作 (1/2/B/Q) ,然后按回车:
  112. If "%TargetP%"=="硬盘" Set U=
  113. If "%Choice%"=="" Goto Err1
  114. If Not "%Choice%"=="" Set Choice=%Choice:~0,1%
  115. If /I "%Choice%"=="1" Set Choi=1&&Goto UnInstall
  116. If /I "%Choice%"=="2" Goto UnInstall
  117. If /I "%Choice%"=="B" Goto Start
  118. If /I "%Choice%"=="Q" Exit
  119. Goto Err1
  120. Exit
  121. :UnInstall
  122. If Exist %RP%\%LogFile% For /F "eol=; tokens=2 delims=^=" %%i In ('find /I ^"WinPE外挂位置^" %RP%\%LogFile%') do SET OPD=%%i
  123. If Not "%U%"=="" Set OPD=%RP%
  124. If Exist %RP%\%LogFile% %DelATTR% %RP%\%LogFile%&&Del %RP%\%LogFile% /Q>NUL 2>NUL
  125. If Exist %RP%\PELDR %DelATTR% %RP%\PELDR&&Del %RP%\PELDR /Q>NUL 2>NUL
  126. If Exist %PEDIR% RD %PEDIR% /S /Q>NUL 2>NUL
  127. If Exist %RP%\boot\GRUB\grub RD %RP%\boot /S /Q>NUL 2>NUL
  128. If Exist %OPD%\%SOFT% RD %OPD%\%SOFT% /S /Q>NUL 2>NUL
  129. If Exist %UU%\IO.SYS %DelATTR% %UU%\IO.SYS&&Del %UU%\IO.SYS /Q>NUL 2>NUL
  130. If Exist %RP%\WINNT.XPE %DelATTR% %RP%\WINNT.XPE&&Del %RP%\WINNT.XPE /Q>NUL 2>NUL
  131. If /i "%TheOS%"=="Vista" If Exist %RP%\NTDETECT.COM %DelATTR% %RP%\NTDETECT.COM&&Del %RP%\NTDETECT.COM /Q>NUL 2>NUL
  132. If /i "%TheOS%"=="Vista" If Exist %RP%\BOOTFONT.BIN %DelATTR% %RP%\BOOTFONT.BIN&&Del %RP%\BOOTFONT.BIN /Q>NUL 2>NUL
  133. ::针对VISTA下是否多系统的判断卸载
  134. If NOT Exist %RP%\BOOT.BAK %DelATTR% %RP%\BOOT.INI&&Del %RP%\BOOT.INI
  135. %DelATTR% %RP%\BOOT.INI>NUL 2>NUL
  136. If Exist %RP%\BOOT.BAK (
  137. %DelATTR% %RP%\BOOT.BAK
  138. TYPE %RP%\BOOT.BAK|FIND /I /V "%PEDIR%">%RP%\BOOT.INI
  139. ) Else (
  140. If Exist %RP%\BOOT.INI Copy %RP%\BOOT.INI %RP%\BOOT.BAK /Y>NUL 2>NUL
  141. If Exist %RP%\BOOT.BAK TYPE %RP%\BOOT.BAK|FIND /I /V "%PEDIR%">%RP%\BOOT.INI
  142. )
  143. If Exist %RP%\BOOT.BAK %DelATTR% %RP%\BOOT.BAK&&Del %RP%\BOOT.BAK>NUL 2>NUL
  144. If Exist %RP%\BOOT.INI %AddATTR% %RP%\BOOT.INI >NUL 2>NUL
  145. Set RP=
  146. Title %Prog%——卸载完成
  147. If "%Choi%"=="1" (Echo.&&Echo.&&Echo    卸载完成,请按任意键准备安装 。。。&&PAUSE>NUL 2>NUL&&Goto Start)
  148. Echo.&&Echo.&&Echo    卸载完成,请按任意键退出 。。。
  149. PAUSE>NUL 2>NUL
  150. Exit
  151. :Vista_Install
  152. 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:
  153. Set PEDIR=%RP%\WINPEXP
  154. set gname=WinPE MINI SYSTEM
  155. set gname2=WINPEXP\AVLDR
  156. If Exist %PEDIR% Goto Err1
  157. If "%OP%"=="" Call :SetExtra
  158. Set TargetP=硬盘 && Set TxtSp=
  159. If Not Exist %PEDIR% MD %PEDIR%>NUL 2>NUL
  160. If Exist %RP%\WINNT.XPE %DelATTR% %RP%\WINNT.XPE
  161. Echo 正在复制文件,请稍候 ............
  162. COPY MYINS\PELDR %RP%\PELDR >Nul 2>Nul
  163. COPY MYINS\AVLDR %PEDIR%\AVLDR >Nul 2>Nul
  164. COPY MYINS\WINNT.XPE %RP%\WINNT.XPE >Nul 2>Nul
  165. COPY MYINS\NTDETECT.COM %RP%\NTDETECT.COM >Nul 2>Nul
  166. COPY ..\BOOTFONT.BIN %RP%\BOOTFONT.BIN
  167. %AddATTR% %RP%\BOOTFONT.BIN
  168. %AddATTR% %RP%\NTDETECT.COM /S /D
  169. Call :CopyAndSetFiles
  170. Goto SUCCESS
  171. :Pubilc_Install
  172. Title %Prog%——普通安装
  173. If "%OP%"=="" Call :SetExtra
  174. If Not Exist %PEDIR% MD %PEDIR%>NUL 2>NUL
  175. Echo 正在复制文件,请稍候 ............
  176. ::拷贝必要的引导文件
  177. COPY MYINS\AVLDR %PEDIR%\AVLDR >Nul 2>Nul
  178. COPY MYINS\PELDR %RP%\PELDR >Nul 2>Nul
  179. COPY MYINS\WINNT.XPE %RP%\WINNT.XPE >Nul 2>Nul
  180. Call :CopyAndSetFiles
  181. Goto SUCCESS
  182. :CopyAndSetFiles
  183. ::拷贝PE的核心
  184. Copy ..\%PEFile% %PEDIR% /Y>NUL 2>NUL
  185. ::拷贝外置程序
  186. IF NOT "%OP%"=="" XCOPY ..\%SOFT% /E %OP%\%SOFT%\ /Y /H /R>NUL 2>NUL
  187. ::修改启动菜单
  188. If "%U%"=="" If Exist %RP%\BOOT.INI %DelATTR% %RP%\BOOT.INI
  189. If "%U%"=="" If Exist %RP%\BOOT.INI If Exist %RP%\BOOT.BAK %DelATTR% %RP%\BOOT.BAK
  190. If "%U%"=="" If Exist %RP%\BOOT.INI Copy %RP%\BOOT.INI %RP%\BOOT.BAK>NUL 2>NUL
  191. If "%U%"=="" If Exist %RP%\BOOT.INI TYPE %RP%\BOOT.BAK|FIND /I /V "%RP%\WINPEXP">%RP%\BOOT.INI
  192. If "%U%"=="" If Exist %RP%\BOOT.INI Echo %RP%\WINPEXP\AVLDR="WinPE MINI SYSTEM">>%RP%\BOOT.INI
  193. if /i "%TheOS%"=="Vista" If NOT Exist %RP%\BOOT.INI CALL :BOOT
  194. ::添加属性
  195. IF NOT "%OP%"=="" %AddATTR% %OP%\%SOFT% /S /D
  196. If Exist %RP%\BOOT.INI %AddATTR% %RP%\BOOT.INI /S /D
  197. If Exist %RP%\PELDR %AddATTR% %RP%\PELDR /S /D
  198. %AddATTR% %PEDIR% /S /D
  199. If Exist %RP%\WINNT.XPE %AddATTR% %RP%\WINNT.XPE /S /D
  200. ::添加日志方便卸载
  201. If "%U%"=="" Call :添加日志
  202. Goto :EOF

  203. :SUCCESS
  204. If "%U%"=="" IF NOT EXIST %RP%\BOOT.INI GOTO SETUPErr
  205. Title %Prog%——安装完成
  206. CLS
  207. For %%i In (C D E F G H I J K L M N O P Q R S T U V W X Y Z) Do If /I "%RP%"=="%%i:" Set RP=%%i:
  208. Echo 已经成功将镜像 %PEFile% 安装到您的 %RP% 盘。
  209. If "%U%"=="" (
  210. Echo 外置程序 文件夹按照您的设置,复制到了 %OP% 盘。
  211. Echo.
  212. If Exist %RP%\Boot.INI Echo 系统分区中的 BOOT.INI 备份为 BOOT.BAK,多系统同上。
  213. )
  214. Echo.&&Echo.
  215. Echo 如果您需要将 WinPE 卸载,请重新运行本安装程序。
  216. Echo.
  217. Echo 请按任意键退出......
  218. PAUSE>NUL 2>NUL
  219. Exit
  220. :SetExtra
  221. CLS
  222. :SetExtra2
  223. If "%NoOP%"=="Yes" Echo 错误:您设定的分区不存在或写保护,请按任意键重新设定。&&Echo.
  224. Set /P OP=请设定 外置程序 存放的分区符[不需要冒号,例如 D(推荐)]:
  225. Echo.&&Echo.
  226. If "%OP%"=="" Goto SetExtra
  227. If /I "%OP%:"=="%RP%" ECHO 您设定的是系统分区,这样可能会导致PE启动后系统分区无法格式化,请重新设置。&Goto SetExtra2
  228. If Not "%OP%"=="" Set OP=%OP:~0,1%:
  229. Set TestFile=%OP%\MaotaoTest.MT
  230. Cd.>%TestFile%
  231. If Not Exist %TestFile% Set NoOP=Yes&&Goto SetExtra
  232. Del %TestFile% /Q>NUL 2>NUL
  233. Goto :EOF
  234. :添加日志
  235. >%RP%\%LogFile% Cd.
  236. >>%RP%\%LogFile% Echo ;此文件为 WinPE 的安装LogFile,请不要随意删除
  237. >>%RP%\%LogFile% Echo ;否则可能会造成 WinPE 的卸载不够彻底!!!
  238. >>%RP%\%LogFile% Echo.
  239. >>%RP%\%LogFile% Echo WinPE镜像文件=%PEFile%
  240. >>%RP%\%LogFile% Echo WinPE外挂位置=%OP%
  241. >>%RP%\%LogFile% Echo WinPE安装日期=%Date% %Time%
  242. %AddATTR% %RP%\%LogFile%
  243. Goto :EOF
  244. :BOOT
  245. ECHO [boot loader]>>%RP%\BOOT.INI
  246. ECHO [operating systems]>>%RP%\BOOT.INI
  247. ECHO %RP%\%gname2%="%gname%">>%RP%\BOOT.INI
  248. goto :eof
  249. :SETUPErr
  250. echo 安装到硬盘可能失败。请检查%RP%上的BOOT.INI文件中是否有PE的启动项,按任意键退出..........
  251. pause >nul
复制代码

作者: kgb3000    时间: 2008-11-6 21:12
原帖由 yichya 于 2008-11-6 18:03 发表
不是在PE下安装VISTA,而是在VISTA下装PE。
顺便帮楼上补充一句:把HALAACPI.DLL改名成HAL.DLL。

兄弟能否详细一点点?
作者: kgb3000    时间: 2008-11-6 21:13
原帖由 421062724 于 2008-11-6 18:53 发表
要在vista下安装PE,参见这段东西,本人测试过可用

@Echo Off
mode con cols=65 lines=26
Set Prog=维护PE安装工具
Set L1=      ╭──────────────────╮
Set L2=      │ ...

不是很明白啊,能否详细点?
作者: 421062724    时间: 2008-11-6 23:28
呃,安装代码都出来了~怎么个详细法?说白了就是用vista自带的bcdedit修改启动项,顺便说下,vista会自动搜索boot.ini只要自己加个boot.ini并在里面加上PE的启动项就可以了
作者: kgb3000    时间: 2008-11-7 13:52
原帖由 421062724 于 2008-11-6 23:28 发表
呃,安装代码都出来了~怎么个详细法?说白了就是用vista自带的bcdedit修改启动项,顺便说下,vista会自动搜索boot.ini只要自己加个boot.ini并在里面加上PE的启动项就可以了

多谢指点,我试试。
作者: dos时代菜鸟    时间: 2008-11-7 19:09
原来看反了。不好意思。
作者: yichya    时间: 2008-11-7 19:14
其实可以利用VISTA的引导器可以直接启动NTLDR类程序的原理。
怎么做,自己开发。




欢迎光临 无忧启动论坛 (http://wuyou.net./) Powered by Discuz! X3.3