- #Region ;**** 参数创建于 ACNWrapper_GUI ****
- #AutoIt3Wrapper_icon=ico.ico
- #AutoIt3Wrapper_outfile=Z:\C\tools\wim\bbzwim.exe
- #AutoIt3Wrapper_Res_Comment=笨笨朱制作
- #AutoIt3Wrapper_Res_Description=系统镜像安装制作 笨笨朱
- #AutoIt3Wrapper_Res_Fileversion=1.0.0.0
- #EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
- #include <ComboConstants.au3>
- #include <TabConstants.au3>
- #include <ButtonConstants.au3>
- #include <GUIConstantsEx.au3>
- #include <WindowsConstants.au3>
- #include <GUIComboBox.au3>
- #include <GuiConstantsEx.au3>
- #include <Constants.au3>
- #include <GUIListBox.au3>
- #include <GuiConstantsEx.au3>
- #include <GuiListView.au3>
- #include <Process.Au3>
- #include <StaticConstants.au3>
- #include <EditConstants.au3>
- #include <Constants.au3>
- #include <StaticConstants.au3>
- #include <ProgressConstants.au3>
- ;#include "DirInstall_udf.au3"
- #include <GUIConstantsEx.au3>
- Global $Image[40], $LevelInfo[40], $LevelDiscrip[40], $BUILD[40], $SPBUILD[40], $FullInfo[40], $Langue[40], $imgvol[40]
- Global $FileNum, $FilePath, $ImageFIle,$Parameter,$ver
- Global $PageNum = 1, $LevelForm, $Levelgroup, $LevelView, $SelectMoreButton, $SelectNextButton, $SelectCancelButton, $Levelgroup2, $LevelLabel, $Label4, $Label5
- Global $DosTool = @TempDir & '\DsptW.eXe'
- Global $IniFile = @TempDir & '\DskVol.InI'
- Global $ShowDrive = @TempDir & '\ShowDrive.eXe'
- Global $ComLine = $DosTool & ' /A /Pdr >' & $IniFile
- Global $DiskForm, $DiskGroup, $DiskList, $DiskNextButton, $DiskCancelButton, $diskgroup2, $diskcheck, $DiskRadio1, $DiskRadio2, $DiskCombo, $DiskRadio3
- Global $LevelMode, $DiskPar, $ActivePar, $TarPar, $TarLan, $FormMode, $OldRead,$wim2
- Global $progressform, $add, $clear, $mylist, $Button1, $nmsg, $EditPage = 2, $BootRes = 0, $FixRes = 0, $ChangeRes = 0, $Progress1, $ProLabe1, $ProLabe2, $ProLabe3, $Label7, $Label8, $ProButton1, $ProButton2, $ProgressEdit
- Global $w[24], $q[4]
- Global $wim1, $wim2, $selectwim
- #Region ### START Koda GUI section ### Form=d:\downloads\autoit脚本\wim安装\temp\wim安装.kxf
- $Form1_1 = GUICreate("笨笨朱 WIM镜像安装与制作", 354, 387, 311, 203)
- $Tab1 = GUICtrlCreateTab(0, 0, 353, 385, -1, $TCS_EX_FLATSEPARATORS)
- GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
- GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
- $TabSheet1 = GUICtrlCreateTabItem("镜 像 安 装")
- $Label1 = GUICtrlCreateLabel("2.选择分区(盘符)", 21, 104, 109, 17)
- $_disk1 = GUICtrlCreateCombo("", 21, 124, 297, 22, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL))
- $Label2 = GUICtrlCreateLabel("1.选择映像文件", 21, 54, 85, 17)
- $_wimimg = GUICtrlCreateCombo("", 21, 174, 297, 22, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL))
- $Label3 = GUICtrlCreateLabel("3.选择需安装的镜像", 21, 154, 109, 17)
- $Progress1 = GUICtrlCreateProgress(21, 224, 297, 15)
- GUICtrlSetState(-1, $GUI_HIDE)
- $Label4 = GUICtrlCreateLabel("文件解压进度:", 22, 204, 152, 17)
- $Label6 = GUICtrlCreateLabel("引导文件修复:", 21, 253, 152, 17)
- $Label7 = GUICtrlCreateLabel("系统文件修正:", 21, 275, 152, 17)
- $Label8 = GUICtrlCreateLabel("系统盘符修正:", 21, 299, 152, 17)
- $_exit = GUICtrlCreateButton("退 出", 134, 341, 57, 25, $WS_GROUP)
- $_sysfix = GUICtrlCreateButton("引导修复", 194, 341, 57, 25, $WS_GROUP)
- $_install = GUICtrlCreateButton("安装执行", 254, 341, 57, 25, $WS_GROUP)
- $Label5 = GUICtrlCreateLabel("剩余时间: --:--", 182, 204, 137, 17)
- $brow1 = GUICtrlCreateButton("浏览", 279, 74, 39, 22, $WS_GROUP)
- $_wimfile1 = GUICtrlCreateInput("", 21, 74, 257, 22)
- $Group1 = GUICtrlCreateGroup("目标分区操作选择", 205, 250, 113, 73)
- $DiskRadio1 = GUICtrlCreateRadio("格式化", 213, 274, 113, 17)
- GUICtrlSetState(-1, $Gui_Checked)
- $DiskRadio2 = GUICtrlCreateRadio("保留原有文件", 213, 298, 113, 17)
- GUICtrlCreateGroup("", -99, -99, 1, 1)
- $TabSheet2 = GUICtrlCreateTabItem("新制和追加")
- $Label9 = GUICtrlCreateLabel("1.选择分区(盘符)", 21, 54, 109, 17)
- $_disk2 = GUICtrlCreateCombo("", 21, 74, 297, 25, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL))
- $Label10 = GUICtrlCreateLabel("2.选择映像文件", 21, 104, 85, 17)
- $Label11 = GUICtrlCreateLabel("3.镜像描述", 21, 154, 61, 17)
- $Label12 = GUICtrlCreateLabel("文件压制进度:", 22, 204, 152, 17)
- $_exit2 = GUICtrlCreateButton("退 出", 134, 341, 57, 25, $WS_GROUP)
- $_wiadd = GUICtrlCreateButton("镜像追加", 194, 341, 57, 25, $WS_GROUP)
- $_wimmak = GUICtrlCreateButton("新制映像", 254, 341, 57, 25, $WS_GROUP)
- $Progress2 = GUICtrlCreateProgress(21, 224, 297, 15)
- GUICtrlSetState(-1, $GUI_HIDE)
- $Label16 = GUICtrlCreateLabel("剩余时间: --:--", 182, 204, 137, 17)
- $_wimfile2 = GUICtrlCreateInput("", 21, 124, 257, 22)
- $brow2 = GUICtrlCreateButton("浏览", 279, 124, 39, 22, $WS_GROUP)
- $_wimvol = GUICtrlCreateInput("", 19, 174, 297, 22)
- GUICtrlCreateTabItem("")
- GUISetState(@SW_SHOW)
- #EndRegion ### END Koda GUI section ###
- $ActivePar = ''
- FileInstall('DsptW.eXe', @TempDir & '\DsptW.eXe', 1)
- FileInstall('ShowDrive.eXe', @TempDir & '\ShowDrive.eXe', 1)
- TrayTip("操作过程", "正在检测本地硬盘", 3)
- If Not FileExists($ShowDrive) Then FileInstall('ShowDrive.Vxd', $ShowDrive, 1)
- _RunDOS($ShowDrive)
- If Not FileExists($DosTool) Then FileInstall('DsptW.Vxd', $DosTool, 1)
- _RunDOS($ComLine)
- Local $diskinfo = FileOpen($IniFile, 0)
- Local $TotalLine = 0
- While 1
- FileReadLine($diskinfo, $TotalLine)
- If @error = -1 Then ExitLoop
- $TotalLine += 1
- WEnd
- Local $LineRead
- $DiskList = ''
- For $LineRead = 3 To $TotalLine - 2
- Local $LineForRead = FileReadLine($diskinfo, $LineRead)
- Local $InfoForRead = StringSplit($LineForRead, " ")
- $te = StringSplit(StringStripWS($InfoForRead[1], 8), ":")
- $te2 = StringLeft(StringStripWS($InfoForRead[2], 8), 1)
- If $te2 = "A" Then
- $te4 = "活 动"
- if $ActivePar = '' then
- $ActivePar = $te[1] & ":"
- endif
- Else
- $te4 = "非活动"
- EndIf
- $mb = 1
- For $i = 4 To $InfoForRead[0]
- If Number($InfoForRead[$i]) > 1 Then
- $q[$mb] = StringStripWS($InfoForRead[$i], 8)
- $mb += 1
- EndIf
- Next
- $qq = $q[$mb - 2] + $q[$mb - 1]
- $w[$LineRead - 2] = $te[1] & ":" & "<" & DriveGetFileSystem($te[1] & ":") & "> " & $te[2] & ":" & $te[3] & " " & $te4 & " " & $q[$mb - 2] & " Mb (总容量)"
- $DiskList = $DiskList & $w[$LineRead - 2] & '|'
- Next
- GUICtrlSetData($_disk1, $DiskList, $w[1])
- GUICtrlSetData($_disk2, $DiskList, $w[1])
- TrayTip("", "", 0)
- While 1
- $nmsg = GUIGetMsg()
- Select
- Case $nmsg = $GUI_EVENT_CLOSE
- _Quit()
- Case $nmsg = $_exit Or $nmsg = $_exit2
- _Quit()
- Case $nmsg = $brow1
- GUICtrlSetData($_wimimg, '', '')
- $FilePath = FileOpenDialog("WIM文件选择", @ScriptDir, "WIM文件 (*.wim)", 1)
- GUICtrlSetData($_wimfile1, $FilePath)
- _FirstForm()
- Case $nmsg = $brow2
- $wim2 = FileSaveDialog("输入WIM文件名", @ScriptDir, "WIM文件 (*.wim)", 2 + 16)
- if StringRight($wim2,4) <>'.wim' then
- $wim2 = $wim2 & '.wim'
- endif
- GUICtrlSetData($_wimfile2, $wim2)
- Case $nmsg = $_install
- $TarPar = StringLeft(GUICtrlRead($_disk1), 2);取盘符号如C:
- ;MsgBox(4096,"haha",$TarPar)
- If GUICtrlRead($DiskRadio1) = 1 Then
- $flag = MsgBox(1+48,"格式化 本地磁盘(" & $TarPar & ")","警告:格式化将删除该磁盘上的所有数据。" & @crlf & "若想格式化该磁盘请单击“确定”。若想退出,请单击“取消”")
- if $flag = 1 then
- TrayTip("操作过程", "正在格式化磁盘", 3)
- _FormatIt()
- endif
-
- ElseIf GUICtrlRead($DiskRadio2) = 1 Then
- _renOld()
- EndIf
- ; _ImageX()
- ; _chksys()
- Case $nmsg = $_sysfix
- _chksys()
- Case $nmsg = $_wimmak
- $Parameter=' /compress max /capture '
- ; $ver = ''
- _capture()
- Case $nmsg = $_wiadd
- $Parameter=' /append '
- ; $ver = ' /verify'
- _capture()
- EndSelect
- WEnd
- ;提取镜像信息
- Func _FirstForm()
- ; MsgBox(4096,"haha",$FilePath)
- TrayTip("初始化程序中", "正在解压核心程序...", 3)
- FileInstall('imagex.exe', @TempDir & '\imagex.exe')
- TrayTip("初始化程序中", "正在提取镜像信息...", 3)
- RunWait('cmd /c ' & @TempDir & '\imagex.exe' & ' /info ' & $FilePath & ' >' & @TempDir & '\wim.txt', @ScriptDir, @SW_HIDE)
- _ReadWim(@TempDir & '\wim.txt')
- FileDelete(@TempDir & '\wim.txt')
- For $i = 1 To $FileNum
- TrayTip("初始化程序中", "正在提取卷信息...", 3)
- RunWait('cmd /c ' & @TempDir & '\imagex.exe' & ' /info ' & $FilePath & ' ' & $i & ' >' & @TempDir & '\wim' & $i & '.txt', @ScriptDir, @SW_HIDE)
- Dim $TXT = @TempDir & '\wim' & $i & '.txt'
- _ReadFullWim($TXT, $i)
- FileDelete($TXT)
- Next
- TrayTip("", "", 0)
- ;_InitialLevelForm()
- EndFunc ;==>_FirstForm
- Func _ReadWim($GhostFname)
- Local $IniLineSum = 0 ; 每次读取一行文本,直到文件结束.
- Dim $EndNum, $FOne = 0, $CDriver, $DDriver, $result = ''
- Dim $TempNum = 1
- While 1
- $line = FileReadLine($GhostFname, $IniLineSum)
- If @error = -1 Then ExitLoop
- ;//-----------------卷号-------
- If StringLeft($line, 12) = "Image Count:" Then
- $FileNum = StringRight($line, StringLen($line) - 13)
- EndIf
- If StringLeft(StringStripWS($line, 1), 6) = '<IMAGE' Then
- $Image[$TempNum] = $IniLineSum
- $result = $result & ' ' & @CRLF & $Image[$TempNum]
- $TempNum += 1
- EndIf
- $IniLineSum += 1
- WEnd
- $EndNum = $IniLineSum - 1
- $Image[$TempNum] = $EndNum
- $IniLineSum = 0
- $result = ''
- For $i = 1 To $FileNum
- $x = $Image[$i]
- While $x < $Image[$i + 1]
- $line = FileReadLine($GhostFname, $x)
- If StringLeft(StringStripWS($line, 1), 6) = '<NAME>' Then
- $LevelInfo[$i] = _XmlChange($line)
- ElseIf StringLeft(StringStripWS($line, 1), 12) = '<DISPLAYNAME' Then
- $LevelInfo[$i] = _XmlChange($line)
- ElseIf StringLeft(StringStripWS($line, 1), 6) = '<BUILD' Then
- $BUILD[$i] = _XmlChange($line)
- ElseIf StringLeft(StringStripWS($line, 1), 8) = '<SPBUILD' Then
- $SPBUILD[$i] = _XmlChange($line)
- ElseIf StringLeft(StringStripWS($line, 1), 10) = '<LANGUAGE>' Then
- $Langue[$i] = _XmlChange($line)
- ElseIf StringLeft(StringStripWS($line, 1), 13) = '<DESCRIPTION>' Then
- $FullInfo[$i] = _XmlChange($line)
- ElseIf StringLeft(StringStripWS($line, 1), 9) = '<DISPLAYD' Then
- $FullInfo[$i] = _XmlChange($line)
- EndIf
- $x += 1
- WEnd
- ;MsgBox(4096,"FullInfo=", $FullInfo[$i])
- $imgvol[$i] = $i & ': ' & $LevelInfo[$i]
- $LevelInfo[$i] = ''
- $FullInfo[$i] = ''
- ; $result=$result&$imgvol[$i]&'|'
- Next
- $result = _ArrayToString($imgvol, '|', 1, $FileNum) ;把一个数组的内容到一个单一的字符串,分隔指定定界符
- GUICtrlSetData($_wimimg, $result, $imgvol[1])
- EndFunc ;==>_ReadWim
- Func _ReadFullWim($GhostFname, $i)
- Dim $FileNum, $EndNum, $IniLineSum = 1, $FullInfo
- While 1
- $line = FileReadLine($GhostFname, $IniLineSum)
- If @error Then ExitLoop
- If StringLeft(StringStripWS($line, 1), 9) = '<DISPLAYD' Then
- $FullInfo[$i] = _XmlChange($line)
- ExitLoop
- EndIf
- $IniLineSum += 1
- WEnd
- EndFunc ;==>_ReadFullWim
- Func _XmlChange($TxtInfo)
- Dim $PreRead = StringSplit(StringStripWS($TxtInfo, 1), "<")
- Dim $NextRead = StringSplit($PreRead[2], ">")
- Return $NextRead[2]
- EndFunc ;==>_XmlChange
- Func _FormatIt()
- TrayTip("操作过程", "正在格式化磁盘", 3)
- FileInstall('format.COM', @TempDir & '\format.COM', 1)
- RunWait("cmd /c " & @TempDir & "\format /fs:ntfs /q /y " & $TarPar & '')
- TrayTip("", "", 0)
- FileDelete(@TempDir & '\format.COM')
- _ImageX()
- _chksys()
- EndFunc ;==>_FormatIt
- Func _renOld()
- FileSetAttrib($TarPar & '\ProgramData', "-RSH")
- FileSetAttrib($TarPar & '\Documents and Settings', "-RSH")
- Local $search = FileFindFirstFile($TarPar & "\*.*"), $result1 = ''
- While 1
- Dim $file = FileFindNextFile($search)
- If @error Then ExitLoop
- If $result1 = '' Then
- $result1 = 'ren "' & $TarPar & '\' & $file & '" "' & $file & '.old"'
- Else
- $result1 = $result1 & ' & ren "' & $TarPar & '\' & $file & '" "' & $file & '.old"'
- EndIf
- WEnd
- RunWait("cmd /c " & $result1 & '', '', @SW_HIDE)
- _ImageX()
- _chksys()
- EndFunc ;==>_renOld
- Func _ImageX()
- Local $foo, $line, $lines, $currentRead
- ; GUICtrlSetState($ProButton2,$gui_enable)
- $Progress1 = GUICtrlCreateProgress(21, 224, 297, 15)
- $LevelMode = StringSplit(GUICtrlRead($_wimimg), ':')
- $TarPar = StringLeft(GUICtrlRead($_disk1), 2)
- $foo = Run('cmd /c ' & @TempDir & '\imagex.exe' & ' /apply ' & $FilePath & ' ' & $LevelMode[1] & ' ' & $TarPar & ' ', @ScriptDir, @SW_HIDE, $STDOUT_CHILD)
- While 1
- $line = StdoutRead($foo)
- If @error Then ExitLoop
- $msg = GUIGetMsg()
- GUICtrlSetData($Progress1, $line, -1)
- Dim $Progress, $ProgressA, $ProgressB, $RemainTime = '', $RemainTimeA, $RemainTimeB, $RemainTimeC
- If StringStripWS($line, 8) <> "" Then
- Dim $TxtRead = StringStripCR($line)
- If StringInStr($TxtRead, "Applying progress") Then
- $ProgressA = StringSplit($TxtRead, "]")
- $ProgressB = StringSplit($ProgressA[1], "[")
- $Progress = StringStripCR(StringStripWS($ProgressB[2], 8))
- EndIf
- GUICtrlSetData($Progress1, StringTrimRight($Progress, 1))
- GUICtrlSetData($Label4, "文件解压进度: " & $Progress)
- If StringInStr($TxtRead, "remaining") Then
- $RemainTimeA = StringSplit(StringLeft($TxtRead, StringLen($TxtRead) - 10), "o")
- $RemainTimeB = StringRight($RemainTimeA[2], StringLen($RemainTimeA[2]) - 7)
- If StringInStr($RemainTimeB, "mins") Then
- $RemainTimeC = StringSplit($RemainTimeB, ":")
- $RemainTime = "剩余时间: " & $RemainTimeC[1] & " 分 " & StringLeft($RemainTimeC[2], 2) & " 秒 "
- ElseIf StringInStr($RemainTimeB, "sec") Then
- $RemainTime = StringLeft(StringStripCR(StringStripWS($RemainTimeB, 8)), 2)
- If StringRight($RemainTime, 1) = "s" Then $RemainTime = StringLeft($RemainTime, 1)
- $RemainTime = "剩余时间: " & $RemainTime & " 秒 "
- EndIf
- EndIf
- If $RemainTime <> '' Then
- GUICtrlSetData($Label5, $RemainTime)
- EndIf
- If StringInStr($TxtRead, "Successfully") Then
- GUICtrlSetData($Label5, "")
- GUICtrlSetData($Label4, "文件解压进度: 完成 ")
- GUICtrlSetState($Progress1, $GUI_HIDE)
- EndIf
- EndIf
- WEnd
- EndFunc ;==>_ImageX
- Func _chksys()
- ; MsgBox(4096,"run=", '_chksys()')
- $TarPar = StringLeft(GUICtrlRead($_disk1), 2)
- TrayTip("操作过程", "正在修复引导", 2)
- If FileExists($TarPar & "\windows\system32\slmgr.vbs ") Then
- _FixBoot()
- TrayTip("操作过程", "正在修复系统位置", 2)
- _FixLetter()
- ; TrayTip("操作过程", "正在更改系统盘符", 2)
- _ChangeLetter()
- If $BootRes = $FixRes = 1 Then
- ; GUISetState(@SW_HIDE)
- TrayTip("操作结束", "系统文件复制成功,现在可以重启", 3)
- DirRemove(@TempDir & "\win7", 1)
- ; Sleep(3000)
- ; Exit
- EndIf
- DirRemove(@TempDir & "\win7", 1)
- ; TrayTip("", "", 0)
- Else
- _FixBoot_xp()
- EndIf
- EndFunc ;==>_chksys
- Func _FixBoot_xp()
- ; MsgBox(4096,"run=", '_FixBoot_xp()')
- ; _DirInstall(@ScriptDir & '\xp')
- FileInstall('NTDETECT.COM', @TempDir & '\NTDETECT.COM', 1)
- FileInstall('attrib.exe', @TempDir & '\attrib.exe', 1)
- FileInstall('boot.ini', @TempDir & '\boot.ini', 1)
- FileInstall('bootfont.bin', @TempDir & '\bootfont.bin', 1)
- FileInstall('ntldr', @TempDir & '\ntldr', 1)
- FileInstall('fixboot_xp.cmd', @TempDir & '\fixboot_xp.cmd', 1)
- FileInstall('bootsect.exe', @TempDir & '\bootsect.exe', 1)
- sleep(5000)
- RunWait("cmd /c " & @TempDir & '\fixboot_xp.cmd' & ' ' & $TarPar & ' ' & @TempDir, @ScriptDir, @SW_HIDE, $STDOUT_CHILD)
- GUICtrlSetData($Label6, "引导文件修复: 完成,重启")
- ; GUICtrlSetState ($Label6,$GUI_SHOW)
- TrayTip("", "", 0)
- ; DirRemove(@TempDir & "\xp", 1)
- FileDelete(@TempDir & '\attrib.exe')
- FileDelete(@TempDir & '\boot.ini')
- FileDelete(@TempDir & '\bootfont.bin')
- FileDelete(@TempDir & '\ntldr')
- FileDelete(@TempDir & '\fixboot_xp.cmd')
- FileDelete(@TempDir & '\bootsect.exe')
- FileDelete(@TempDir & '\NTDETECT.COM')
- EndFunc ;==>_FixBoot_xp
- Func _FixBoot()
- ; MsgBox(4096,"run=", '_FixBoot()')
- Local $foo3, $line, $lines, $currentRead
- ; _DirInstall(@ScriptDir & '\win7')
- FileInstall('bcdboot.exe', @TempDir & '\bcdboot.exe')
- $foo3 = Run("cmd /c " & @TempDir & '\bcdboot.exe' & ' ' & $TarPar & '\windows /s ' & $ActivePar, @ScriptDir, @SW_HIDE, $STDOUT_CHILD)
- While 1
- $line = StdoutRead($foo3)
- If @error Then ExitLoop
- ; $msg = GUIGetMsg()
- GUICtrlSetData($ProgressEdit, $line, -1)
- If StringStripWS($line, 8) <> "" Then
- Dim $TxtRead = StringStripCR($line)
- If StringInStr($TxtRead, "Failure") Then
- GUICtrlSetData($Label6, "引导文件修复: 失败")
- $BootRes = 2
- ElseIf StringInStr($TxtRead, "successfully") Then
- GUICtrlSetData($Label6, "引导文件修复: 成功")
- $BootRes = 1
- EndIf
- EndIf
- WEnd
- If $BootRes = 0 Then GUICtrlSetData($Label6, "引导文件修复: 失败")
- FileDelete(@TempDir & '\bcdboot.exe')
- EndFunc ;==>_FixBoot
- Func _FixLetter()
- Local $foo1, $line, $lines, $currentRead
- FileInstall('fixletter.cmd', @TempDir & '\fixletter.cmd')
- $foo1 = Run("cmd /c " & @TempDir & '\fixletter.cmd' & ' /currentos:' & $TarPar & ' & pause', @ScriptDir, @SW_HIDE, $STDOUT_CHILD)
- While 1
- $line = StdoutRead($foo1)
- If @error Then ExitLoop
- ; $msg = GUIGetMsg()
- GUICtrlSetData($Progress1, $line, -1)
- If StringStripWS($line, 8) <> "" Then
- Dim $TxtRead = StringStripCR($line)
- If StringInStr($TxtRead, "Failure") Then
- GUICtrlSetData($Label7, "系统文件修正: 失败")
- $FixRes = 2
- ElseIf StringInStr($TxtRead, "Script completed") Then
- GUICtrlSetData($Label7, "系统文件修正: 成功")
- $FixRes = 1
- EndIf
- EndIf
- WEnd
- If $FixRes = 0 Then GUICtrlSetData($Label7, "系统文件修正: 失败")
- FileDelete(@TempDir & '\fixletter.cmd')
- EndFunc ;==>_FixLetter
- Func _ChangeLetter()
- Local $foo2, $line, $lines, $currentRead
- FileInstall('osletter7.cmd', @TempDir & '\osletter7.cmd')
- $foo2 = Run("cmd /c " & @TempDir & '\osletter7.cmd' & ' /targetletter:' & $TarPar & ' /currentos:' & $ActivePar & ' ', @ScriptDir, @SW_HIDE, $STDOUT_CHILD)
- While 1
- $line = StdoutRead($foo2)
- If @error Then ExitLoop
- ; $msg = GUIGetMsg()
- GUICtrlSetData($Progress1, $line, -1)
- If StringStripWS($line, 8) <> "" Then
- Dim $TxtRead = StringStripCR($line)
- If StringInStr($TxtRead, "Failure") Then
- GUICtrlSetData($Label8, "系统盘符修正: 失败")
- $ChangeRes = 2
- ElseIf StringInStr($TxtRead, "Script completed") Then
- GUICtrlSetData($Label8, "系统盘符修正: 成功")
- $ChangeRes = 1
- EndIf
- EndIf
- WEnd
- If $ChangeRes = 0 Then GUICtrlSetData($Label8, "系统盘符修正:无需修正")
- FileDelete(@TempDir & '\osletter7.cmd')
- FileInstall('bootsect.exe', @TempDir & '\bootsect.exe', 1)
- RunWait('cmd /c ' & @TempDir & '\bootsect.exe /nt60 sys', @SW_HIDE)
- RunWait('cmd /c ' & @TempDir & '\bootsect.exe /nt60 ' & $ActivePar & ' ', "", @SW_HIDE)
- FileDelete(@TempDir & '\bootsect.exe')
- EndFunc ;==>_ChangeLetter
- Func _capture()
- Local $foo, $line, $lines, $currentRead
- FileInstall('imagex.exe', @TempDir & '\imagex.exe')
- $Progress2 = GUICtrlCreateProgress(21, 224, 297, 15)
- ; $LevelMode=StringLeft(GUICtrlRead($_wimimg), 1)
- $TarPar=StringLeft(GUICtrlRead($_disk2), 2)
- $wimvol=GUICtrlRead($_wimvol)
- ; MsgBox(4096,"run=", 'cmd /c ' & @TempDir & '\imagex.exe' & $Parameter & $TarPar & ' ' & $wim2 & ' ' & '"' & $wimvol & '"' & $ver)
- $foo = Run('cmd /c ' & @TempDir & '\imagex.exe' & $Parameter & $TarPar & ' ' & $wim2 & ' ' & '"' & $wimvol & '"', @ScriptDir, @SW_HIDE, $STDOUT_CHILD)
- While 1
- $line = StdoutRead($foo)
- If @error Then ExitLoop
- $msg = GUIGetMsg()
- GUICtrlSetData($Progress2, $line, -1)
- Dim $Progress, $ProgressA, $ProgressB, $RemainTime = '', $RemainTimeA, $RemainTimeB, $RemainTimeC
- If StringStripWS($line, 8) <> "" Then
- Dim $TxtRead = StringStripCR($line)
- If StringInStr($TxtRead, "Appending ") or StringInStr($TxtRead, "Capturing progress") Then
- $ProgressA = StringSplit($TxtRead, "]")
- $ProgressB = StringSplit($ProgressA[1], "[")
- $Progress = StringStripCR(StringStripWS($ProgressB[2], 8))
- EndIf
- GUICtrlSetData($Progress2, StringTrimRight($Progress, 1))
- GUICtrlSetData($Label12, "文件压制进度: " & $Progress)
- If StringInStr($TxtRead, "remaining") Then
- $RemainTimeA = StringSplit(StringLeft($TxtRead, StringLen($TxtRead) - 10), "o")
- $RemainTimeB = StringRight($RemainTimeA[2], StringLen($RemainTimeA[2]) - 7)
- If StringInStr($RemainTimeB, "mins") Then
- $RemainTimeC = StringSplit($RemainTimeB, ":")
- $RemainTime = "剩余时间: " & $RemainTimeC[1] & " 分 " & StringLeft($RemainTimeC[2], 2) & " 秒 "
- ElseIf StringInStr($RemainTimeB, "sec") Then
- $RemainTime = StringLeft(StringStripCR(StringStripWS($RemainTimeB, 8)), 2)
- If StringRight($RemainTime, 1) = "s" Then $RemainTime = StringLeft($RemainTime, 1)
- $RemainTime = "剩余时间: " & $RemainTime & " 秒 "
- EndIf
- EndIf
- If $RemainTime <> '' Then
- GUICtrlSetData($Label16, $RemainTime)
- EndIf
- If StringInStr($TxtRead, "Successfully") Then
- GUICtrlSetData($Label16, "")
- GUICtrlSetData($Label12, "文件压制进度: 完成 ")
- GUICtrlSetState($Progress2, $GUI_HIDE)
- EndIf
- EndIf
- WEnd
- EndFunc ;==>_capture
- Func _Quit()
- FileDelete(@TempDir & '\wim.txt')
- FileDelete($IniFile)
- FileDelete(@TempDir & '\ShowDrive.eXe')
- FileDelete(@TempDir & '\DsptW.eXe')
- FileDelete(@TempDir & '\imagex.exe')
- ; DirRemove(@TempDir & "\xp", 1)
- Exit
- EndFunc ;==>_Quit
复制代码 回复 25# 苹果控 |