velino 发表于 2012-9-12 21:35

windows 7+windows 8无风险,安全,完美的简单合盘方法和思路

本帖最后由 velino 于 2012-9-13 11:26 编辑

本人原帖地址:http://bbs.wuyou.com/post.php?action=edit&fid=45&tid=256556&pid=2565605&page=1&extra=page%3D1

我把编译的程序和源代码以及ISOCMD上传了。坑爹的附件尺寸要小于102.4KB,只能上传到迅雷快传了
http://kuai.xunlei.com/d/ZVTHQTVUGTSM


有些注意事项在14楼
第四步有个小错误,修正了一下


三楼多图
这几天琢磨着把Windows 7,Windows 2008,Windows 8这几个系统32位和64位的整合到一起。
开始只是简单的将7/8/2008的install.wim整合到一起,测试的时候发现如果使用Windows 7的镜像7/2008可以正常安装,但是win8却无法正常安装。
而如果用Windows8光盘镜像的话,则出现很奇怪的问题,不是Windows 7找不到License,要不就是Windows 8找不到License。而Windows 2008肯定是找不到License,即使把boot.wim:2里面 License文件全数复制到Windows 8的boot.wim也不行。
之后在网上查到个方法,把这几个不同系统的SOURCES文件夹改名,然后用WinHex修改boot.wim:2中的SOURCES\setup.exe和光盘根目录下的SOURCES\autorun.dll,改成对应的路径,但是测试过很多遍,始终无法成功。
经过不断的搜索、测试,终于找到了一个办法。

PE启动时会在X:\SOURCES目录下寻找setup.exe文件来进行安装, 如果SOURCES目录没有SETUP.EXE,那么winpeshl.exe会执行system32目录下的winpeshl.ini所指定的文件。如果winpeshl.ini没有指定程序或没有此文件,那么winpeshl.exe将会执行system32目录下的startnet.cmd文件,默认PE下存在此文件,会加载网络配置。我们解决这个boot.wim,可以使用imagex也可以使用sources目录的dism.exe。

       我的构思是,用bootmgr启动一个Windows 8的PE,这个PE从光盘镜像里的boot.wim修改而来,启动PE后,用教本和工具挂载位于移动硬盘或U盘的Windows 8的光盘镜像,然后自动运行镜像根目录下的setup.exe,开始安装。

废话结束了,现在开始动手吧。




================万恶的分隔符====================



一、准备一个移动硬盘,如果有足够大的U盘也行。

可以把移动硬盘前面分出一个10G或20G 的分区,如果你还要放入Windows 7、Windows 2008的话,建议20G。
另外,如果希望是直接用bootmgr启动的话,用NTFS文件格式,在磁盘管理器里面设置为活动,可以省不少的事情。如果···想和我一样,用easyboot启动的话,就一定要用FAT32文件格式了,具体操作在后面详述。如果之前做过Windows 7移动硬盘安装,里面应该还有Windows 7的文件夹。当然,如果不准备加入Windows 7的话,可以用官方的工作制作,下面就不用看了。
如果install.wim文件超过了4G,可以用imagex /split命令对install.wim进行分卷。Install.wim分卷后的后缀名一定swm。install.swm、install1.swm、install2.swm……
我把Windows 7和Windows 2008还有25个品牌的OEM系统的32位和64位,总共67个镜像,有更新最新的补丁和IE,最终得到install.wim是5.68G···
命令格式:



imagex /split install.wim install.swm
4000




后面的4000表示大小,单位是M


http://i.imgur.com/vSCX6.jpg


二、整合Windows 8的3个版本的32位和64位,共6个。

标准版和专业版里面的install.wim都包含这两个版本,企业版的install.wim中只有企业本的镜像。所以只需要把企业版的镜像整合到标准版和专业版里面。
用imagex /export命令进行整合,相信大家都会了,此处不再赘述了。
需要注意的是,32位和64位里面的镜像名称和描述都是一样的,在进行32位和64位整合的时候一定要先用imagex /info命令修改名称和描述。
还有要注意的是,Windows 8里面的ei.cfg不能直接删除,否则安装程序会要你先输入序列号。用记事本打开sources\ei.cfg,删除里面的所有内容,把下面的代码复制到里面保存即可。


Professional
Enterprise
Starter
HomeBasic
HomePremium
Professional
Ultimate

Retail
Volume
OEM

5

将做好的install.wim和ei.cfg用UltraISO替换到32位的系统镜像中。不需要解压出来。只能用32位的。我因为特殊原因,只能将32位和64位做成两个镜像。如果大家用的最简单的启动方式而且是NTFS分区,32位和64位做到一个镜像里面也行,方法大同小异。

三、用Autoit制作一个能直接调用setup.exe的程序
    此处的setup.exe是光盘镜像根目录下的setup.exe,而不是SOURCES里面的setup.exe。
相信大家对Autoit都不会陌生,XP时代做Windows集成的时候多多少少都会用到。
没有的可以去http://www.autoitx.com/上免费下载一个,安装好以后,打开桌面上的SciTE编辑器,然后粘贴下面一段代码,保存。

#NoTrayIcon
$temp = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z"
$findiso = StringSplit($temp, ",")
For $n = 1 To $findiso
If FileExists($findiso[$n] & ":\win8setup32.iso") Then
$root = $findiso[$n]
ExitLoop
EndIf
Next
$file = FileOpen("x:\windows\system32\loadiso.cmd", 9)
FileWrite($file, "cd %systemroot%\system32" & @CRLF & "IsoCmd.exe -I" & @CRLF & "IsoCmd.exe -Mount 0: " & $root & ":\win8setup32.iso" & @CRLF & "del %0")
FileClose($file)
RunWait("x:\windows\system32\loadiso.cmd", "x:\windows\system32", @SW_HIDE)
$findsetup = StringSplit($temp, ",")
For $n = 1 To $findsetup
If FileExists($findsetup[$n] & ":\setup.exe") And FileExists($findsetup[$n] & ":\SOURCES\setup.exe") And FileExists($findsetup[$n] & ":\SOURCES\install.wim") Then
$isoroot = $findsetup[$n]
ExitLoop
EndIf
Next
RunWait($isoroot & ":\setup.exe")



注意:代码第五行和第十一行的win8setup32.iso根据需要改成需要的文件名。

打开工具→编译脚本,弹出编译窗口,输出类型为exe,在32位程序后面的文本框中输入setup32.exe,输出架构只需要勾选使用X86版本,然后点编译脚本,编译完毕后会在脚本的同路径下生成一个setup32.exe文件。放好备用。保存的文件名随意,但是一定要和winpeshl.ini里的文件名一样。


http://i.imgur.com/KIhuV.jpg


====未完,楼下继续====

velino 发表于 2012-9-12 21:37

本帖最后由 velino 于 2012-9-13 11:27 编辑



==========接楼上============


四、料理boot.wim

此处有错误先把Windows 8 32 位的光盘镜像里面的SOURCES文件夹解压到移动硬盘更目录下并重命名为win8setup。只能用32位的。
把win8setup下面的boot.wim复制出来放到其他地方,此处有错误

正确的应该是把前面做好的光盘镜像重命名为win8setup32.iso和win8setup64.iso,放到移动硬盘根目录下。

(本文只以win8setup32.iso作为例子,64位的win8setup64.iso方法一样,32位和64位整合到一起的单镜像也一样)

提取出32位的boot.wim复制出来放到其他地方,我将他复制到e:\,然后在e:\下新建一个文件夹boot,打开cmd窗口,运行一下命令。

dism /mount-wim /wimfile:e:\boot.wim /index:2 /mountdir:e:\boot


http://i.imgur.com/bTUY4.jpg

接下来,进入E:\boot\sources,把setup.exe改名为winsetup.exe,注意需要先获取所有权。然后把刚刚编译好的setup.exe连同IsoCmd的三个文件一起放到E:\boot\Windows\system32里面,然后在E:\boot\Windows\system32下面新建winpeshl.ini文件,用记事板打开,粘贴下面的代码,保存。


setup64.exe

这些做完,确认无误后,打开cmd窗口,敲入命令,保存对映像的修改。

dism /unmount-wim /mountdir:e:\boot /commit

需要注意的是,保存卸载之前一定要把和e:\boot有关的文件夹和文件完全关闭,否则会卸载失败。

http://i.imgur.com/Lch53.jpg
卸载完成后把e:\boot.wim复制到移动硬盘的根目录下面,并重命名为win8setup32.wim。这个名字随意,但是要和BCD里面的一样。
然后把第二步做好的光盘镜像复制到移动硬盘的根目录下面,并重命名为win8setup32.iso,这个名字要和autoit脚本里面的设置的文件名一样。

===未完,楼下继续====


velino 发表于 2012-9-12 21:37

本帖最后由 velino 于 2012-9-12 21:55 编辑

============接楼上============

五、设置从移动硬盘启动

U盘和移动硬盘的设置方法大同小异,基本一样。这里只讲讲移动硬盘,相信不会有多少人用U盘做的。
首先,从已经安装好的Windows 8系统里面的boot文件夹和bootmgr复制到根目录,当然,用光盘镜像里面boot和bootmgr也行,不过中文显示不出来。然后用bcdedit命令或者easybcd、bcdtool修改boot\bcd启动类型。具体方法也不详述了,这不是重点。以下是我的bcd配置,大家可以做个参考。


C:\Users\Administrator>bcdedit /store h:\boot\bcd

Windows 启动管理器
--------------------
标识符               {bootmgr}
device               partition=H:
description       Windows Boot Manager
locale                zh-CN
inherit               {globalsettings}
default            {default}
displayorder   {default}
                        {50e83817-fbdd-11e1-9589-14feb5e094f3}
                        {b4b7350f-fcc1-11e1-a38e-14feb5e094f3}
                        {37156ebf-fbde-11e1-9589-14feb5e094f3}
toolsdisplayorder         {memdiag}
timeout            30
dispalybootmenu          Yes

Windows 启动加载器
-------------------
标识符      {7619dcc9-fafe-11d9-b411-000476eba25f}
device                  ramdisk=\sources\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
path                     \windows\system32\boot\winload.exe
description          安装 Windows 7 SP1 , Server 2008 R2,OEM 50 IN 1.(全版本,X86+X64)
locale                  zh-CN
inherit               {bootloadersettings}
osdevice             ramdisk=\sources\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
systemroot         \windows
nx                     OptIn
pae                     Default
custom:250000c2         1
detecthal            Yes
winpe                  Yes
sos                      No
debug                  No
ems                      No

Windows 启动加载器
-------------------
标识符      {50e83817-fbdd-11e1-9589-14feb5e094f3}
device               ramdisk=\win8setup32.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
path          \windows\system32\boot\winload.exe
description          安装 Windows 8 32位
locale                   zh-CN
inherit               {bootloadersettings}
osdevice            ramdisk=\win8setup32.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
systemroot          \windows
nx                        OptIn
pae                      Default
custom:250000c2       1
detecthal            Yes
winpe                  Yes
sos                     No
debug                   No
ems                      No

Windows 启动加载器
-------------------
标识符      {b4b7350f-fcc1-11e1-a38e-14feb5e094f3}
device               ramdisk=\win8setup64.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
path                     \windows\system32\boot\winload.exe
description          安装 Windows 8 64位
locale                  zh-CN
inherit                  {bootloadersettings}
osdevice                ramdisk=\win8setup64.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
systemroot            \windows
nx                        OptIn
pae                      Default
custom:250000c2       1
detecthal             Yes
winpe                  Yes
sos                     No
debug                  No
ems                      No

Windows 启动加载器
-------------------
标识符      {37156ebf-fbde-11e1-9589-14feb5e094f3}
device               ramdisk=\sources\WIN7PE.WIM,{7619dcc8-fafe-11d9-b411-000476eba25f}
path                     \windows\system32\boot\winload.exe
description         启动 Windows 7 PE x86
locale               zh-CN
inherit               {bootloadersettings}
osdevice            ramdisk=\sources\WIN7PE.WIM,{7619dcc8-fafe-11d9-b411-000476eba25f}
systemroot          \windows
detecthal            Yes
winpe               Yes
ems                  No

C:\Users\Administrator>


1、直接bootmgr启动。
这种方法最简单也最方便。如果对硬盘内容有洁癖的话,在磁盘管理器里面分个足够大小的主分区,格式化为NTFS文件系统,设置为活动就可以了。

2、用easyboot启动。
这个方法稍微有点麻烦,但是从美观和灵活性来说,我还是比较喜欢这种,但是也有两个缺点。一是分区必须是FAT32格式的,二是不能针对该分区进行检查修复操作(包括开机时候提示的那种磁盘检查,这种情况多发生于正在对改分区写入数据的时候强行拔下数据线),如果不幸被检查修复了,只会从bootmgr启动了。
首先,用easyboot做一个足够好看的启动界面,做完以后将EZBOOT文件夹放到分区根目录下。并将EZBOOT下的EZLDR复制到根目录下。
然后,打开UltraISO,点击菜单栏的启动→写入硬盘映像,弹出窗口中选择硬盘驱动器为你要制作启动盘的那个移动硬盘,这里只会显示USB接入的存储设备。点击下面的便捷启动,在写入新的硬盘主引导记录(MBR)中选择USB-HDD+,提示写入成功后,再次点击便捷启动,在写入新的驱动器引导扇区中选择EasyBoot,提示写入成功后就可以关闭了。现在,你的移动硬盘或者U盘就可以从easyboot制作的启动菜单启动了。


http://i.imgur.com/UTPCq.jpg

http://i.imgur.com/s9R6u.jpg

要注意的是,写入硬盘映像的移动硬盘只能有一个分区,如果后面有第二个,或者更多的分区怎么办?没关系,直接在系统自带的磁盘管理中删除后面的所有分区,包括扩展分区,只保留第一个分区。这样就可以写入主引导记录和引导扇区了。另外如果不幸启动分区被检查修复了,也可以用这个方法,只需要重新写入引导扇区就可以了。

http://i.imgur.com/wme5x.jpg
那么删除的分区怎么办?看下面。
对于删除掉的分区可以用Acronis进行恢复,这个东西恢复分区效果杠杠的。
我用的是Acronis Disk Director 11 Advanced,网上下载的非常多,这里我给大家提供两枚序列号。

Advanced Workstation:
H9NL5SZ5-EN6BD5ED-A7P9D22V-8WXZ5QAG-4G5XK7JS-X52BEDQX-J9J8UUAC-KRLG8GAT
Advanced Server:
XMSZFNCK-4XGKSW6X-TH4XGVX6-EZFW9ZBE-KVK2DMLW-LJVT2WXD-9JKQADAV-SUFCULHU


Acronis是根据序列号区分版本的。
言归正传,先打开Advanced,点上方的工具→Acronis Recovery Expert,点下一步,选择手动,下一步,选择那个被删除的区域。

http://i.imgur.com/t6wLf.jpg

http://i.imgur.com/sPhsF.jpg

http://i.imgur.com/xI0gn.jpg
点击下一步,默认快速,下一步,程序已经搜索到了刚刚删除的那个分区,选中,点下一步,下一步,继续,程序会自动处理,处理完了,弹出恢复完成的窗口。

http://i.imgur.com/mgqzI.jpg

http://i.imgur.com/DgDiF.jpg

http://i.imgur.com/1dhIA.jpg


这是我的移动硬盘根目录

http://i.imgur.com/AFQnO.jpg




这个分区大小是20G,这些东西14.4G
http://i.imgur.com/sz5lA.jpg

这个是H:\SOURCES里面,这里面的install.wim集成了Windows7的9个版本,Windows 2008的8个版本,和25个OEM的Windows 7 旗舰版的32位和64位,共50个,总计67个映像。因为Windows 7的9个版本全部集成最新的补丁和IE9,有点大,达到了5.68G,无奈只能分卷。

http://i.imgur.com/a0fq5.jpg

用移动硬盘启动的界面,别吐槽背景,几年前做的。QQ和邮箱都是我的真实QQ和邮箱。

http://i.imgur.com/oEr6U.jpg

不解释,自己看图

http://i.imgur.com/jXqiX.jpg

用Windows 8的启动文件,不见了难看的载入进度条

http://i.imgur.com/YLLcE.jpg

bootmgr的第一个启动项目,集成了64个映像

http://i.imgur.com/j7m27.jpg

http://i.imgur.com/9brCO.jpg

http://i.imgur.com/FZQ93.jpg

Windows 8安装
http://i.imgur.com/ycW5t.jpg

http://i.imgur.com/GcPdq.jpg





MAXDOS

http://i.imgur.com/xYiln.jpg


====结束=====

whzhdh 发表于 2012-9-13 15:50

LZ不简单,要支持。

wadsqee 发表于 2012-9-13 20:18

支持哇嘎嘎改天也换来试试   

5235175zhy 发表于 2012-9-14 14:00

学习了,谢谢

yidengbone 发表于 2012-9-15 08:46

看着就头晕,谢谢楼主分享。

contex 发表于 2012-9-16 10:12

真是高手{:5_264:}

m0762 发表于 2012-9-17 11:23

LZ不简单,支持。

壮志在我胸向往 发表于 2012-9-18 15:03

想体验下win8,可是不会装

mangos888 发表于 2012-9-18 21:16

ssasasasfdasasd

tian7104 发表于 2012-9-20 02:55

我火星来得

bjiale007 发表于 2012-9-20 06:43

强,学习中..................

ahoo777 发表于 2012-9-21 08:44

相当的详尽.表示mark一下.   回头再看

飞翔icanfly 发表于 2012-9-27 19:45

同时装win7win8

pcbaoer 发表于 2012-9-30 12:30

不简单呀 64个!!!纯支持

mengxiangde 发表于 2012-10-8 12:01

找了好久,三年了,终于找到了,太好了,哈哈。多谢楼主。

mengxiangde 发表于 2012-10-8 12:03

楼主啊,你的源码和isocmd下载不了,过期了。能否发到我的邮箱里:mengxiangde@sina.com。

qiyanjie 发表于 2012-10-15 13:00

好是好,可惜离我们这些菜鸟距离太遥远了

hello666 发表于 2012-10-16 17:58

感谢分享了,来学习一下了
页: [1] 2
查看完整版本: windows 7+windows 8无风险,安全,完美的简单合盘方法和思路