无忧启动论坛

 找回密码
 注册
搜索
WEPE笔记本电脑手机维修小包 IT发烧友的必备工具最纯净的「微PE装机优盘」UEPON大师作品卡瑞飞系统和装机二合一超级U盘
无忧启动论坛唯一网址:bbs.wuyou.net系统gho:最纯净好用系统下载站广告联系 QQ:184822951 微信:wuyouceo
查看: 437018|回复: 1227

win8安装正常:win7/vista安装器,支持安装系统到USB硬盘,可在xp的pe下运行,x86/x64通用

    [复制链接]
发表于 2009-6-4 03:42:59 | 显示全部楼层 |阅读模式
最近一直有人在问怎么在xp核心的pe中安装win7,我在一些回帖中简略提到过方法,在这索性总结一下,把其中所需的工具发上来。

由于xp核心的pe不能直接运行win7的setup.exe,就直接从install.wim解压安装,三条命令即可。
假设要安装win7/2008 r2的分区在pe下盘符是c:,光盘盘符是d:(虚拟光驱也行),激活主分区盘符为e:
1、imagex /apply d:\sources\install.wim 5 c:    (注意,这里5是指ultimate版,要装其它版本把这个数字换成其它)
2、bcdboot c:\windows /s e: /l zh-CN            (一条命令搞定bootmgr和bcd,并把启动菜单设成中文的)
3、bootsect /nt60 e:                                (写入c:盘的bootmgr引导扇区)   

执行了以上命令之后,重启即可

以上3个程序可以从下面的安装器中提取,目前试验最好的版本是7600的imagex/bootsect以及7000的bcdboot

下面的安装器是基于上面的原理制作的,其中代码最基本部分来自zjqcomputer (小小强),我在此基础上作了很多修改和增强。

感谢yuanxin8701 制作了图形版,详见649楼  (由于论坛的bug,如果649楼没有的话,请到639楼找)
2楼是安装器更新记录

下载:
NT6.X快速安装器100227.part1.rar (500 KB, 下载次数: 53799)

评分

参与人数 4无忧币 +130 收起 理由
2010ttt + 100 我很赞同
fh123456 + 10 感谢您做出的好东东。安装win7确实方便多了
66369 + 10 精品文章
jonson_qf + 10 精品文章

查看全部评分

发表于 2009-6-5 08:40:39 | 显示全部楼层
原帖由 zhxy9804 于 2009-6-5 08:11 发表
还有,你用的nsis打包软件也发上来,我也学习一下制作安装程序。
有nsis脚本简单介绍吗?

太大,不好上传。我用的是NSIS 2.14。网上一搜一大堆。
NSIS 教程也一搜一大堆。
回复

使用道具 举报

 楼主| 发表于 2009-6-4 03:50:04 | 显示全部楼层
安装器更新记录

2012-03-01:
测试了win8的beta版,安装一切正常。
GUI版会出现无法识别nt 6.2版本的问题,不过手动确认非vista/2008后也正常

2010-02-28更新:
1、增添对一些由wimtool制作的非标准wim文件的检测,提示用户确认版本
2、增添对nt 5.x的wim的检测

2010-02-19更新:
1、修正了输入单一空格退出的bug,并修改了提示。
2、修正了光驱、软驱没盘时,某些杀毒软件的所给出额外出错提示


2010-01-20添加yuanxin8701 制作的图形版,详见649

2010-01-03更新:
1、重新整理了一下代码,去除了一些多余代码,增加了注释和可读性。以便与bootland发布的同步
2、根据install.wim安装源自动判断bcdboot /l后面启动菜单的语言,避免了安装其他语言系统时提示中文启动文件缺失的问题。


09-12-20更新:
修改了安装系统到usb的处理方法,舍弃了原来inf修改和替换的方法。改用了注册表项监控程序usbbootwatcher,这样无需再修改和替换inf,可以让各个版本的系统安装到usb硬盘,安装补丁也不受影响。
现在任意版本的vista/2008/win7/2008 r2(任意sp版本)都能装到usb硬盘上了。

09-12-05更新:
感谢“系统维护”制作的utf8->ansi的转码器,这下彻底解决了中文乱码的问题。这个utf8togbk的源代码在
480楼


09-12-02更新:
1、把我的osletter7.cmd包含到了安装器中,大家安装win7/2008 r2时可以自己决定windows所在分区在系统占用哪个盘符
2、写了一个简单的readme,里面包含了本安装器的特点介绍以及本贴后面的注意事项。可以在开始时显示出来


09-11-21更新:
1、根据ioripalm的报告,修正install.wim包含超过10个映像时映像号选择的bug,现在支持install.wim最多包含999个映像
2、根据之前翻译以及一些网友反映的情况,修正了中文版的一些提示信息


09-11-01更新:
应巴基斯坦的网友maanu的请求,翻译制作了英文版,中文版没动。由于代码每变动过,因此英文版版本号依旧是090915

09-09-15更新:
1、根据dvd008 的报告,6001的bootsect在某些pe上无法正常执行,所以用7600的bootsect替换了
2、为适应某些过度精简的winpe,格式化前增加了format命令是否存在的判断
3、增加了对$oem$文件夹处理的处理

09-09-06更新:
隐藏了bcdboot某些错误提示的显示。

09-09-05更新:
1、
安装器支持VISTA/2008安装。
     我找到一段微软写的盘符调整cmd脚本,稍加修改后引入了安装器,使得vista/2008用此方法不会出现31楼的问题了。
2、小修正,以适应那些存在后期自动脚本SetupComplete.cmd的系统


09-09-03更新:
1、修正分区容量判断部分的一个bug
2、一些显示改进
3、感谢alexo帮忙更改了一些文字表述


09-09-02更新:
1、修正一个由bootsect命令的/force参数导致bcdboot写缓存没跟上的bug (感谢comiclife的试验)
2、修正wim文件路径有空格时的bug
3、增加安装分区容量判断

09-09-01更新:
1. 启动菜单中增加对XP等ntldr系统的多系统启动支持
2. 系统安装到USB移动硬盘时会自动禁用休眠
3. 增加目标分区NTFS的检测,因为Win7要求系统分区必须是NTFS

09-08-27更新:
1、添加了usb驱动后期处理,支持直接把win7/2008 r2直接装到usb移动硬盘上,x86/x64的系统都支持。
     至于具体修改的原理,3楼有简单介绍,感兴趣的可以直接看cmd代码。
2、小修正:添加了格式化判断,如果系统盘已有windows文件夹,则会提示格式化。

09-08-11更新:
感谢zjqcomputer (小小强)制作的工具,可以自由查看和选择版本,在任意版本32位的winpe中可以安装,在win2000 sp4以上windows中也可以


[ 本帖最后由 fujianabc 于 2012-3-1 18:26 编辑 ]

评分

参与人数 2无忧币 +20 收起 理由
北斗 + 10 fujianabc大辛苦了,安装器连Win8也开 ...
NicTense + 10 好东西,笑纳了

查看全部评分

回复

使用道具 举报

发表于 2010-1-19 19:58:14 | 显示全部楼层
fujianabc,复制$oem$文件夹 有什么用处?复制过去后可以自动激活吗?
回复

使用道具 举报

发表于 2010-1-18 20:40:21 | 显示全部楼层
原帖由 fujianabc 于 2010-1-18 20:27 发表

我手上现在没有64位环境,测试不了。

我一楼的安装器可以在64位windows的wow64下运行,但不能在64位pe下运行,因为里面的exe全是32位版的。



嗯,那我最多也是wow64了...

[ 本帖最后由 yuanxin8701 于 2010-1-18 20:42 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2010-1-18 20:27:38 | 显示全部楼层
原帖由 yuanxin8701 于 2010-1-18 18:44 发表



大致明白了,这两天看看能不能完善一下。。。

不知我写的软件能否在64位系统下运行不。

我手上现在没有64位环境,测试不了。

我一楼的安装器可以在64位windows的wow64下运行,但不能在64位pe下运行,因为里面的exe全是32位版的。
回复

使用道具 举报

发表于 2010-1-18 18:44:20 | 显示全部楼层
原帖由 fujianabc 于 2010-1-18 16:40 发表

对的,我就是在安装时先判断启动分区是否存在ntldr/boot.ini,如果存在就在根目录下建一个$ntldr文件夹作为标识。

然后oobe阶段的SetupComplete.cmd执行脚本时发现有$ntldr就执行添加ntldr菜单的语句,并删 ...



大致明白了,这两天看看能不能完善一下。。。

不知我写的软件能否在64位系统下运行不。

[ 本帖最后由 yuanxin8701 于 2010-1-18 18:45 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2010-1-20 20:56:04 | 显示全部楼层
原帖由 yuanxin8701 于 2010-1-20 16:46 发表
如NTLDTR启动支持

拷贝setupcomplete.cmd的时的一个bug:
如果windows文件夹下没有Setup\Scripts文件夹,拷贝此文件会失败。
(在我原来的代码中,先判断是否存在windows\Setup\Scripts文件夹,如果不存在先md创建文件夹,然后再复制)

另外你的exe程序能否改一下文件名,ifww是什么意思?另外可以方便放到一楼以后更新时识别。

另一个问题,希望安装完后提示信息中"添加请重新启动"的语句。

已经放到一楼

[ 本帖最后由 fujianabc 于 2010-1-20 21:06 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2010-1-20 20:49:26 | 显示全部楼层
原帖由 cnn_5454 于 2010-1-20 18:44 发表
请问
$oem$
“目录位置”是不是有要求
我把INSTALL.WIM 和$oem$放在U盘
然后用PE启动
U盘安装

$oem$里面的证书文件好像没有被系统载入,安装完成之后,手动载入才能激活

貌似要通过setup.exe安装系统,才会自动加载证书的
回复

使用道具 举报

发表于 2010-1-20 20:30:33 | 显示全部楼层
打开WIM文件崩溃问题已经解决,重新上传至649L,请重新下载测试,谢谢。。。
回复

使用道具 举报

发表于 2010-1-20 19:16:25 | 显示全部楼层
原帖由 北斗 于 2010-1-20 18:54 发表


在XP下,试运行,结果一打开install.wim就崩溃,打开MSDN的英文版还是中文版都不行,第三方的 N in 1也不行

PE下还没试过



嗯,超囧。在WIN7下没事,刚在XP和03PE下试了,均出现错误,只能取消下载,找原因了。。。

Vista下也没事,但是VIsta和WIN7使用XP兼容模式就不行了。。。之前那个版本倒是没这个问题。。。

[ 本帖最后由 yuanxin8701 于 2010-1-20 19:22 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-6-4 04:12:29 | 显示全部楼层
usb移动硬盘启动windows 6.x原理大致介绍

系统默认的情况下,usb驱动在启动之后才加载,而如果要让系统从usb启动,就必须让系统在启动时就加载usb驱动,因此把注册表中所有usb存储驱动项的加载方式改为boot,修改内容相见安装器里的usb.reg。
但光修改这几项是不够的,因为系统随时会把这几个注册表项还原(比如扫描安装硬件驱动阶段、新插入usb设备、新安装补丁等),这样下次重启会0x7b蓝屏。有两种方法可以防止这几项注册表还原,一种是修改inf文件,另一种是安装注册表监控程序。
本安装器2009年12月19日之前版本用了第一种方法,之后的版本采取了第二种方法。下面分别简单介绍一下:

方法一:修改替换inf文件
这种方法本质上就是修改了usb驱动的默认注册表设置项,因为注册表更改会按照inf的内容来进行,所以改了inf后,会按照inf的内容来还原。具体方法是把usb驱动的usb.inf,usbstor.inf,usbport.inf中与加载相对应的项作以下修改:
搜索.AddService],把其下starttype和LoadOrderGroup 项改为
[*.AddService]
StartType = 0
LoadOrderGroup = boot bus extender
然后要在3个文件夹中替换inf文件。替换文件的小技巧:因为直接替换几个inf需要先解除权限,比较麻烦,但微软自己的imagex拥有修改系统文件的权限,能随便替换系统文件,所以把要替换的inf打包到一个wim中,imagex直接解压就能覆盖。
这种方法,很麻烦,而且不通用,每个版本要修改相应的inf,并且如果遇到系统更新,以上修改便会失效。

方法二:usb注册表项监控
正由于以上方法的不通用性,所以在之后采用了另一种方法,就是安装程序来实时监控注册表usb存储相关的这些项,一但有更改立刻还原,这样就免去了inf修改以及替换的麻烦。而且各个版本通用,系统更新也没问题。
在911cd上,有人专门写了一个usb注册表项监控程序usbbootwatcher
http://www.911cd.net/forums//index.php?showtopic=22473
我把它引入了本安装器中,这样任意版本的vista/2008/win7/2008 r2(任意sp版本)都能装到usb硬盘上了。

usbbootwatcher使用的技巧:
1、把服务类型改成0x20(默认0x10),这样才在第一次重启后进入硬件配置阶段(微软叫specialize阶段)时自动运行
2、要把usbbootwatcher服务的注册表项添加到安全模式的加载项中,否则安全模式下该监控程序不会启动
以上两点都已经添加到了usb.reg中

[ 本帖最后由 fujianabc 于 2009-12-20 22:54 编辑 ]
回复

使用道具 举报

发表于 2009-6-4 08:05:42 | 显示全部楼层
谢谢楼主,这个问题让你给解决了,不过,还要再简单一点就更好了
回复

使用道具 举报

发表于 2009-6-4 09:42:43 | 显示全部楼层
这样子安装看起来比较简单...

但是用原来的安装程序好像有一些设置.这个的设置要在哪里设置?重启后可以设置吗?

还没有试过.
回复

使用道具 举报

发表于 2009-6-4 11:08:02 | 显示全部楼层
我用PE裡的WIN7簡易安裝器成功安裝WIN2K8 SP2,展開文件至26%時會出錯,不管它,重啟可繼續安裝.
回复

使用道具 举报

 楼主| 发表于 2009-6-4 15:20:56 | 显示全部楼层
原帖由 chenall 于 2009-6-4 09:42 发表
这样子安装看起来比较简单...

但是用原来的安装程序好像有一些设置.这个的设置要在哪里设置?重启后可以设置吗?

还没有试过.

原来安装程序的设置部分包括时区、接受协议、输入序列号等。

这些设置在win7已经移到系统安装完后,第一次登陆前了。

原帖由 zhxy9804 于 2009-6-4 07:56 发表
imagx 在pe中需要组件支持吧?

现在大家玩得pe 1.x里面都有wim挂载组件和驱动,因此直接就能用imagex.exe

[ 本帖最后由 fujianabc 于 2009-6-4 15:23 编辑 ]
回复

使用道具 举报

发表于 2009-6-4 17:10:35 | 显示全部楼层
@echo off
REM %1 安装win7/2008 r2分区在winpe中的盘符
REM %2 光驱盘符
REM %3 启动分区,即激活主分区在winpe中的盘符
imagex /apply %2\sources\install.wim 5 %1
bcdboot %1\windows /s %3 /l zh-CN
bootsector /nt60 %3


本人没有玩过Win7和Vista,现请教:红色两条命令有没有先后之分,即先执行bootsector再执行bcdboot
回复

使用道具 举报

发表于 2009-6-4 17:29:51 | 显示全部楼层
应该没有先后之分吧,bootsect 改写磁盘主启动代码,如果是Vista及其以上,winpe2.0及其以上系统diskpart或磁盘管理工具创建的活动主分区则不需执行此命令,如果是第三方工具如 diskgenius工具创建的就必须执行此命令

bcdboot 处理系统引导,自动创建 bcd 文件

[ 本帖最后由 lqcai 于 2009-6-4 20:15 编辑 ]
回复

使用道具 举报

发表于 2009-6-4 18:01:15 | 显示全部楼层
原帖由 lqcai 于 2009-6-4 17:29 发表
应该没有先后之分吧,bootsector 改写磁盘主启动代码,如果是Vista及其以上,winpe2.0及其以上系统diskpart或磁盘管理工具创建的活动主分区则不需执行此命令,如果是第三方工具如 diskgenius工具创建的就必须执 ...


如果是这样,用WIM可以完全代替GHO的实现万能封装了,展开WIM映像比解开GHO文件快多了,不同版本要求的系统封装到同一个WIM同会比GHO文件省体积,唯一不足是将系统封装成WIM时需要的时间比GHO封装的要多(一次封装的时间长,以后每次安装的时间短,还是有优势的)。

谁来为它做个图形外壳?
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2019-9-18 04:52

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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