omamont
Цитата:
Сделал, тестируй. [more=Скрипт]
Код:
#NoTrayIcon ;скрыть в системной панели индикатор AutoIt
Global $folder0, $boot0, $metka0, $tom0, $rw0
Global $aPathexe[1]
$close = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\script_az\contmenu_WIM", "close")
If @error=1 Then
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\script_az\contmenu_WIM", "close", "REG_SZ", "0")
$close = '0'
EndIf
$Pathname = StringTrimLeft($CmdLineRaw, StringLen('"'&@ScriptFullPath&'" '))
If $Pathname='' Then Exit
$aPath=StringRegExp($Pathname, "(^.*)\\(.*)$", 3)
$namewim=StringTrimRight($aPath[1], 4)
$wimlist=''
For $i=1 To 20
; Вытаскиваем метку WIM-файла
$rnim = Run(@SystemDir&'\imagex.exe /info "'&$Pathname&'" '&$i, @SystemDir, @SW_HIDE, 2)
$wiminfo1=''
While 1
$line1 = StdoutRead($rnim)
If @error Then ExitLoop
$wiminfo1 &= $line1
Wend
;MsgBox(0, "инфа",$wiminfo1)
$wiminfo1 = StringRegExpReplace($wiminfo1, "(?s).*<NAME>(.*)</NAME>.*", "\1")
If $wiminfo1='' and $i=1 Then
MsgBox(0, "Неувязочка", 'Не найдена метка wim-файла.'&@CRLF&'Без метки извлечь wim-файл невозможно.')
Exit
EndIf
If $wiminfo1='' or StringInStr($wiminfo1,@CRLF)<>0 Then ExitLoop
If $i=1 Then $wiminfo=$wiminfo1
$wimlist&=$wiminfo1&'|'
Next
; конец - Вытаскиваем метку WIM-файла
GUICreate($aPath[1],310,167) ; размер окна
$tab=GUICtrlCreateTab (0,0, 310,148) ; размер вкладки
$checkclose=GUICtrlCreateCheckbox ("Закрывать диалог при клике на кнопке", 10,10,290,24)
If $close = '1' Then GuiCtrlSetState(-1, 1)
$extract=GUICtrlCreateButton ("Извлечь", 10,40,90,24)
GUICtrlSetTip(-1, "Извлечь")
$pack=GUICtrlCreateButton ("Упаковать", 110,40,90,24)
GUICtrlSetTip(-1, "Папка извлечения удалится.")
GUICtrlSetState($pack, 128)
$append=GUICtrlCreateButton ("Добавить", 210,40,90,24)
GUICtrlSetTip(-1, "Добавить новый том к wim"&@CRLF&"Обязательно изменить метку"&@CRLF&"добавляемого тома")
$mount=GUICtrlCreateButton ("Монтир", 10,70,70,24)
GUICtrlSetTip(-1, "Монтировать "&$aPath[1])
$rw=GUICtrlCreateCheckbox ("RW", 90,70,40,24)
GuiCtrlSetState(-1, 1) ; закомментировать эту строку, если не нужна отмеченная галочка RW
GUICtrlSetTip($rw, "RW - с поддержкой изменения"&@CRLF&"файлов в каталоге монтирования")
$create=GUICtrlCreateButton ("Упаковать", 140,70,75,24)
GUICtrlSetState($create, 128)
$unmount=GUICtrlCreateButton ("Демонтир", 225,70,75,24)
GUICtrlSetState($unmount, 128)
$folder=GUICtrlCreateCombo ("", 10,100,70,24)
GUICtrlSetData(-1,'Здесь|temp|C:\|D:\|B:\', 'Здесь')
GUICtrlSetTip($folder, "Куда извлекаем?"&@CRLF&"папка wim_%name_wim%")
;$tom=GUICtrlCreateCombo ("", 100,100,40,24)
;GUICtrlSetData(-1,'1|2|3|4|5|6', '1')
;GUICtrlSetTip($tom, "Номер тома,"&@CRLF&"необходим при упаковке")
$metka=GUICtrlCreateCombo ("", 90,100,150,24)
GUICtrlSetData(-1,$wimlist&'1|wimpe|remark', $wiminfo)
GUICtrlSetTip($metka, "Метка тома."&@CRLF&"Первая в списке оригинальная")
$boot=GUICtrlCreateCheckbox ("boot", 250,100,50,24)
GUICtrlSetTip(-1, "Для загрузочных wim-файлов"&@CRLF&"WinPe.wim, BootSdi.wim")
GUICtrlCreateTabitem ("") ; конец вкладок
$Label000=GUICtrlCreateLabel ('Строка состояния', 5,150,234,-1)
$LabelMb=GUICtrlCreateLabel ('', 240,148,80,20)
GUICtrlSetFont (-1,14)
GUISetState ()
While 1
$msg = GUIGetMsg()
Select
Case $msg = $extract
GUICtrlSetState($mount, 128)
GUICtrlSetState($rw, 128)
GUICtrlSetData($Label000, 'Извлечение '&$aPath[1])
_read()
If not FileExists($folder0&'\wim_'&$namewim) Then DirCreate($folder0&'\wim_'&$namewim)
ShellExecuteWait (@SystemDir&'\imagex.exe','/apply "'&$Pathname&'" "'&$metka0&'" "'&$folder0&'\wim_'&$namewim&'"','','', @SW_HIDE )
GUICtrlSetData($Label000, 'Извлечение выполнено.')
GUICtrlSetState($pack, 64)
Run('Explorer.exe /select,'&$folder0&'\wim_'&$namewim)
If GUICtrlRead ($checkclose) = 1 Then Exit
Case $msg = $pack
GUICtrlSetState($extract, 128)
_read()
GUICtrlSetData($Label000, 'Упаковывается в '&$aPath[1]&'_New.wim.')
; упаковка wim с прогресс-баром
$ProgressBar = GUICtrlCreateProgress(50, 127, 200, 14)
GUICtrlSetColor(-1, 32250); цвет для классической темы
$iPos = 0
$iPID = Run(@SystemDir&'\imagex.exe /capture'&$boot0&'"'&$folder0&'\wim_'&$namewim&'" "'&$folder0&'\'&$namewim&'_New.wim" "'&$metka0&'" /compress maximum', '', @SW_HIDE)
While ProcessExists($iPID)
$sizewim=''
If FileExists($folder0&'\'&$namewim&'_New.wim') Then $sizewim=FileGetSize($folder0&'\'&$namewim&'_New.wim')
$sizewim /=1048576
$sizewim=Ceiling ($sizewim)
GUICtrlSetData($LabelMb, $sizewim&' Мб')
$iPos += 1
GUICtrlSetData($ProgressBar, $iPos)
Sleep(60)
If $iPos > 100 Then $iPos = 0
WEnd
If FileExists($folder0&'\'&$namewim&'_New.wim') Then $sizewim=FileGetSize($folder0&'\'&$namewim&'_New.wim')
$sizewim /=1048576
$sizewim=Ceiling ($sizewim)
GUICtrlSetData($LabelMb, $sizewim&' Мб')
GUICtrlSetColor($LabelMb,0xEE0000) ; Red
GUICtrlDelete($ProgressBar)
; конец: упаковка wim с прогресс-баром
GUICtrlSetData($Label000, 'Готово !!! Размер: '&$sizewim&' Мб.')
DirRemove($folder0&'\wim_'&$namewim, 1)
DllCall("shell32.dll", "none", "SHChangeNotify", "long", '0x8000000', "uint", '0x1000', "ptr", '0', "ptr", '0')
Run('Explorer.exe /select,"'&$folder0&'\'&$namewim&'_New.wim"')
GUICtrlSetState($extract, 64)
GUICtrlSetState($mount, 64)
GUICtrlSetState($pack, 128)
GUICtrlSetState($rw, 64)
If GUICtrlRead ($checkclose) = 1 Then Exit
Case $msg = $append
GUICtrlSetState($extract, 128)
GUICtrlSetState($mount, 128)
GUICtrlSetState($rw, 128)
_read()
If StringInStr($wimlist,$metka0)<>0 Then
MsgBox(0, "Ошибка", 'Нельзя добавить к wim-у том'&@CRLF&'с меткой, уже имеющейся в wim-е'&@CRLF&'Измените метку "'&$metka0&'"')
_enb()
ContinueLoop
EndIf
$folderwim = FileSelectFolder ( "Указать добавляемую папку",'','3',@WorkingDir & '')
If @error=1 Then
_enb()
ContinueLoop
EndIf
$msgapp=MsgBox(4, "Выгодное предложение", 'Добавить к оригиналу?'&@CRLF&@CRLF&'"Да" - к '&$aPath[1]&@CRLF&'"Нет" - к '&$namewim&'_New.wim')
; добавление к wim с прогресс-баром
$ProgressBar = GUICtrlCreateProgress(50, 127, 200, 14)
GUICtrlSetColor(-1, 32250); цвет для классической темы
$iPos = 0
If $msgapp=6 Then $appname=$aPath[1]
If $msgapp=7 Then $appname=$namewim&'_New.wim'
GUICtrlSetData($Label000, 'Добавляем к '&$appname)
$iPID = Run(@SystemDir&'\imagex.exe /append'&$boot0&'"'&$folderwim&'" "'&$folder0&'\'&$appname&'" "'&$metka0&'"', '', @SW_HIDE)
While ProcessExists($iPID)
$sizewim=''
If FileExists($folder0&'\'&$appname) Then $sizewim=FileGetSize($folder0&'\'&$appname)
$sizewim /=1048576
$sizewim=Ceiling ($sizewim)
GUICtrlSetData($LabelMb, $sizewim&' Мб')
$iPos += 1
GUICtrlSetData($ProgressBar, $iPos)
Sleep(60)
If $iPos > 100 Then $iPos = 0
WEnd
If FileExists($folder0&'\'&$appname) Then $sizewim=FileGetSize($folder0&'\'&$appname)
$sizewim /=1048576
$sizewim=Ceiling ($sizewim)
GUICtrlSetData($LabelMb, $sizewim&' Мб')
GUICtrlSetColor($LabelMb,0xEE0000) ; Red
GUICtrlDelete($ProgressBar)
; конец: добавление к wim с прогресс-баром
GUICtrlSetData($Label000, 'Готово !!! Размер: '&$sizewim&' Мб.')
Run('Explorer.exe /select,"'&$folder0&'\'&$appname&'"')
_enb()
If GUICtrlRead ($checkclose) = 1 Then Exit
Case $msg = $mount
GUICtrlSetState($extract, 128)
_read()
If not FileExists($folder0&'\wim_'&$namewim) Then DirCreate($folder0&'\wim_'&$namewim)
ShellExecuteWait (@SystemDir&'\imagex.exe',$rw0&' "'&$Pathname&'" "'&$metka0&'" "'&$folder0&'\wim_'&$namewim&'"','','', @SW_HIDE )
GUICtrlSetData($Label000, 'Монтирование выполнено.')
GUICtrlSetState($create, 64)
GUICtrlSetState($unmount, 64)
Run('Explorer.exe /select,'&$folder0&'\wim_'&$namewim)
If GUICtrlRead ($checkclose) = 1 Then Exit
Case $msg = $unmount
GUICtrlSetState($create, 128)
GUICtrlSetState($mount, 128)
ShellExecuteWait (@SystemDir&'\imagex.exe','/unmount "'&$folder0&'\wim_'&$namewim&'"','','', @SW_HIDE )
DirRemove($folder0&'\wim_'&$namewim, 1)
GUICtrlSetState($mount, 64)
GUICtrlSetState($extract, 64)
GUICtrlSetState($unmount, 128)
If GUICtrlRead ($checkclose) = 1 Then Exit
Case $msg = $create
GUICtrlSetState($unmount, 128)
GUICtrlSetState($mount, 128)
_read()
GUICtrlSetData($Label000, 'Упаковывается в '&$aPath[1]&'_New.wim.')
; упаковка wim с прогресс-баром
$ProgressBar = GUICtrlCreateProgress(50, 127, 200, 14)
GUICtrlSetColor(-1, 32250); цвет для классической темы
$iPos = 0
$iPID = Run(@SystemDir&'\imagex.exe /capture'&$boot0&'"'&$folder0&'\wim_'&$namewim&'" "'&$folder0&'\'&$namewim&'_New.wim" "'&$metka0&'" /compress maximum', '', @SW_HIDE)
While ProcessExists($iPID)
$sizewim=''
If FileExists($folder0&'\'&$namewim&'_New.wim') Then $sizewim=FileGetSize($folder0&'\'&$namewim&'_New.wim')
$sizewim /=1048576
$sizewim=Ceiling ($sizewim)
GUICtrlSetData($LabelMb, $sizewim&' Мб')
$iPos += 1
GUICtrlSetData($ProgressBar, $iPos)
Sleep(60)
If $iPos > 100 Then $iPos = 0
WEnd
If FileExists($folder0&'\'&$namewim&'_New.wim') Then $sizewim=FileGetSize($folder0&'\'&$namewim&'_New.wim')
$sizewim /=1048576
$sizewim=Ceiling ($sizewim)
GUICtrlSetData($LabelMb, $sizewim&' Мб')
GUICtrlSetColor($LabelMb,0xEE0000) ; Red
GUICtrlDelete($ProgressBar)
; конец: упаковка wim с прогресс-баром
GUICtrlSetData($Label000, 'Готово !!! Размер: '&$sizewim&' Мб.')
DirRemove($folder0&'\wim_'&$namewim, 1)
Run('Explorer.exe /select,"'&$folder0&'\'&$namewim&'_New.wim"')
GUICtrlSetState($unmount, 64)
DllCall("shell32.dll", "none", "SHChangeNotify", "long", '0x8000000', "uint", '0x1000', "ptr", '0', "ptr", '0')
If GUICtrlRead ($checkclose) = 1 Then Exit
Case $msg = $checkclose
If GUICtrlRead ($checkclose) = 1 Then
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\script_az\contmenu_WIM", "close", "REG_SZ", "1")
Else
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\script_az\contmenu_WIM", "close", "REG_SZ", "0")
EndIf
Case $msg = -3
ExitLoop
EndSelect
WEnd
Func _read()
$folder0=GUICtrlRead ($folder)
;$tom0=GUICtrlRead ($tom)
$metka0=GUICtrlRead ($metka)
If $metka0='' Then $metka0=$wiminfo
If GUICtrlRead ($boot) = 1 Then
$boot0=' /boot '
Else
$boot0=' '
Endif
If GUICtrlRead ($rw) = 1 Then
$rw0='/mountrw'
Else
$rw0='/mount'
Endif
Switch $folder0
Case $folder0="Здесь"
$folder0 = $aPath[0]
Case $folder0="temp"
$folder0 = @TempDir
Case $folder0="C:\"
$folder0 = "C:"
Case $folder0="D:\"
$folder0 = "D:"
Case $folder0="B:\"
$folder0 = "B:"
Case Else
$folder0 = @TempDir
EndSwitch
EndFunc
Func _enb()
GUICtrlSetState($extract, 64)
GUICtrlSetState($mount, 64)
GUICtrlSetState($rw, 64)
EndFunc
Цитата:
А, извлечение из многотомного wim_а будет ?
Сделал, тестируй. [more=Скрипт]
Код:
#NoTrayIcon ;скрыть в системной панели индикатор AutoIt
Global $folder0, $boot0, $metka0, $tom0, $rw0
Global $aPathexe[1]
$close = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\script_az\contmenu_WIM", "close")
If @error=1 Then
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\script_az\contmenu_WIM", "close", "REG_SZ", "0")
$close = '0'
EndIf
$Pathname = StringTrimLeft($CmdLineRaw, StringLen('"'&@ScriptFullPath&'" '))
If $Pathname='' Then Exit
$aPath=StringRegExp($Pathname, "(^.*)\\(.*)$", 3)
$namewim=StringTrimRight($aPath[1], 4)
$wimlist=''
For $i=1 To 20
; Вытаскиваем метку WIM-файла
$rnim = Run(@SystemDir&'\imagex.exe /info "'&$Pathname&'" '&$i, @SystemDir, @SW_HIDE, 2)
$wiminfo1=''
While 1
$line1 = StdoutRead($rnim)
If @error Then ExitLoop
$wiminfo1 &= $line1
Wend
;MsgBox(0, "инфа",$wiminfo1)
$wiminfo1 = StringRegExpReplace($wiminfo1, "(?s).*<NAME>(.*)</NAME>.*", "\1")
If $wiminfo1='' and $i=1 Then
MsgBox(0, "Неувязочка", 'Не найдена метка wim-файла.'&@CRLF&'Без метки извлечь wim-файл невозможно.')
Exit
EndIf
If $wiminfo1='' or StringInStr($wiminfo1,@CRLF)<>0 Then ExitLoop
If $i=1 Then $wiminfo=$wiminfo1
$wimlist&=$wiminfo1&'|'
Next
; конец - Вытаскиваем метку WIM-файла
GUICreate($aPath[1],310,167) ; размер окна
$tab=GUICtrlCreateTab (0,0, 310,148) ; размер вкладки
$checkclose=GUICtrlCreateCheckbox ("Закрывать диалог при клике на кнопке", 10,10,290,24)
If $close = '1' Then GuiCtrlSetState(-1, 1)
$extract=GUICtrlCreateButton ("Извлечь", 10,40,90,24)
GUICtrlSetTip(-1, "Извлечь")
$pack=GUICtrlCreateButton ("Упаковать", 110,40,90,24)
GUICtrlSetTip(-1, "Папка извлечения удалится.")
GUICtrlSetState($pack, 128)
$append=GUICtrlCreateButton ("Добавить", 210,40,90,24)
GUICtrlSetTip(-1, "Добавить новый том к wim"&@CRLF&"Обязательно изменить метку"&@CRLF&"добавляемого тома")
$mount=GUICtrlCreateButton ("Монтир", 10,70,70,24)
GUICtrlSetTip(-1, "Монтировать "&$aPath[1])
$rw=GUICtrlCreateCheckbox ("RW", 90,70,40,24)
GuiCtrlSetState(-1, 1) ; закомментировать эту строку, если не нужна отмеченная галочка RW
GUICtrlSetTip($rw, "RW - с поддержкой изменения"&@CRLF&"файлов в каталоге монтирования")
$create=GUICtrlCreateButton ("Упаковать", 140,70,75,24)
GUICtrlSetState($create, 128)
$unmount=GUICtrlCreateButton ("Демонтир", 225,70,75,24)
GUICtrlSetState($unmount, 128)
$folder=GUICtrlCreateCombo ("", 10,100,70,24)
GUICtrlSetData(-1,'Здесь|temp|C:\|D:\|B:\', 'Здесь')
GUICtrlSetTip($folder, "Куда извлекаем?"&@CRLF&"папка wim_%name_wim%")
;$tom=GUICtrlCreateCombo ("", 100,100,40,24)
;GUICtrlSetData(-1,'1|2|3|4|5|6', '1')
;GUICtrlSetTip($tom, "Номер тома,"&@CRLF&"необходим при упаковке")
$metka=GUICtrlCreateCombo ("", 90,100,150,24)
GUICtrlSetData(-1,$wimlist&'1|wimpe|remark', $wiminfo)
GUICtrlSetTip($metka, "Метка тома."&@CRLF&"Первая в списке оригинальная")
$boot=GUICtrlCreateCheckbox ("boot", 250,100,50,24)
GUICtrlSetTip(-1, "Для загрузочных wim-файлов"&@CRLF&"WinPe.wim, BootSdi.wim")
GUICtrlCreateTabitem ("") ; конец вкладок
$Label000=GUICtrlCreateLabel ('Строка состояния', 5,150,234,-1)
$LabelMb=GUICtrlCreateLabel ('', 240,148,80,20)
GUICtrlSetFont (-1,14)
GUISetState ()
While 1
$msg = GUIGetMsg()
Select
Case $msg = $extract
GUICtrlSetState($mount, 128)
GUICtrlSetState($rw, 128)
GUICtrlSetData($Label000, 'Извлечение '&$aPath[1])
_read()
If not FileExists($folder0&'\wim_'&$namewim) Then DirCreate($folder0&'\wim_'&$namewim)
ShellExecuteWait (@SystemDir&'\imagex.exe','/apply "'&$Pathname&'" "'&$metka0&'" "'&$folder0&'\wim_'&$namewim&'"','','', @SW_HIDE )
GUICtrlSetData($Label000, 'Извлечение выполнено.')
GUICtrlSetState($pack, 64)
Run('Explorer.exe /select,'&$folder0&'\wim_'&$namewim)
If GUICtrlRead ($checkclose) = 1 Then Exit
Case $msg = $pack
GUICtrlSetState($extract, 128)
_read()
GUICtrlSetData($Label000, 'Упаковывается в '&$aPath[1]&'_New.wim.')
; упаковка wim с прогресс-баром
$ProgressBar = GUICtrlCreateProgress(50, 127, 200, 14)
GUICtrlSetColor(-1, 32250); цвет для классической темы
$iPos = 0
$iPID = Run(@SystemDir&'\imagex.exe /capture'&$boot0&'"'&$folder0&'\wim_'&$namewim&'" "'&$folder0&'\'&$namewim&'_New.wim" "'&$metka0&'" /compress maximum', '', @SW_HIDE)
While ProcessExists($iPID)
$sizewim=''
If FileExists($folder0&'\'&$namewim&'_New.wim') Then $sizewim=FileGetSize($folder0&'\'&$namewim&'_New.wim')
$sizewim /=1048576
$sizewim=Ceiling ($sizewim)
GUICtrlSetData($LabelMb, $sizewim&' Мб')
$iPos += 1
GUICtrlSetData($ProgressBar, $iPos)
Sleep(60)
If $iPos > 100 Then $iPos = 0
WEnd
If FileExists($folder0&'\'&$namewim&'_New.wim') Then $sizewim=FileGetSize($folder0&'\'&$namewim&'_New.wim')
$sizewim /=1048576
$sizewim=Ceiling ($sizewim)
GUICtrlSetData($LabelMb, $sizewim&' Мб')
GUICtrlSetColor($LabelMb,0xEE0000) ; Red
GUICtrlDelete($ProgressBar)
; конец: упаковка wim с прогресс-баром
GUICtrlSetData($Label000, 'Готово !!! Размер: '&$sizewim&' Мб.')
DirRemove($folder0&'\wim_'&$namewim, 1)
DllCall("shell32.dll", "none", "SHChangeNotify", "long", '0x8000000', "uint", '0x1000', "ptr", '0', "ptr", '0')
Run('Explorer.exe /select,"'&$folder0&'\'&$namewim&'_New.wim"')
GUICtrlSetState($extract, 64)
GUICtrlSetState($mount, 64)
GUICtrlSetState($pack, 128)
GUICtrlSetState($rw, 64)
If GUICtrlRead ($checkclose) = 1 Then Exit
Case $msg = $append
GUICtrlSetState($extract, 128)
GUICtrlSetState($mount, 128)
GUICtrlSetState($rw, 128)
_read()
If StringInStr($wimlist,$metka0)<>0 Then
MsgBox(0, "Ошибка", 'Нельзя добавить к wim-у том'&@CRLF&'с меткой, уже имеющейся в wim-е'&@CRLF&'Измените метку "'&$metka0&'"')
_enb()
ContinueLoop
EndIf
$folderwim = FileSelectFolder ( "Указать добавляемую папку",'','3',@WorkingDir & '')
If @error=1 Then
_enb()
ContinueLoop
EndIf
$msgapp=MsgBox(4, "Выгодное предложение", 'Добавить к оригиналу?'&@CRLF&@CRLF&'"Да" - к '&$aPath[1]&@CRLF&'"Нет" - к '&$namewim&'_New.wim')
; добавление к wim с прогресс-баром
$ProgressBar = GUICtrlCreateProgress(50, 127, 200, 14)
GUICtrlSetColor(-1, 32250); цвет для классической темы
$iPos = 0
If $msgapp=6 Then $appname=$aPath[1]
If $msgapp=7 Then $appname=$namewim&'_New.wim'
GUICtrlSetData($Label000, 'Добавляем к '&$appname)
$iPID = Run(@SystemDir&'\imagex.exe /append'&$boot0&'"'&$folderwim&'" "'&$folder0&'\'&$appname&'" "'&$metka0&'"', '', @SW_HIDE)
While ProcessExists($iPID)
$sizewim=''
If FileExists($folder0&'\'&$appname) Then $sizewim=FileGetSize($folder0&'\'&$appname)
$sizewim /=1048576
$sizewim=Ceiling ($sizewim)
GUICtrlSetData($LabelMb, $sizewim&' Мб')
$iPos += 1
GUICtrlSetData($ProgressBar, $iPos)
Sleep(60)
If $iPos > 100 Then $iPos = 0
WEnd
If FileExists($folder0&'\'&$appname) Then $sizewim=FileGetSize($folder0&'\'&$appname)
$sizewim /=1048576
$sizewim=Ceiling ($sizewim)
GUICtrlSetData($LabelMb, $sizewim&' Мб')
GUICtrlSetColor($LabelMb,0xEE0000) ; Red
GUICtrlDelete($ProgressBar)
; конец: добавление к wim с прогресс-баром
GUICtrlSetData($Label000, 'Готово !!! Размер: '&$sizewim&' Мб.')
Run('Explorer.exe /select,"'&$folder0&'\'&$appname&'"')
_enb()
If GUICtrlRead ($checkclose) = 1 Then Exit
Case $msg = $mount
GUICtrlSetState($extract, 128)
_read()
If not FileExists($folder0&'\wim_'&$namewim) Then DirCreate($folder0&'\wim_'&$namewim)
ShellExecuteWait (@SystemDir&'\imagex.exe',$rw0&' "'&$Pathname&'" "'&$metka0&'" "'&$folder0&'\wim_'&$namewim&'"','','', @SW_HIDE )
GUICtrlSetData($Label000, 'Монтирование выполнено.')
GUICtrlSetState($create, 64)
GUICtrlSetState($unmount, 64)
Run('Explorer.exe /select,'&$folder0&'\wim_'&$namewim)
If GUICtrlRead ($checkclose) = 1 Then Exit
Case $msg = $unmount
GUICtrlSetState($create, 128)
GUICtrlSetState($mount, 128)
ShellExecuteWait (@SystemDir&'\imagex.exe','/unmount "'&$folder0&'\wim_'&$namewim&'"','','', @SW_HIDE )
DirRemove($folder0&'\wim_'&$namewim, 1)
GUICtrlSetState($mount, 64)
GUICtrlSetState($extract, 64)
GUICtrlSetState($unmount, 128)
If GUICtrlRead ($checkclose) = 1 Then Exit
Case $msg = $create
GUICtrlSetState($unmount, 128)
GUICtrlSetState($mount, 128)
_read()
GUICtrlSetData($Label000, 'Упаковывается в '&$aPath[1]&'_New.wim.')
; упаковка wim с прогресс-баром
$ProgressBar = GUICtrlCreateProgress(50, 127, 200, 14)
GUICtrlSetColor(-1, 32250); цвет для классической темы
$iPos = 0
$iPID = Run(@SystemDir&'\imagex.exe /capture'&$boot0&'"'&$folder0&'\wim_'&$namewim&'" "'&$folder0&'\'&$namewim&'_New.wim" "'&$metka0&'" /compress maximum', '', @SW_HIDE)
While ProcessExists($iPID)
$sizewim=''
If FileExists($folder0&'\'&$namewim&'_New.wim') Then $sizewim=FileGetSize($folder0&'\'&$namewim&'_New.wim')
$sizewim /=1048576
$sizewim=Ceiling ($sizewim)
GUICtrlSetData($LabelMb, $sizewim&' Мб')
$iPos += 1
GUICtrlSetData($ProgressBar, $iPos)
Sleep(60)
If $iPos > 100 Then $iPos = 0
WEnd
If FileExists($folder0&'\'&$namewim&'_New.wim') Then $sizewim=FileGetSize($folder0&'\'&$namewim&'_New.wim')
$sizewim /=1048576
$sizewim=Ceiling ($sizewim)
GUICtrlSetData($LabelMb, $sizewim&' Мб')
GUICtrlSetColor($LabelMb,0xEE0000) ; Red
GUICtrlDelete($ProgressBar)
; конец: упаковка wim с прогресс-баром
GUICtrlSetData($Label000, 'Готово !!! Размер: '&$sizewim&' Мб.')
DirRemove($folder0&'\wim_'&$namewim, 1)
Run('Explorer.exe /select,"'&$folder0&'\'&$namewim&'_New.wim"')
GUICtrlSetState($unmount, 64)
DllCall("shell32.dll", "none", "SHChangeNotify", "long", '0x8000000', "uint", '0x1000', "ptr", '0', "ptr", '0')
If GUICtrlRead ($checkclose) = 1 Then Exit
Case $msg = $checkclose
If GUICtrlRead ($checkclose) = 1 Then
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\script_az\contmenu_WIM", "close", "REG_SZ", "1")
Else
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\script_az\contmenu_WIM", "close", "REG_SZ", "0")
EndIf
Case $msg = -3
ExitLoop
EndSelect
WEnd
Func _read()
$folder0=GUICtrlRead ($folder)
;$tom0=GUICtrlRead ($tom)
$metka0=GUICtrlRead ($metka)
If $metka0='' Then $metka0=$wiminfo
If GUICtrlRead ($boot) = 1 Then
$boot0=' /boot '
Else
$boot0=' '
Endif
If GUICtrlRead ($rw) = 1 Then
$rw0='/mountrw'
Else
$rw0='/mount'
Endif
Switch $folder0
Case $folder0="Здесь"
$folder0 = $aPath[0]
Case $folder0="temp"
$folder0 = @TempDir
Case $folder0="C:\"
$folder0 = "C:"
Case $folder0="D:\"
$folder0 = "D:"
Case $folder0="B:\"
$folder0 = "B:"
Case Else
$folder0 = @TempDir
EndSwitch
EndFunc
Func _enb()
GUICtrlSetState($extract, 64)
GUICtrlSetState($mount, 64)
GUICtrlSetState($rw, 64)
EndFunc