#RequireAdmin #include #include #include #include #include #include #include #include #include #include #include Opt("WinTitleMatchMode",2) Opt("MustDeclareVars",1) Opt("WinWaitDelay",500) If @OSArch="X64" Then DllCall("kernel32.dll","int","Wow64DisableWow64FsRedirection","int",1) Global $ProgramFiles_x64=@ProgramFilesDir Global $ProgramFiles_x86=@ProgramFilesDir&" (x86)" Global $SystemFiles_x64=@SystemDir Global $SystemFiles_x86=@WindowsDir&"\SysWOW64" Global $OS_Arch="Y" Else Global $ProgramFiles_x64=@ProgramFilesDir Global $ProgramFiles_x86=@ProgramFilesDir Global $SystemFiles_x64=@SystemDir Global $SystemFiles_x86=@SystemDir Global $OS_Arch="N" EndIf Global $SS_Dir If $OS_Arch="Y" Then $SS_Dir=$SystemFiles_x64 Else $SS_Dir=$SystemFiles_x86 EndIf Global $iLimit Global $MainFileName Global $percent=0 Global $value=0 Global $Title Global $Type1 Global $Type2 Global $pDISM Global $Dism_Cmds[24][15]=[["wimlib-imagex","split","--check"],["/Apply-Image","/ImageFile:","/ApplyDir:","/Index:","/CheckIntegrity","/Verify","/NoRpFix","/SWMFile:","/ConfirmTrustedFile","/WIMBoot","/Compact"],["/Get-MountedImageInfo"],["/Get-ImageInfo","/ImageFile:","/Index:"],["/Unmount-Image","/MountDir:","/Discard","/Commit","/Append","/CheckIntegrity"],["/Mount-Image","/ImageFile:","/Index:","/MountDir:","/ReadOnly","/Optimize","/CheckIntegrity"],["/Remount-Image","/MountDir:"],["/Cleanup-Mountpoints"],["/Apply-CustomDataImage","/SingleInstance","/CustomDataImage:","/ImagePath:"],["/Capture-CustomImage","/CaptureDir:","/ConfigFile:","/CheckIntegrity","/Verify","/ConfirmTrustedFile"],["/Get-WIMBootEntry","/Path:"],["/Update-WIMBootEntry","/Path:","/DataSourceID:","/ImageFile:"],["/List-Image","/ImageFile:","/Index:"],["/Delete-Image","/ImageFile:","/Index:","/CheckIntegrity]"],["/Export-Image","/SourceImageFile","/SWMFile:","/SourceIndex:","/DestinationImageFile:","/DestinationName:","/Compress:","fast","max","none","recovery","/Bootable","/WIMBoot","/CheckIntegrity]"],["/Append-Image","/ImageFile:","/CaptureDir:","/Name:","/Description:","/ConfigFile:","/Bootable","/WIMBoot","/CheckIntegrity","/Verify","/NoRpFix"],["/Capture-Image","/ImageFile:","/CaptureDir:","/Name:","/Description:","/ConfigFile:","/Compress:","fast","max","none","/Bootable","/WIMBoot","/CheckIntegrity","/Verify","/NoRpFix"],["/Get-MountedWimInfo"],["/Get-WimInfo","/WimFile:","/Index:"],["/Unmount-Wim","/MountDir:","/Commit","/Discard}"],["/Unmount-Wim","/MountDir:","/Commit","/Discard}"],["/Mount-Wim","/WimFile:","/Index:","/MountDir:","/readonly"],["/Remount-Wim","/MountDir:"],["/Cleanup-Wim"]] Global $iMenu,$Error,$ErrorMessage,$OK,$Cancel,$MenuSet,$idMsg,$OKButton,$CancelButton Menu() Func Menu() Local $hGUI,$aRadio[23],$iButton[2] $hGUI=GUICreate("DISM GUI",600,450,-1,-1,-1,$WS_EX_ACCEPTFILES) ;GUICreate("DISM GUI",1065,800) ; will create a dialog box that when displayed is centered GUISetBkColor(0x80FFFF) GUISetFont(16,400) GUICtrlCreateLabel("DISM GUI",250,10,150,20) $aRadio[0]=GUICtrlCreateRadio("Split Image",10,40,150,25) $aRadio[1]=GUICtrlCreateRadio("Apply Image",10,70,150,25) $aRadio[2]=GUICtrlCreateRadio("Mounted Image Info",10,100,210,25) $aRadio[3]=GUICtrlCreateRadio("Image Info",10,130,150,25) $aRadio[4]=GUICtrlCreateRadio("Unmount Image",10,160,165,25) $aRadio[5]=GUICtrlCreateRadio("Mount Image",10,190,150,25) $aRadio[6]=GUICtrlCreateRadio("Remount Image",10,220,210,25) $aRadio[7]=GUICtrlCreateRadio("Cleanup Mountpoints",10,250,215,25) $aRadio[8]=GUICtrlCreateRadio("Apply Custom WIM Data Image",10,280,310,25) $aRadio[9]=GUICtrlCreateRadio("Capture Custom WIM Image",10,310,290,25) $aRadio[10]=GUICtrlCreateRadio("Get WIM Boot Entry",10,340,210,25) $aRadio[11]=GUICtrlCreateRadio("Update WIM Boot Entry",10,370,270,25) $aRadio[12]=GUICtrlCreateRadio("List WIM Image",330,40,165,25) $aRadio[13]=GUICtrlCreateRadio("Delete WIM Image",330,70,195,25) $aRadio[14]=GUICtrlCreateRadio("Export WIM Image",330,100,195,25) $aRadio[15]=GUICtrlCreateRadio("Append WIM Image",330,130,250,25) $aRadio[16]=GUICtrlCreateRadio("Capture WIM Image",330,160,210,25) $aRadio[17]=GUICtrlCreateRadio("Get Mounted WIM Info",330,190,250,25) $aRadio[18]=GUICtrlCreateRadio("Get WIM Info",330,220,150,25) $aRadio[19]=GUICtrlCreateRadio("Unmount WIM",330,250,150,25) $aRadio[20]=GUICtrlCreateRadio("Mount WIM",330,280,150,25) $aRadio[21]=GUICtrlCreateRadio("Remount WIM",330,310,150,25) $aRadio[22]=GUICtrlCreateRadio("Cleanup WIM",330,340,150,25) $iButton[0]=GUICtrlCreateButton("Go to submenu",120,400,170,30) $iButton[1]=GUICtrlCreateButton("Cancel",350,400,190,30) GUICtrlSetState($aRadio[0],$GUI_CHECKED) GUISetState(@SW_SHOW) ; Loop until the user exits. $iMenu=1 While 1 $idMsg=GUIGetMsg() Select Case $idMsg=$GUI_EVENT_CLOSE $Cancel=1 $OK=0 $MenuSet=1 MenuErr() Case $idMsg=$iButton[1]; Or $idMsg=$CancelButton $Cancel=1 $OK=0 $MenuSet=1 MenuErr() Case $idMsg=$iButton[0]; Or $idMsg=$OKButton $Cancel=0 $OK=1 GUIDelete() MenuSelect() Case $idMsg=$aRadio[0] And BitAND(GUICtrlRead($aRadio[0]),$GUI_CHECKED)=$GUI_CHECKED $iMenu=1 Case $idMsg=$aRadio[1] And BitAND(GUICtrlRead($aRadio[1]),$GUI_CHECKED)=$GUI_CHECKED $iMenu=2 Case $idMsg=$aRadio[2] And BitAND(GUICtrlRead($aRadio[2]),$GUI_CHECKED)=$GUI_CHECKED $iMenu=3 Case $idMsg=$aRadio[3] And BitAND(GUICtrlRead($aRadio[3]),$GUI_CHECKED)=$GUI_CHECKED $iMenu=4 Case $idMsg=$aRadio[4] And BitAND(GUICtrlRead($aRadio[4]),$GUI_CHECKED)=$GUI_CHECKED $iMenu=5 Case $idMsg=$aRadio[5] And BitAND(GUICtrlRead($aRadio[5]),$GUI_CHECKED)=$GUI_CHECKED $iMenu=6 Case $idMsg=$aRadio[6] And BitAND(GUICtrlRead($aRadio[6]),$GUI_CHECKED)=$GUI_CHECKED $iMenu=7 Case $idMsg=$aRadio[7] And BitAND(GUICtrlRead($aRadio[7]),$GUI_CHECKED)=$GUI_CHECKED $iMenu=8 Case $idMsg=$aRadio[8] And BitAND(GUICtrlRead($aRadio[8]),$GUI_CHECKED)=$GUI_CHECKED $iMenu=9 Case $idMsg=$aRadio[9] And BitAND(GUICtrlRead($aRadio[9]),$GUI_CHECKED)=$GUI_CHECKED $iMenu=10 Case $idMsg=$aRadio[10] And BitAND(GUICtrlRead($aRadio[10]),$GUI_CHECKED)=$GUI_CHECKED $iMenu=11 Case $idMsg=$aRadio[11] And BitAND(GUICtrlRead($aRadio[11]),$GUI_CHECKED)=$GUI_CHECKED $iMenu=12 Case $idMsg=$aRadio[12] And BitAND(GUICtrlRead($aRadio[12]),$GUI_CHECKED)=$GUI_CHECKED $iMenu=13 Case $idMsg=$aRadio[13] And BitAND(GUICtrlRead($aRadio[13]),$GUI_CHECKED)=$GUI_CHECKED $iMenu=14 Case $idMsg=$aRadio[14] And BitAND(GUICtrlRead($aRadio[14]),$GUI_CHECKED)=$GUI_CHECKED $iMenu=15 Case $idMsg=$aRadio[15] And BitAND(GUICtrlRead($aRadio[15]),$GUI_CHECKED)=$GUI_CHECKED $iMenu=16 Case $idMsg=$aRadio[16] And BitAND(GUICtrlRead($aRadio[16]),$GUI_CHECKED)=$GUI_CHECKED $iMenu=17 Case $idMsg=$aRadio[17] And BitAND(GUICtrlRead($aRadio[17]),$GUI_CHECKED)=$GUI_CHECKED $iMenu=18 Case $idMsg=$aRadio[18] And BitAND(GUICtrlRead($aRadio[18]),$GUI_CHECKED)=$GUI_CHECKED $iMenu=19 Case $idMsg=$aRadio[19] And BitAND(GUICtrlRead($aRadio[19]),$GUI_CHECKED)=$GUI_CHECKED $iMenu=20 Case $idMsg=$aRadio[20] And BitAND(GUICtrlRead($aRadio[20]),$GUI_CHECKED)=$GUI_CHECKED $iMenu=21 Case $idMsg=$aRadio[21] And BitAND(GUICtrlRead($aRadio[21]),$GUI_CHECKED)=$GUI_CHECKED $iMenu=22 Case $idMsg=$aRadio[22] And BitAND(GUICtrlRead($aRadio[22]),$GUI_CHECKED)=$GUI_CHECKED $iMenu=23 EndSelect WEnd EndFunc Func MenuSelect() Select Case $iMenu=1 Split_Image() Case $iMenu=2 Apply_Image() Case $iMenu=3 Mounted_Image_Info() Case $iMenu=4 Image_Info() Case $iMenu=5 Unmount_Image() Case $iMenu=6 Mount_Image() Case $iMenu=7 Remount_Image() Case $iMenu=8 Cleanup_Mountpoints() Case $iMenu=9 Apply_Custom_WIM_Data_Image() Case $iMenu=10 Capture_Custom_WIM_Image() Case $iMenu=11 Get_WIM_Boot_Entry() Case $iMenu=12 Update_WIM_Boot_Entry() Case $iMenu=13 List_WIM_Image() Case $iMenu=14 Delete_WIM_Image() Case $iMenu=15 Export_WIM_Image() Case $iMenu=16 Append_WIM_Image() Case $iMenu=17 Capture_WIM_Image() Case $iMenu=18 Get_Mounted_WIM_Info() Case $iMenu=19 Get_WIM_Info() Case $iMenu=20 Unmount_WIM() Case $iMenu=21 Mount_WIM() Case $iMenu=22 Remount_WIM() Case $iMenu=23 Cleanup_WIM() EndSelect EndFunc Func DISM_ProgressBar($Temp,$Type1,$Type2,$MainFileName) Local $line,$line1 $pDISM=Run(@ComSpec&" /c "&$Temp,"","",2+4) ProgressOn($Type1,$Type2,"0 percent") While ProcessExists($pDISM) $line=StdoutRead($pDISM,True) If StringInStr($line,".0%") Then $line1=StringSplit($line,".") $value=StringRight($line1[$line1[0]- 1],2) $value=StringStripWS($value,7) EndIf If $value=="00" Then $value=100 If @error Then ExitLoop Sleep(50) If $percent<>$value Then ProgressSet($value,$Type2,$MainFileName&$value&"%") $percent=$value EndIf If $value=100 Then ExitLoop WEnd ProgressOff() EndFunc Func Split_Image() Local $hGUI,$idMsg,$iInput[3],$hInput[3],$iButton[5],$iCheckbox[1],$iInput2[1] Local $Temp,$iDriveCombo[28] Local $dInput[3],$dCheckbox[1] Local $aAccelKeys[3][2]=[["{ENTER}",$iButton[2]],["{ESC}",$iButton[3]],["{F12}",$iButton[4]]] $hGUI=GUICreate("DISM GUI",1065,275,-1,-1,-1,$WS_EX_ACCEPTFILES) ;GUICreate("DISM GUI",1065,800) ; will create a dialog box that when displayed is centered GUISetBkColor(0x80FFFF) GUISetFont(16,400) GUICtrlCreateLabel("DISM GUI",474,10,250,20) GUICtrlCreateLabel("Split Image",30,30,250,30) GUICtrlCreateLabel("Image File Path",30,60,250,30) $iInput[0]=GUICtrlCreateInput("",200,60,700,30) $iButton[0]=GUICtrlCreateButton("Browse...",920,60,100,30) GUICtrlCreateLabel("SWM File Path",30,95,250,30) $iInput[1]=GUICtrlCreateInput("",200,95,700,30) $iButton[1]=GUICtrlCreateButton("Browse...",920,95,100,30) GUICtrlCreateLabel("File Size",30,130,250,30) $iInput[2]=GUICtrlCreateInput("1",200,130,100,30) $iInput2[0]=GUICtrlCreateUpdown($iInput[2],$UDS_ARROWKEYS) GUICtrlSetLimit($iInput2[0],999,1) $iCheckbox[0]=GUICtrlCreateCheckbox("Check Integrity",30,160,160,30) $iButton[2]=GUICtrlCreateButton("Execute",300,190,160,30) $iButton[3]=GUICtrlCreateButton("Cancel",550,190,190,30) $iButton[4]=GUICtrlCreateButton("Return to Main Menu",400,220,250,30) GUISetState(@SW_SHOW) ; Loop until the user exits. GUISetAccelerators($aAccelKeys) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE $Cancel=1 $OK=0 $MenuSet=1;Split Image MenuErr() Case $iCheckbox[0] If _IsChecked($iCheckbox[0]) Then $dCheckbox[0]=1;Check Integrity Else $dCheckbox[0]=0 EndIf Case $iButton[0];Browse $hInput[0]=FileOpenDialog("Browse for Image File","","WIM or ESD (*.wim;*.esd)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) GUICtrlSetData($iInput[0],$hInput[0]) Case $iButton[1];Browse $hInput[1]=FileOpenDialog("Browse for Image File","","SWM (*.swm)",$FD_PROMPTCREATENEW) GUICtrlSetData($iInput[1],$hInput[1]) Case $iButton[2];Split Image $Cancel=0 $OK=1 $dInput[0]=GUICtrlRead($iInput[0]);Image File Path $dInput[1]=GUICtrlRead($iInput[1]);SWM File Path $dInput[2]=GUICtrlRead($iInput[2]);File Size If $iInput[0]="" Then MsgBox(4096+16,"Error!","Enter a WIM file and path!") ElseIf $iInput[1]="" Then MsgBox(4096+16,"Error!","Enter a SWM file and path!") EndIf $Temp=$Dism_Cmds[0][0]&" "&$Dism_Cmds[0][1]&" "&Chr(34)&$dInput[0]&Chr(34)&" "&Chr(34)&$dInput[1]&Chr(34)&" "&$dInput[2] If $dCheckbox[0]=1 Then $Temp=$Temp&" "&$Dism_Cmds[0][2] EndIf $Type1="Image Split" $Type2="Splitting Image" $MainFileName=$dInput[0] ;RunWait(@ComSpec&" /c elevate -k -w "&$Temp,"",@SW_SHOWMAXIMIZED,2+4) DISM_ProgressBar($Temp,$Type1,$Type2,$MainFileName) GUIDelete($hGUI) Menu() Case $iButton[3] $Cancel=1 $OK=0 $MenuSet=1;Split Image MenuErr() Case $iButton[4] GUIDelete($hGUI) Menu() EndSwitch WEnd ; Delete the previous GUI and all controls. GUIDelete($hGUI) EndFunc Func Apply_Image() Local $hGUI,$idMsg,$iInput[3],$hInput[3],$iButton[5],$iCheckbox[6],$iInput2[1] Local $Temp,$iDriveCombo[28] Local $aArray,$dInput[3],$dInclude[0],$dDriveCombo[28],$dCheckbox[6] Local $aAccelKeys[3][2]=[["{ENTER}",$iButton[2]],["{ESC}",$iButton[3]],["{F12}",$iButton[4]]] $hGUI=GUICreate("DISM GUI",1065,300,-1,-1,-1,$WS_EX_ACCEPTFILES) ;GUICreate("DISM GUI",1065,800) ; will create a dialog box that when displayed is centered GUISetBkColor(0x80FFFF) GUISetFont(16,400) GUICtrlCreateLabel("DISM GUI",474,10,250,20) GUICtrlCreateLabel("Apply Image",30,30,250,30) GUICtrlCreateLabel("Image File Path",30,60,250,30) $iInput[0]=GUICtrlCreateInput("",200,60,700,30) $iButton[0]=GUICtrlCreateButton("Browse...",920,60,100,30) GUICtrlCreateLabel("Target Drive",30,95,250,30) $aArray=DriveGetDrive($DT_FIXED) If @error Then ; An error occurred when retrieving the drives. MsgBox(4096+16,"","It appears an error occurred.") Else For $i = 2 To $aArray[0] $Temp=StringUpper($aArray[$i])&"|" Next $Temp=StringTrimRight($Temp,1) EndIf $iDriveCombo[0]=GUICtrlCreateCombo(StringUpper($aArray[1]),200,95,100,30) GUICtrlSetData($iDriveCombo[0],$Temp,$aArray[1]) GUICtrlCreateLabel("Image Index",30,130,250,30) $iInput[1]=GUICtrlCreateInput("1",200,130,100,30) $iInput2[0]=GUICtrlCreateUpdown($iInput[1],$UDS_ARROWKEYS) GUICtrlSetLimit($iInput2[0],999,1) $iCheckbox[0]=GUICtrlCreateCheckbox("Check Integrity",30,160,160,30) $iCheckbox[1]=GUICtrlCreateCheckbox("Verify",200,160,100,30) $iCheckbox[2]=GUICtrlCreateCheckbox("NoRpFix",300,160,110,30) GUICtrlCreateLabel("Split Image File Path",30,190,250,30) $iInput[2]=GUICtrlCreateInput("",230,190,680,30) $iButton[1]=GUICtrlCreateButton("Browse...",920,190,100,30) $iCheckbox[3]=GUICtrlCreateCheckbox("Confirm Trusted File",420,160,220,30) $iCheckbox[4]=GUICtrlCreateCheckbox("WIM Boot",640,160,130,30) $iCheckbox[5]=GUICtrlCreateCheckbox("Compact",770,160,230,30) $iButton[2]=GUICtrlCreateButton("Execute",300,230,190,30) $iButton[3]=GUICtrlCreateButton("Cancel",550,230,190,30) $iButton[4]=GUICtrlCreateButton("Return to Main Menu",415,260,250,30) GUISetState(@SW_SHOW) ; Loop until the user exits. GUISetAccelerators($aAccelKeys) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE $Cancel=1 $OK=0 $MenuSet=2;Apply Image MenuErr() Case $iButton[0] $iInput[0]=FileOpenDialog("Browse for Image File","","WIM or ESD (*.wim;*.esd)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) GUICtrlSetData($iInput[0],$hInput[0]) Case $iButton[1] $iInput[2]=FileOpenDialog("Browse for Split Images","","SWM (*.swm)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) GUICtrlSetData($iInput[2],$hInput[2]) Case $iButton[2];Apply Image $Cancel=0 $OK=1 $dInput[0]=GUICtrlRead($iInput[0]);Image File Path $dInput[1]=GUICtrlRead($iInput[1]);Index $dInput[2]=GUICtrlRead($iInput[2]);Split Image File Path $dDriveCombo[0]=GUICtrlRead($iDriveCombo[0]);Target Drive If $dInput[0]="" Then MsgBox(4096+16,"Error!","Enter a WIM or ESD file and path!") ElseIf $dInput[1]<1 Then MsgBox(4096+16,"Error!","Enter an index number!") EndIf If $dInput[2]<>"" Then $dInclude[0]=1 EndIf Case $iCheckbox[0] If _IsChecked($iCheckbox[0]) Then $dCheckbox[0]=1;Check Integrity Else $dCheckbox[0]=0 EndIf Case $iCheckbox[1] If _IsChecked($iCheckbox[1]) Then $dCheckbox[1]=1;Verify Else $dCheckbox[1]=0 EndIf Case $iCheckbox[2] If _IsChecked($iCheckbox[2]) Then $dCheckbox[2]=1;NoRpFix Else $dCheckbox[2]=0 EndIf Case $iCheckbox[3] If _IsChecked($iCheckbox[3]) Then $dCheckbox[3]=1;Confirm Trusted File Else $dCheckbox[3]=0 EndIf Case $iCheckbox[4] If _IsChecked($iCheckbox[4]) Then $dCheckbox[4]=1;WIM Boot Else $dCheckbox[4]=0 EndIf Case $iCheckbox[5] If _IsChecked($iCheckbox[5]) Then $dCheckbox[5]=1;Compact Else $dCheckbox[5]=0 EndIf Case $iButton[3] $Cancel=1 $OK=0 $MenuSet=2;Apply Image MenuErr() Case $iButton[4] GUIDelete($hGUI) Menu() EndSwitch WEnd ; Delete the previous GUI and all controls. GUIDelete($hGUI) EndFunc Func Mounted_Image_Info() Local $hGUI,$idMsg,$iButton[3] Local $Temp,$iDriveCombo[28] Local $aAccelKeys[3][2]=[["{ENTER}",$iButton[0]],["{ESC}",$iButton[1]],["{F12}",$iButton[2]]] $hGUI=GUICreate("DISM GUI",450,120,-1,-1,-1,$WS_EX_ACCEPTFILES) ;GUICreate("DISM GUI",1065,800) ; will create a dialog box that when displayed is centered GUISetBkColor(0x80FFFF) GUISetFont(16,400) GUICtrlCreateLabel("DISM GUI",250,10,250,20) GUICtrlCreateLabel("Mounted Image Info",30,40,250,30) $iButton[0]=GUICtrlCreateButton("Get Info",220,40,100,30) $iButton[1]=GUICtrlCreateButton("Cancel",330,40,100,30) $iButton[2]=GUICtrlCreateButton("Return to Main Menu",100,70,250,30) GUISetState(@SW_SHOW) ; Loop until the user exits. GUISetAccelerators($aAccelKeys) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE $Cancel=1 $OK=0 $MenuSet=3;Mounted Image Info MenuErr() Case $iButton[0];Mounted Image Info $Cancel=0 $OK=1 Sleep(10000) Case $iButton[1] $Cancel=1 $OK=0 $MenuSet=3;Mounted Image Info MenuErr() Case $iButton[2] GUIDelete($hGUI) Menu() EndSwitch WEnd ; Delete the previous GUI and all controls. GUIDelete($hGUI) EndFunc Func Image_Info() Local $hGUI,$idMsg,$iInput[3],$hInput[3],$iButton[4],$iInput2[1],$iCombo[2] Local $Temp,$iDriveCombo[28] Local $dInput[3] Local $aAccelKeys[3][2]=[["{ENTER}",$iButton[1]],["{ESC}",$iButton[2]],["{F12}",$iButton[3]]] $hGUI=GUICreate("DISM GUI",1065,250,-1,-1,-1,$WS_EX_ACCEPTFILES) ;GUICreate("DISM GUI",1065,800) ; will create a dialog box that when displayed is centered GUISetBkColor(0x80FFFF) GUISetFont(16,400) GUICtrlCreateLabel("DISM GUI",474,10,250,20) GUICtrlCreateLabel("Image Info",30,30,250,30) GUICtrlCreateLabel("Image File Path",30,60,250,30) $iInput[0]=GUICtrlCreateInput("",200,60,700,30) $iButton[0]=GUICtrlCreateButton("Browse...",920,60,100,30) GUICtrlCreateLabel("Image Index",30,100,250,30) $iInput[1]=GUICtrlCreateInput("1",200,100,100,30) $iInput2[0]=GUICtrlCreateUpdown($iInput[1],$UDS_ARROWKEYS) GUICtrlSetLimit($iInput2[0],99,1) GUICtrlCreateLabel("0 Means All Images",30,130,250,30) $iButton[1]=GUICtrlCreateButton("Execute",300,160,160,30) $iButton[2]=GUICtrlCreateButton("Cancel",550,160,190,30) $iButton[3]=GUICtrlCreateButton("Return to Main Menu",415,190,250,30) GUISetState(@SW_SHOW) ; Loop until the user exits. GUISetAccelerators($aAccelKeys) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE $Cancel=1 $OK=0 $MenuSet=4;Image Info MenuErr() Case $iButton[0] $iInput[0]=FileOpenDialog("Browse for Image File","","WIM or ESD (*.wim;*.esd)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) GUICtrlSetData($iInput[0],$hInput[0]) Case $iButton[1];Image Info $Cancel=0 $OK=1 $dInput[0]=GUICtrlRead($iInput[0]);Image File Path $dInput[1]=GUICtrlRead($iInput[1]);Index If $dInput[0]="" Then MsgBox(4096+16,"Error!","Enter a WIM or ESD file and path!") EndIf Case $iButton[2] $Cancel=1 $OK=0 $MenuSet=4;Image Info MenuErr() Case $iButton[3] GUIDelete($hGUI) Menu() EndSwitch WEnd ; Delete the previous GUI and all controls. GUIDelete($hGUI) EndFunc Func Unmount_Image() Local $hGUI,$idMsg,$iInput[1],$hInput[1],$iButton[4],$iCheckbox[4] Local $Temp,$iDriveCombo[28] Local $dInput[0],$dCheckbox[4] Local $aAccelKeys[3][2]=[["{ENTER}",$iButton[1]],["{ESC}",$iButton[2]],["{F12}",$iButton[3]]] $hGUI=GUICreate("DISM GUI",1065,230,-1,-1,-1,$WS_EX_ACCEPTFILES) ;GUICreate("DISM GUI",1065,800) ; will create a dialog box that when displayed is centered GUISetBkColor(0x80FFFF) GUISetFont(16,400) GUICtrlCreateLabel("DISM GUI",474,10,250,20) GUICtrlCreateLabel("Unmount Image",30,30,250,30) GUICtrlCreateLabel("Target Mount Path",30,60,250,30) $iInput[0]=GUICtrlCreateInput("",210,60,700,30) $iButton[0]=GUICtrlCreateButton("Browse...",920,60,100,30) $iCheckbox[0]=GUICtrlCreateCheckbox("Discard",30,90,100,30) $iCheckbox[1]=GUICtrlCreateCheckbox("Commit",140,90,100,30) $iCheckbox[2]=GUICtrlCreateCheckbox("Append",240,90,100,30) $iCheckbox[3]=GUICtrlCreateCheckbox("Check Integrity",340,90,230,30) $iButton[1]=GUICtrlCreateButton("Execute",300,130,160,30) $iButton[2]=GUICtrlCreateButton("Cancel",550,130,190,30) $iButton[3]=GUICtrlCreateButton("Return to Main Menu",415,160,250,30) GUISetState(@SW_SHOW) ; Loop until the user exits. GUISetAccelerators($aAccelKeys) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE $Cancel=1 $OK=0 $MenuSet=5;Unmount Image MenuErr() Case $iButton[0] $iInput[0]=FileOpenDialog("Browse for Image File","","WIM or ESD (*.wim;*.esd)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) GUICtrlSetData($iInput[0],$hInput[0]) Case $iButton[1];Unmount Image $Cancel=0 $OK=1 $dInput[0]=GUICtrlRead($iInput[0]);Target Mount Path If $dInput[0]="" Then MsgBox(4096+16,"Error!","Enter a WIM or ESD file and path!") EndIf Case $iCheckbox[0] If _IsChecked($iCheckbox[0]) Then $dCheckbox[0]=1;Discard Else $dCheckbox[0]=0 EndIf Case $iCheckbox[1] If _IsChecked($iCheckbox[1]) Then $dCheckbox[1]=1;Commit Else $dCheckbox[1]=0 EndIf Case $iCheckbox[2] If _IsChecked($iCheckbox[2]) Then $dCheckbox[2]=1;Append Else $dCheckbox[2]=0 EndIf Case $iCheckbox[3] If _IsChecked($iCheckbox[3]) Then $dCheckbox[3]=1;Check Integrity Else $dCheckbox[3]=0 EndIf Case $iButton[2] $Cancel=1 $OK=0 $MenuSet=5;Unmount Image MenuErr() Case $iButton[3] GUIDelete($hGUI) Menu() EndSwitch WEnd ; Delete the previous GUI and all controls. GUIDelete($hGUI) EndFunc Func Mount_Image() Local $hGUI,$idMsg,$iInput[4],$hInput[4],$iButton[5],$iCheckbox[3] Local $Temp,$iDriveCombo[28] Local $dInput[3],$dCheckbox[3],$iInput2[1] Local $aAccelKeys[3][2]=[["{ENTER}",$iButton[2]],["{ESC}",$iButton[3]],["{F12}",$iButton[4]]] $hGUI=GUICreate("DISM GUI",1065,300,-1,-1,-1,$WS_EX_ACCEPTFILES) ;GUICreate("DISM GUI",1065,800) ; will create a dialog box that when displayed is centered GUISetBkColor(0x80FFFF) GUISetFont(16,400) GUICtrlCreateLabel("DISM GUI",474,10,250,20) GUICtrlCreateLabel("Mount Image",30,30,250,30) GUICtrlCreateLabel("Image File Path",30,60,250,30) $iInput[0]=GUICtrlCreateInput("",200,60,700,30) $iButton[0]=GUICtrlCreateButton("Browse...",920,60,100,30) GUICtrlCreateLabel("Target Mount Path",30,95,250,30) $iInput[1]=GUICtrlCreateInput("",210,95,690,30) $iButton[1]=GUICtrlCreateButton("Browse...",920,95,100,30) GUICtrlCreateLabel("Image Index",30,130,250,30) $iInput[2]=GUICtrlCreateInput("1",200,130,100,30) $iInput2[0]=GUICtrlCreateUpdown($iInput[2],$UDS_ARROWKEYS) GUICtrlSetLimit($iInput2[0],999,1) $iCheckbox[0]=GUICtrlCreateCheckbox("Check Integrity",30,160,160,30) $iCheckbox[1]=GUICtrlCreateCheckbox("Read Only",200,160,160,30) $iCheckbox[2]=GUICtrlCreateCheckbox("Optimize",330,160,160,30) $iButton[2]=GUICtrlCreateButton("Execute",300,190,160,30) $iButton[3]=GUICtrlCreateButton("Cancel",550,190,190,30) $iButton[4]=GUICtrlCreateButton("Return to Main Menu",415,230,250,30) GUISetState(@SW_SHOW) ; Loop until the user exits. GUISetAccelerators($aAccelKeys) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE $Cancel=1 $OK=0 $MenuSet=6;Mount Image MenuErr() Case $iButton[0]; $iInput[0]=FileOpenDialog("Browse for Image File","","WIM or ESD (*.wim;*.esd)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) GUICtrlSetData($iInput[0],$hInput[0]) Case $iButton[1]; $iInput[1]=FileSelectFolder("Browse for Target Mount Path","") GUICtrlSetData($iInput[1],$hInput[1]) Case $iButton[2];Mount Image $Cancel=0 $OK=1 $dInput[0]=GUICtrlRead($iInput[0]);Image File Path $dInput[1]=GUICtrlRead($iInput[1]);Target Mount Path $dInput[2]=GUICtrlRead($iInput[2]);Index If $dInput[0]="" Then MsgBox(4096+16,"Error!","Enter a WIM or ESD file and path!") ElseIf $dInput[1]="" Then MsgBox(4096+16,"Error!","Enter a Target Mount path!") EndIf Case $iCheckbox[0] If _IsChecked($iCheckbox[0]) Then $dCheckbox[0]=1;Check Integrity Else $dCheckbox[0]=0 EndIf Case $iCheckbox[1] If _IsChecked($iCheckbox[1]) Then $dCheckbox[1]=1;Read Only Else $dCheckbox[1]=0 EndIf Case $iCheckbox[2] If _IsChecked($iCheckbox[2]) Then $dCheckbox[2]=1;Optimize Else $dCheckbox[2]=0 EndIf Case $iButton[3] $Cancel=1 $OK=0 $MenuSet=6;Mount Image MenuErr() Case $iButton[4] GUIDelete($hGUI) Menu() EndSwitch WEnd ; Delete the previous GUI and all controls. GUIDelete($hGUI) EndFunc Func Remount_Image() Local $hGUI,$idMsg,$iInput[1],$hInput[1],$iButton[4] Local $Temp Local $dInput[1] Local $aAccelKeys[3][2]=[["{ENTER}",$iButton[1]],["{ESC}",$iButton[2]],["{F12}",$iButton[3]]] $hGUI=GUICreate("DISM GUI",1065,170,-1,-1,-1,$WS_EX_ACCEPTFILES) ;GUICreate("DISM GUI",1065,800) ; will create a dialog box that when displayed is centered GUISetBkColor(0x80FFFF) GUISetFont(16,400) GUICtrlCreateLabel("DISM GUI",474,10,250,20) GUICtrlCreateLabel("Remount Image",30,30,250,30) GUICtrlCreateLabel("Target Mount Path",30,60,250,30) $iInput[0]=GUICtrlCreateInput("",210,60,690,30) $iButton[0]=GUICtrlCreateButton("Browse...",920,60,100,30) $iButton[1]=GUICtrlCreateButton("Execute",300,100,160,30) $iButton[2]=GUICtrlCreateButton("Cancel",550,100,190,30) $iButton[3]=GUICtrlCreateButton("Return to Main Menu",415,130,250,30) GUISetState(@SW_SHOW) ; Loop until the user exits. GUISetAccelerators($aAccelKeys) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE $Cancel=1 $OK=0 $MenuSet=7;Remount Image MenuErr() Case $iButton[0]; $iInput[0]=FileSelectFolder("Browse for Target Mount Path","") GUICtrlSetData($iInput[0],$hInput[0]) Case $iButton[1];Remount Image $dInput[0]=GUICtrlRead($iInput[12]);Target Mount Path If $dInput[0]="" Then MsgBox(4096+16,"Error!","Enter a Target Mount path!") EndIf Case $iButton[2] $Cancel=1 $OK=0 $MenuSet=7;Remount Image MenuErr() Case $iButton[3] GUIDelete($hGUI) Menu() EndSwitch WEnd ; Delete the previous GUI and all controls. GUIDelete($hGUI) EndFunc Func Cleanup_Mountpoints() Local $hGUI,$idMsg,$iButton[3] Local $Temp Local $aAccelKeys[3][2]=[["{ENTER}",$iButton[0]],["{ESC}",$iButton[1]],["{F12}",$iButton[2]]] $hGUI=GUICreate("DISM GUI",625,100,-1,-1,-1,$WS_EX_ACCEPTFILES) ;GUICreate("DISM GUI",1065,800) ; will create a dialog box that when displayed is centered GUISetBkColor(0x80FFFF) GUISetFont(16,400) GUICtrlCreateLabel("DISM GUI",274,10,250,20) GUICtrlCreateLabel("Cleanup Mountpoints",30,30,290,30) $iButton[0]=GUICtrlCreateButton("Cleanup Mountpoints",300,30,230,30) $iButton[1]=GUICtrlCreateButton("Cancel",150,60,190,30) $iButton[2]=GUICtrlCreateButton("Return to Main Menu",350,60,250,30) GUISetState(@SW_SHOW) ; Loop until the user exits. GUISetAccelerators($aAccelKeys) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE $Cancel=1 $OK=0 $MenuSet=8;Cleanup Mountpoints MenuErr() Case $iButton[0];Cleanup Mountpoints $Cancel=0 $OK=1 Sleep(1000) Case $iButton[1] $Cancel=1 $OK=0 $MenuSet=8;Cleanup Mountpoints MenuErr() Case $iButton[2] GUIDelete($hGUI) Menu() EndSwitch WEnd ; Delete the previous GUI and all controls. GUIDelete($hGUI) EndFunc Func Apply_Custom_WIM_Data_Image() Local $hGUI,$idMsg,$iButton[5],$iCheckbox[1],$iInput[2],$hInput[2] Local $Temp Local $dCheckbox[1],$dInput[2] Local $aAccelKeys[3][2]=[["{ENTER}",$iButton[2]],["{ESC}",$iButton[3]],["{F12}",$iButton[4]]] $hGUI=GUICreate("DISM GUI",1065,250,-1,-1,-1,$WS_EX_ACCEPTFILES) ;GUICreate("DISM GUI",1065,800) ; will create a dialog box that when displayed is centered GUISetBkColor(0x80FFFF) GUISetFont(16,400) GUICtrlCreateLabel("DISM GUI",474,10,250,20) GUICtrlCreateLabel("Apply Custom WIM Data Image",30,30,350,30) GUICtrlCreateLabel("Image File Path",30,60,250,30) $iInput[0]=GUICtrlCreateInput("",200,60,700,30) $iButton[0]=GUICtrlCreateButton("Browse...",920,60,100,30) GUICtrlCreateLabel("Target File Path",30,95,250,30) $iInput[1]=GUICtrlCreateInput("",200,95,700,30) $iButton[1]=GUICtrlCreateButton("Browse...",920,95,100,30) $iCheckbox[0]=GUICtrlCreateCheckbox("Single Instance",30,130,170,30) $iButton[2]=GUICtrlCreateButton("Execute",300,160,160,30) $iButton[3]=GUICtrlCreateButton("Cancel",550,160,190,30) $iButton[4]=GUICtrlCreateButton("Return to Main Menu",415,190,250,30) GUISetState(@SW_SHOW) ; Loop until the user exits. GUISetAccelerators($aAccelKeys) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE $Cancel=1 $OK=0 $MenuSet=9;Apply Custom WIM Data Image MenuErr() Case $iButton[0]; $iInput[0]=FileOpenDialog("Browse for Image File","","WIM (*.wim)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) GUICtrlSetData($iInput[0],$hInput[0]) Case $iButton[1]; $iInput[1]=FileSelectFolder("Browse for Target Mount Path","") GUICtrlSetData($iInput[1],$hInput[1]) Case $iButton[2];Apply Custom WIM Data Image $Cancel=0 $OK=1 $dInput[0]=GUICtrlRead($iInput[0]);Image File Path $dInput[1]=GUICtrlRead($iInput[1]);Target File Path If $dInput[0]="" Then MsgBox(4096+16,"Error!","Enter a WIM file and path!") ElseIf $dInput[1]="" Then MsgBox(4096+16,"Error!","Enter a Target Mount path!") EndIf If $iCheckbox[0]=$GUI_CHECKED Then $dCheckbox[0]=1;Single Instance ElseIf $iCheckbox[0]=$GUI_UNCHECKED Then $dCheckbox[0]=0 EndIf Case $iButton[3] $Cancel=1 $OK=0 $MenuSet=9;Apply Custom WIM Data Image MenuErr() Case $iButton[4] GUIDelete($hGUI) Menu() EndSwitch WEnd ; Delete the previous GUI and all controls. GUIDelete($hGUI) EndFunc Func Capture_Custom_WIM_Image() Local $hGUI,$idMsg,$iButton[5],$iCheckbox[3],$iInput[2],$hInput[2] Local $Temp Local $dCheckbox[3],$dInput[2] Local $aAccelKeys[3][2]=[["{ENTER}",$iButton[2]],["{ESC}",$iButton[3]],["{F12}",$iButton[4]]] $hGUI=GUICreate("DISM GUI",1065,230,-1,-1,-1,$WS_EX_ACCEPTFILES) ;GUICreate("DISM GUI",1065,800) ; will create a dialog box that when displayed is centered GUISetBkColor(0x80FFFF) GUISetFont(16,400) GUICtrlCreateLabel("DISM GUI",474,10,250,20) GUICtrlCreateLabel("Custom Capture WIM Image",30,30,300,30) GUICtrlCreateLabel("Capture Path",30,60,250,30) $iInput[0]=GUICtrlCreateInput("",200,60,700,30) $iButton[0]=GUICtrlCreateButton("Browse...",920,60,100,30) GUICtrlCreateLabel("Config File Path",30,95,250,30) $iInput[1]=GUICtrlCreateInput("",200,95,700,30) $iButton[1]=GUICtrlCreateButton("Browse...",920,95,100,30) $iCheckbox[0]=GUICtrlCreateCheckbox("Check Integrity",30,130,160,30) $iCheckbox[1]=GUICtrlCreateCheckbox("Verify",200,130,100,30) $iCheckbox[2]=GUICtrlCreateCheckbox("Confirm Trusted File",300,130,230,30) $iButton[2]=GUICtrlCreateButton("Execute",300,160,160,30) $iButton[3]=GUICtrlCreateButton("Cancel",550,160,190,30) $iButton[4]=GUICtrlCreateButton("Return to Main Menu",415,190,250,30) GUISetState(@SW_SHOW) ; Loop until the user exits. GUISetAccelerators($aAccelKeys) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE $Cancel=1 $OK=0 $MenuSet=10;Capture Custom WIM Image MenuErr() Case $iButton[0] $iInput[0]=FileSelectFolder("Browse for Capture Path","") GUICtrlSetData($iInput[0],$hInput[0]) Case $iButton[1]; $iInput[1]=FileOpenDialog("Browse for Configuration File","","INI (*.ini)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) GUICtrlSetData($iInput[1],$hInput[1]) Case $iButton[2];Apply Custom WIM Data Image $Cancel=0 $OK=1 $dInput[0]=GUICtrlRead($iInput[0]);Image File Path $dInput[1]=GUICtrlRead($iInput[1]);Config File Path If $dInput[0]="" Then MsgBox(4096+16,"Error!","Enter a Capture path!") ElseIf $dInput[1]="" Then MsgBox(4096+16,"Error!","Enter a Target Mount path!") EndIf If $iCheckbox[0]=$GUI_CHECKED Then $dCheckbox[0]=1;Check Integrity ElseIf $iCheckbox[0]=$GUI_UNCHECKED Then $dCheckbox[0]=0 EndIf If $iCheckbox[1]=$GUI_CHECKED Then $dCheckbox[1]=1;Verify ElseIf $iCheckbox[1]=$GUI_UNCHECKED Then $dCheckbox[1]=0 EndIf If $iCheckbox[2]=$GUI_CHECKED Then $dCheckbox[2]=1;Confirm Trusted File ElseIf $iCheckbox[2]=$GUI_UNCHECKED Then $dCheckbox[2]=0 EndIf Case $iButton[3] $Cancel=1 $OK=0 $MenuSet=10;Capture Custom WIM Image MenuErr() Case $iButton[4] GUIDelete($hGUI) Menu() EndSwitch WEnd ; Delete the previous GUI and all controls. GUIDelete($hGUI) EndFunc Func Get_WIM_Boot_Entry() Local $hGUI,$idMsg,$iButton[3],$aArray Local $Temp,$iDriveCombo[28],$dDriveCombo[28] Local $aAccelKeys[3][2]=[["{ENTER}",$iButton[0]],["{ESC}",$iButton[1]],["{F12}",$iButton[2]]] $hGUI=GUICreate("DISM GUI",1065,170,-1,-1,-1,$WS_EX_ACCEPTFILES) ;GUICreate("DISM GUI",1065,800) ; will create a dialog box that when displayed is centered GUISetBkColor(0x80FFFF) GUISetFont(16,400) GUICtrlCreateLabel("DISM GUI",474,10,250,20) GUICtrlCreateLabel("Get WIM Boot Entry",30,30,300,30) GUICtrlCreateLabel("Volume Path",30,60,250,30) $aArray=DriveGetDrive($DT_FIXED) If @error Then ; An error occurred when retrieving the drives. MsgBox(4096+16,"","It appears an error occurred.") Else For $i = 2 To $aArray[0] $Temp=StringUpper($aArray[$i])&"|" Next $Temp=StringTrimRight($Temp,1) EndIf $iDriveCombo[0]=GUICtrlCreateCombo(StringUpper($aArray[1]),200,60,100,30) GUICtrlSetData($iDriveCombo[0],$Temp,$aArray[1]) $iButton[0]=GUICtrlCreateButton("Execute",300,90,160,30) $iButton[1]=GUICtrlCreateButton("Cancel",550,90,190,30) $iButton[2]=GUICtrlCreateButton("Return to Main Menu",415,130,250,30) GUISetState(@SW_SHOW) ; Loop until the user exits. GUISetAccelerators($aAccelKeys) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE $Cancel=1 $OK=0 $MenuSet=11;Get WIM Boot Entry MenuErr() Case $iButton[0];Get WIM Boot Entry $dDriveCombo[0]=GUICtrlRead($iDriveCombo[0]);Volume Path Case $iButton[1] $Cancel=1 $OK=0 $MenuSet=11;Get WIM Boot Entry MenuErr() Case $iButton[2] GUIDelete($hGUI) Menu() EndSwitch WEnd ; Delete the previous GUI and all controls. GUIDelete($hGUI) EndFunc Func Update_WIM_Boot_Entry() Local $hGUI,$idMsg,$iButton[4],$aArray,$iInput[2],$iInput2[1],$dInput[2],$hInput[2] Local $Temp,$iDriveCombo[28],$dDriveCombo[28] Local $aAccelKeys[3][2]=[["{ENTER}",$iButton[1]],["{ESC}",$iButton[2]],["{F12}",$iButton[3]]] $hGUI=GUICreate("DISM GUI",1065,230,-1,-1,-1,$WS_EX_ACCEPTFILES) ;GUICreate("DISM GUI",1065,800) ; will create a dialog box that when displayed is centered GUISetBkColor(0x80FFFF) GUISetFont(16,400) GUICtrlCreateLabel("DISM GUI",474,10,250,20) GUICtrlCreateLabel("Update WIM Boot Entry",30,30,300,30) GUICtrlCreateLabel("Volume Path",30,60,250,30) $aArray=DriveGetDrive($DT_FIXED) If @error Then ; An error occurred when retrieving the drives. MsgBox(4096+16,"","It appears an error occurred.") Else For $i = 2 To $aArray[0] $Temp=StringUpper($aArray[$i])&"|" Next $Temp=StringTrimRight($Temp,1) EndIf $iDriveCombo[2]=GUICtrlCreateCombo(StringUpper($aArray[1]),200,60,100,30) GUICtrlSetData($iDriveCombo[2],$Temp,$aArray[1]) GUICtrlCreateLabel("Data Source ID",30,95,250,30) $iInput[0]=GUICtrlCreateInput("1",200,95,100,30) $iInput2[0]=GUICtrlCreateUpdown($iInput[0],$UDS_ARROWKEYS) GUICtrlSetLimit($iInput2[0],99,1) GUICtrlCreateLabel("Image File Path",30,130,250,30) $iInput[1]=GUICtrlCreateInput("",200,130,700,30) $iButton[0]=GUICtrlCreateButton("Browse...",920,130,100,30) $iButton[1]=GUICtrlCreateButton("Execute",300,160,160,30) $iButton[2]=GUICtrlCreateButton("Cancel",550,160,190,30) $iButton[3]=GUICtrlCreateButton("Return to Main Menu",415,190,250,30) GUISetState(@SW_SHOW) ; Loop until the user exits. GUISetAccelerators($aAccelKeys) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE $Cancel=1 $OK=0 $MenuSet=12;Update WIM Boot Entry MenuErr() Case $iButton[0]; $iInput[1]=FileOpenDialog("Browse for Image File","","WIM (*.wim)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) GUICtrlSetData($iInput[1],$hInput[1]) Case $iButton[1];Update WIM Boot Entry $Cancel=0 $OK=1 $dDriveCombo[2]=GUICtrlRead($iDriveCombo[2]);Volume Path $dInput[0]=GUICtrlRead($iInput[0]);Data Source ID $dInput[1]=GUICtrlRead($iInput[1]);Image File Path If $dInput[1]="" Then MsgBox(4096+16,"Error!","Enter a WIM file and path!") EndIf Case $iButton[2] $Cancel=1 $OK=0 $MenuSet=12;Update WIM Boot Entry MenuErr() Case $iButton[3] GUIDelete($hGUI) Menu() EndSwitch WEnd ; Delete the previous GUI and all controls. GUIDelete($hGUI) EndFunc Func List_WIM_Image() Local $hGUI,$idMsg,$iButton[4],$iInput[2],$iInput2[1],$dInput[2],$hInput[2] Local $Temp Local $aAccelKeys[3][2]=[["{ENTER}",$iButton[1]],["{ESC}",$iButton[2]],["{F12}",$iButton[3]]] $hGUI=GUICreate("DISM GUI",1065,200,-1,-1,-1,$WS_EX_ACCEPTFILES) ;GUICreate("DISM GUI",1065,800) ; will create a dialog box that when displayed is centered GUISetBkColor(0x80FFFF) GUISetFont(16,400) GUICtrlCreateLabel("DISM GUI",474,10,250,20) GUICtrlCreateLabel("List WIM Image",30,30,300,30) GUICtrlCreateLabel("Image File Path",30,60,250,30) $iInput[0]=GUICtrlCreateInput("",200,60,700,30) $iButton[0]=GUICtrlCreateButton("Browse...",920,60,100,30) GUICtrlCreateLabel("Index",30,95,250,30) $iInput[1]=GUICtrlCreateInput("1",200,95,100,30) $iInput2[0]=GUICtrlCreateUpdown($iInput[1],$UDS_ARROWKEYS) GUICtrlSetLimit($iInput2[0],99,1) $iButton[1]=GUICtrlCreateButton("Execute",300,130,160,30) $iButton[2]=GUICtrlCreateButton("Cancel",550,130,190,30) $iButton[3]=GUICtrlCreateButton("Return to Main Menu",415,160,250,30) GUISetState(@SW_SHOW) ; Loop until the user exits. GUISetAccelerators($aAccelKeys) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE $Cancel=1 $OK=0 $MenuSet=13;List WIM Image MenuErr() Case $iButton[0]; $iInput[0]=FileOpenDialog("Browse for Image File","","WIM (*.wim)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) GUICtrlSetData($iInput[0],$hInput[0]) Case $iButton[1];List WIM Image $Cancel=0 $OK=1 $dInput[0]=GUICtrlRead($iInput[0]);Image File Path $dInput[1]=GUICtrlRead($iInput[1]);Index If $dInput[0]="" Then MsgBox(4096+16,"Error!","Enter a WIM file and path!") EndIf Case $iButton[2] $Cancel=1 $OK=0 $MenuSet=13;List WIM Image MenuErr() Case $iButton[3] GUIDelete($hGUI) Menu() EndSwitch WEnd ; Delete the previous GUI and all controls. GUIDelete($hGUI) EndFunc Func Delete_WIM_Image() Local $hGUI,$idMsg,$iButton[4],$iInput[2],$iInput2[1],$dInput[2],$hInput[2] Local $Temp Local $iCheckbox[1],$dCheckbox[1] Local $aAccelKeys[3][2]=[["{ENTER}",$iButton[1]],["{ESC}",$iButton[2]],["{F12}",$iButton[3]]] $hGUI=GUICreate("DISM GUI",1065,230,-1,-1,-1,$WS_EX_ACCEPTFILES) ;GUICreate("DISM GUI",1065,800) ; will create a dialog box that when displayed is centered GUISetBkColor(0x80FFFF) GUISetFont(16,400) GUICtrlCreateLabel("DISM GUI",474,10,250,20) GUICtrlCreateLabel("Delete WIM Image",30,30,300,30) GUICtrlCreateLabel("Image File Path",30,60,250,30) $iInput[0]=GUICtrlCreateInput("",200,60,700,30) $iButton[0]=GUICtrlCreateButton("Browse...",920,60,100,30) GUICtrlCreateLabel("Index",30,95,250,30) $iInput[1]=GUICtrlCreateInput("1",200,95,100,30) $iInput2[0]=GUICtrlCreateUpdown($iInput[1],$UDS_ARROWKEYS) GUICtrlSetLimit($iInput2[0],99,1) $iCheckbox[0]=GUICtrlCreateCheckbox("Check Integrity",30,130,230,30) $iButton[1]=GUICtrlCreateButton("Execute",300,160,160,30) $iButton[2]=GUICtrlCreateButton("Cancel",550,160,190,30) $iButton[3]=GUICtrlCreateButton("Return to Main Menu",415,190,250,30) GUISetState(@SW_SHOW) ; Loop until the user exits. GUISetAccelerators($aAccelKeys) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE $Cancel=1 $OK=0 $MenuSet=14;Delete WIM Image MenuErr() Case $iButton[0]; $iInput[0]=FileOpenDialog("Browse for Image File","","WIM (*.wim)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) GUICtrlSetData($iInput[0],$hInput[0]) Case $iButton[1];Delete WIM Image $Cancel=0 $OK=1 $dInput[0]=GUICtrlRead($iInput[0]);Image File Path $dInput[1]=GUICtrlRead($iInput[1]);Index If $dInput[0]="" Then MsgBox(4096+16,"Error!","Enter a WIM file and path!") EndIf If $iCheckbox[0]=$GUI_CHECKED Then $dCheckbox[0]=1;Check Integrity ElseIf $iCheckbox[0]=$GUI_UNCHECKED Then $dCheckbox[0]=0 EndIf Case $iButton[2] $Cancel=1 $OK=0 $MenuSet=14;Delete WIM Image MenuErr() Case $iButton[3] GUIDelete($hGUI) Menu() EndSwitch WEnd ; Delete the previous GUI and all controls. GUIDelete($hGUI) EndFunc Func Export_WIM_Image() Local $hGUI,$idMsg,$iButton[6],$iInput[5],$iInput2[1],$dInput[5],$hInput[5] Local $Temp Local $iCheckbox[3],$dCheckbox[3],$iCombo[1],$dCombo[1] Local $aAccelKeys[3][2]=[["{ENTER}",$iButton[3]],["{ESC}",$iButton[4]],["{F12}",$iButton[5]]] $hGUI=GUICreate("DISM GUI",1065,400,-1,-1,-1,$WS_EX_ACCEPTFILES) ;GUICreate("DISM GUI",1065,800) ; will create a dialog box that when displayed is centered GUISetBkColor(0x80FFFF) GUISetFont(16,400) GUICtrlCreateLabel("DISM GUI",474,10,250,20) GUICtrlCreateLabel("Export WIM Image",30,30,300,30) GUICtrlCreateLabel("Source Image File Path",30,60,350,30) $iInput[0]=GUICtrlCreateInput("",290,60,590,30) $iButton[0]=GUICtrlCreateButton("Browse...",920,60,100,30) GUICtrlCreateLabel("Split Image File Path",30,95,350,30) $iInput[1]=GUICtrlCreateInput("",290,95,590,30) $iButton[1]=GUICtrlCreateButton("Browse...",920,95,100,30) GUICtrlCreateLabel("Source Index",30,130,250,30) $iInput[2]=GUICtrlCreateInput("1",200,130,100,30) $iInput2[0]=GUICtrlCreateUpdown($iInput[2],$UDS_ARROWKEYS) GUICtrlSetLimit($iInput2[0],99,1) GUICtrlCreateLabel("Destination Image File Path",30,165,350,30) $iInput[3]=GUICtrlCreateInput("",290,165,590,30) $iButton[2]=GUICtrlCreateButton("Browse...",920,165,100,30) GUICtrlCreateLabel("Destination Name",30,200,350,30) $iInput[4]=GUICtrlCreateInput("",290,200,590,30) GUICtrlCreateLabel("Compress",30,235,250,30) $iCombo[0]=GUICtrlCreateCombo("Maximum",200,235,250,30) GUICtrlSetData($iCombo[0],"Fast|None|Recovery","Maximum") $iCheckbox[0]=GUICtrlCreateCheckbox("Bootable",30,275,110,30) $iCheckbox[1]=GUICtrlCreateCheckbox("WIM Boot",150,275,160,30) $iCheckbox[2]=GUICtrlCreateCheckbox("Check Integrity",280,275,230,30) $iButton[3]=GUICtrlCreateButton("Execute",300,305,160,30) $iButton[4]=GUICtrlCreateButton("Cancel",550,305,190,30) $iButton[5]=GUICtrlCreateButton("Return to Main Menu",415,345,250,30) GUISetState(@SW_SHOW) ; Loop until the user exits. GUISetAccelerators($aAccelKeys) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE $Cancel=1 $OK=0 $MenuSet=15;Export WIM Image MenuErr() Case $iButton[0] $iInput[0]=FileOpenDialog("Browse for Source Image File","","WIM (*.wim)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) GUICtrlSetData($iInput[0],$hInput[0]) Case $iButton[2]; $iInput[3]=FileOpenDialog("Browse for Destination Image File","","WIM (*.wim)") GUICtrlSetData($iInput[3],$hInput[3]) Case $iButton[1]; $iInput[2]=FileOpenDialog("Browse for Split Image Files","","SWM (*.swm)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) GUICtrlSetData($iInput[2],$hInput[2]) Case $iButton[3];Export WIM Image $Cancel=0 $OK=1 $dInput[0]=GUICtrlRead($iInput[0]);Source Image File Path $dInput[1]=GUICtrlRead($iInput[1]);Index $dInput[2]=GUICtrlRead($iInput[2]);Split Image File Path $dInput[3]=GUICtrlRead($iInput[3]);Destination Image File Path $dInput[4]=GUICtrlRead($iInput[4]);Destination Name $dCombo[0]=GUICtrlRead($iCombo[0]);Compress If $dInput[0]="" Then MsgBox(0,"Error!","Enter the source WIM file and path!") ElseIf $dInput[3]="" Then MsgBox(0,"Error!","Enter the destination WIM file and path!") EndIf If $iCheckbox[0]=$GUI_CHECKED Then $dCheckbox[0]=1;Bootable ElseIf $iCheckbox[0]=$GUI_UNCHECKED Then $dCheckbox[0]=0 EndIf If $iCheckbox[1]=$GUI_CHECKED Then $dCheckbox[1]=1;WIM Boot ElseIf $iCheckbox[1]=$GUI_UNCHECKED Then $dCheckbox[1]=0 EndIf If $iCheckbox[2]=$GUI_CHECKED Then $dCheckbox[2]=1;Check Integrity ElseIf $iCheckbox[2]=$GUI_UNCHECKED Then $dCheckbox[2]=0 EndIf Case $iButton[4] $Cancel=1 $OK=0 $MenuSet=15;Export WIM Image MenuErr() Case $iButton[5] GUIDelete($hGUI) Menu() EndSwitch WEnd ; Delete the previous GUI and all controls. GUIDelete($hGUI) EndFunc Func Append_WIM_Image() Local $hGUI,$idMsg,$iButton[6],$iInput[5],$dInput[5],$hInput[5] Local $Temp Local $iCheckbox[5],$dCheckbox[5] Local $aAccelKeys[3][2]=[["{ENTER}",$iButton[3]],["{ESC}",$iButton[4]],["{F12}",$iButton[5]]] $hGUI=GUICreate("DISM GUI",1065,350,-1,-1,-1,$WS_EX_ACCEPTFILES) ;GUICreate("DISM GUI",1065,800) ; will create a dialog box that when displayed is centered GUISetBkColor(0x80FFFF) GUISetFont(16,400) GUICtrlCreateLabel("DISM GUI",474,10,250,20) GUICtrlCreateLabel("Append WIM Image",30,30,300,30) GUICtrlCreateLabel("Image File Path",30,60,150,30) $iInput[0]=GUICtrlCreateInput("",200,60,680,30) $iButton[0]=GUICtrlCreateButton("Browse...",890,60,100,30) GUICtrlCreateLabel("Source Path",30,95,350,30) $iInput[1]=GUICtrlCreateInput("",200,95,680,30) $iButton[1]=GUICtrlCreateButton("Browse...",890,95,100,30) GUICtrlCreateLabel("Name",30,130,350,30) $iInput[2]=GUICtrlCreateInput("",200,130,680,30) GUICtrlCreateLabel("Description",30,165,350,30) $iInput[3]=GUICtrlCreateInput("",200,165,680,30) GUICtrlCreateLabel("Configuration File",30,200,350,30) $iInput[4]=GUICtrlCreateInput("",200,200,680,30) $iButton[2]=GUICtrlCreateButton("Browse...",890,200,100,30) $iCheckbox[0]=GUICtrlCreateCheckbox("Bootable",30,240,110,30) $iCheckbox[1]=GUICtrlCreateCheckbox("WIM Boot",150,240,120,30) $iCheckbox[2]=GUICtrlCreateCheckbox("Check Integrity",280,240,160,30) $iCheckbox[3]=GUICtrlCreateCheckbox("Verify",450,240,100,30) $iCheckbox[4]=GUICtrlCreateCheckbox("No Reparse Point Fix",550,240,230,30) $iButton[3]=GUICtrlCreateButton("Execute",300,270,160,30) $iButton[4]=GUICtrlCreateButton("Cancel",550,270,190,30) $iButton[5]=GUICtrlCreateButton("Return to Main Menu",415,300,250,30) GUISetState(@SW_SHOW) ; Loop until the user exits. GUISetAccelerators($aAccelKeys) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE $Cancel=1 $OK=0 $MenuSet=16;Append WIM Image MenuErr() Case $iButton[1] $iInput[1]=FileSelectFolder("Browse for Source Path","") GUICtrlSetData($iInput[1],$hInput[1]) Case $iButton[0] $iInput[0]=FileOpenDialog("Browse for Image File","","WIM (*.wim)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) GUICtrlSetData($iInput[0],$hInput[0]) Case $iButton[2]; $iInput[4]=FileOpenDialog("Browse for Configuration File","","INI (*.ini)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) GUICtrlSetData($iInput[4],$hInput[4]) Case $iButton[3];Append WIM Image $Cancel=0 $OK=1 $dInput[0]=GUICtrlRead($iInput[0]);Image File Path $dInput[1]=GUICtrlRead($iInput[1]);Source Path $dInput[2]=GUICtrlRead($iInput[2]);Name $dInput[3]=GUICtrlRead($iInput[3]);Description $dInput[4]=GUICtrlRead($iInput[4]);Configuration File Path If $dInput[0]="" Then MsgBox(4096+16,"Error!","Enter the source WIM file and path!") ElseIf $dInput[1]="" Then MsgBox(4096+16,"Error!","Enter the Source path!") ElseIf $dInput[2]="" Then MsgBox(4096+16,"Error!","Enter the Name!") EndIf If $iCheckbox[0]=$GUI_CHECKED Then $dCheckbox[0]=1;Bootable ElseIf $iCheckbox[0]=$GUI_UNCHECKED Then $dCheckbox[0]=0 EndIf If $iCheckbox[1]=$GUI_CHECKED Then $dCheckbox[1]=1;WIM Boot ElseIf $iCheckbox[1]=$GUI_UNCHECKED Then $dCheckbox[1]=0 EndIf If $iCheckbox[2]=$GUI_CHECKED Then $dCheckbox[2]=1;Check Integrity ElseIf $iCheckbox[2]=$GUI_UNCHECKED Then $dCheckbox[2]=0 EndIf If $iCheckbox[3]=$GUI_CHECKED Then $dCheckbox[3]=1;Verify ElseIf $iCheckbox[3]=$GUI_UNCHECKED Then $dCheckbox[3]=0 EndIf If $iCheckbox[4]=$GUI_CHECKED Then $dCheckbox[4]=1;NoRpFix ElseIf $iCheckbox[4]=$GUI_UNCHECKED Then $dCheckbox[4]=0 EndIf Case $iButton[4] $Cancel=1 $OK=0 $MenuSet=16;Append WIM Image MenuErr() Case $iButton[5] GUIDelete($hGUI) Menu() EndSwitch WEnd ; Delete the previous GUI and all controls. GUIDelete($hGUI) EndFunc Func Capture_WIM_Image() Local $hGUI,$idMsg,$iButton[6],$iInput[5],$dInput[5],$hInput[5] Local $Temp Local $iCheckbox[5],$dCheckbox[5],$iCombo[1],$dCombo[1] Local $aAccelKeys[3][2]=[["{ENTER}",$iButton[3]],["{ESC}",$iButton[4]],["{F12}",$iButton[5]]] $hGUI=GUICreate("DISM GUI",1065,400,-1,-1,-1,$WS_EX_ACCEPTFILES) ;GUICreate("DISM GUI",1065,800) ; will create a dialog box that when displayed is centered GUISetBkColor(0x80FFFF) GUISetFont(16,400) GUICtrlCreateLabel("DISM GUI",474,10,250,20) GUICtrlCreateLabel("Capture WIM Image",30,30,300,30) GUICtrlCreateLabel("Image File Path",30,60,150,30) $iInput[0]=GUICtrlCreateInput("",200,60,680,30) $iButton[0]=GUICtrlCreateButton("Browse...",890,60,100,30) GUICtrlCreateLabel("Source Path",30,95,350,30) $iInput[1]=GUICtrlCreateInput("",200,95,680,30) $iButton[1]=GUICtrlCreateButton("Browse...",890,95,100,30) GUICtrlCreateLabel("Name",30,130,350,30) $iInput[2]=GUICtrlCreateInput("",200,130,680,30) GUICtrlCreateLabel("Description",30,165,350,30) $iInput[3]=GUICtrlCreateInput("",200,165,680,30) GUICtrlCreateLabel("Configuration File",30,200,350,30) $iInput[4]=GUICtrlCreateInput("",200,200,680,30) $iButton[2]=GUICtrlCreateButton("Browse...",890,200,100,30) GUICtrlCreateLabel("Compress",30,240,250,30) $iCombo[0]=GUICtrlCreateCombo("Maximum",200,240,250,30) GUICtrlSetData($iCombo[0],"Fast|None|Recovery","Maximum") $iCheckbox[0]=GUICtrlCreateCheckbox("Bootable",30,280,110,30) $iCheckbox[1]=GUICtrlCreateCheckbox("WIM Boot",150,280,120,30) $iCheckbox[2]=GUICtrlCreateCheckbox("Check Integrity",280,280,160,30) $iCheckbox[3]=GUICtrlCreateCheckbox("Verify",450,280,100,30) $iCheckbox[4]=GUICtrlCreateCheckbox("No Reparse Point Fix",550,280,230,30) $iButton[3]=GUICtrlCreateButton("Execute",300,310,160,30) $iButton[4]=GUICtrlCreateButton("Cancel",550,310,190,30) $iButton[5]=GUICtrlCreateButton("Return to Main Menu",415,340,250,30) GUISetState(@SW_SHOW) ; Loop until the user exits. GUISetAccelerators($aAccelKeys) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE $Cancel=1 $OK=0 $MenuSet=17;Capture WIM Image MenuErr() Case $iButton[0] $iInput[0]=FileSelectFolder("Browse for Source Path","") GUICtrlSetData($iInput[0],$hInput[0]) Case $iButton[1] $iInput[1]=FileOpenDialog("Browse for Image File","","WIM (*.wim)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) GUICtrlSetData($iInput[1],$hInput[1]) Case $iButton[2]; $iInput[4]=FileOpenDialog("Browse for Configuration File","","INI (*.ini)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) GUICtrlSetData($iInput[4],$hInput[4]) Case $iButton[3];Capture WIM Image $Cancel=0 $OK=1 $dInput[0]=GUICtrlRead($iInput[0]);Image File Path $dInput[1]=GUICtrlRead($iInput[1]);Source Path $dInput[2]=GUICtrlRead($iInput[2]);Name $dInput[3]=GUICtrlRead($iInput[3]);Description $dInput[4]=GUICtrlRead($iInput[4]);Configuration File Path $dCombo[0]=GUICtrlRead($iCombo[0]);Compress If $dInput[28]="" Then MsgBox(4096+16,"Error!","Enter the source WIM file and path!") ElseIf $dInput[29]="" Then MsgBox(4096+16,"Error!","Enter the Source path!") ElseIf $dInput[2]="" Then MsgBox(4096+16,"Error!","Enter the Name!") EndIf If $iCheckbox[0]=$GUI_CHECKED Then $dCheckbox[0]=1;Bootable ElseIf $iCheckbox[0]=$GUI_UNCHECKED Then $dCheckbox[0]=0 EndIf If $iCheckbox[1]=$GUI_CHECKED Then $dCheckbox[1]=1;WIM Boot ElseIf $iCheckbox[1]=$GUI_UNCHECKED Then $dCheckbox[1]=0 EndIf If $iCheckbox[2]=$GUI_CHECKED Then $dCheckbox[2]=1;Check Integrity ElseIf $iCheckbox[2]=$GUI_UNCHECKED Then $dCheckbox[2]=0 EndIf If $iCheckbox[3]=$GUI_CHECKED Then $dCheckbox[3]=1;Verify ElseIf $iCheckbox[3]=$GUI_UNCHECKED Then $dCheckbox[3]=0 EndIf If $iCheckbox[4]=$GUI_CHECKED Then $dCheckbox[4]=1;NoRpFix ElseIf $iCheckbox[4]=$GUI_UNCHECKED Then $dCheckbox[4]=0 EndIf Case $iButton[4] $Cancel=1 $OK=0 $MenuSet=17;Capture WIM Image MenuErr() Case $iButton[5] GUIDelete($hGUI) Menu() EndSwitch WEnd ; Delete the previous GUI and all controls. GUIDelete($hGUI) EndFunc Func Get_Mounted_WIM_Info() Local $hGUI,$idMsg,$iButton[3] Local $Temp Local $aAccelKeys[3][2]=[["{ENTER}",$iButton[0]],["{ESC}",$iButton[1]],["{F12}",$iButton[2]]] $hGUI=GUICreate("DISM GUI",620,100,-1,-1,-1,$WS_EX_ACCEPTFILES) ;GUICreate("DISM GUI",1065,800) ; will create a dialog box that when displayed is centered GUISetBkColor(0x80FFFF) GUISetFont(16,400) GUICtrlCreateLabel("DISM GUI",274,10,250,20) GUICtrlCreateLabel("Get Mounted Wim Info",30,30,250,30) $iButton[0]=GUICtrlCreateButton("Get Info",300,30,100,30) $iButton[1]=GUICtrlCreateButton("Cancel",150,60,190,30) $iButton[2]=GUICtrlCreateButton("Return to Main Menu",350,60,250,30) GUISetState(@SW_SHOW) ; Loop until the user exits. GUISetAccelerators($aAccelKeys) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE $Cancel=1 $OK=0 $MenuSet=18;Get Mounted WIM Info MenuErr() Case $iButton[0];Get Mounted WIM Info $Cancel=0 $OK=1 Sleep(1000) Case $iButton[1] $Cancel=1 $OK=0 $MenuSet=18;Get Mounted WIM Info MenuErr() Case $iButton[2] GUIDelete($hGUI) Menu() EndSwitch WEnd ; Delete the previous GUI and all controls. GUIDelete($hGUI) EndFunc Func Get_WIM_Info() Local $hGUI,$idMsg,$iButton[4],$iInput[2],$iInput2[1],$dInput[2],$hInput[2] Local $Temp Local $aAccelKeys[3][2]=[["{ENTER}",$iButton[1]],["{ESC}",$iButton[2]],["{F12}",$iButton[3]]] $hGUI=GUICreate("DISM GUI",1065,200,-1,-1,-1,$WS_EX_ACCEPTFILES) ;GUICreate("DISM GUI",1065,800) ; will create a dialog box that when displayed is centered GUISetBkColor(0x80FFFF) GUISetFont(16,400) GUICtrlCreateLabel("DISM GUI",474,10,250,20) GUICtrlCreateLabel("Get WIM Info",30,30,250,30) GUICtrlCreateLabel("WIM File",30,60,250,30) $iInput[0]=GUICtrlCreateInput("",200,60,700,30) $iButton[0]=GUICtrlCreateButton("Browse...",920,60,100,30) GUICtrlCreateLabel("Index",30,95,250,30) $iInput[1]=GUICtrlCreateInput("1",200,95,100,30) $iInput2[0]=GUICtrlCreateUpdown($iInput[1],$UDS_ARROWKEYS) GUICtrlSetLimit($iInput2[0],999,1) $iButton[1]=GUICtrlCreateButton("Execute",300,130,160,30) $iButton[2]=GUICtrlCreateButton("Cancel",550,130,190,30) $iButton[3]=GUICtrlCreateButton("Return to Main Menu",415,160,250,30) GUISetState(@SW_SHOW) ; Loop until the user exits. GUISetAccelerators($aAccelKeys) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE $Cancel=1 $OK=0 $MenuSet=19;Get WIM Info MenuErr() Case $iButton[0] $iInput[0]=FileOpenDialog("Browse for Image File","","WIM (*.wim)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) GUICtrlSetData($iInput[0],$hInput[0]) Case $iButton[1];Get WIM Info $Cancel=0 $OK=1 $dInput[0]=GUICtrlRead($iInput[0]);WIM File $dInput[1]=GUICtrlRead($iInput[1]);Index If $dInput[0]="" Then MsgBox(4096+16,"Error!","Enter the source WIM file and path!") EndIf Case $iButton[2] $Cancel=1 $OK=0 $MenuSet=19;Get WIM Info MenuErr() Case $iButton[3] GUIDelete($hGUI) Menu() EndSwitch WEnd ; Delete the previous GUI and all controls. GUIDelete($hGUI) EndFunc Func Unmount_WIM() Local $hGUI,$idMsg,$iButton[4],$iInput[1],$dInput[1],$hInput[1] Local $Temp Local $iCheckbox[2],$dCheckbox[2] Local $aAccelKeys[3][2]=[["{ENTER}",$iButton[1]],["{ESC}",$iButton[2]],["{F12}",$iButton[3]]] $hGUI=GUICreate("DISM GUI",1065,200,-1,-1,-1,$WS_EX_ACCEPTFILES) ;GUICreate("DISM GUI",1065,800) ; will create a dialog box that when displayed is centered GUISetBkColor(0x80FFFF) GUISetFont(16,400) GUICtrlCreateLabel("DISM GUI",474,10,250,20) GUICtrlCreateLabel("Unmount WIM",30,30,250,30) GUICtrlCreateLabel("Mount Path",30,60,250,30) $iInput[0]=GUICtrlCreateInput("",200,60,700,30) $iButton[0]=GUICtrlCreateButton("Browse...",920,60,100,30) $iCheckbox[0]=GUICtrlCreateCheckbox("Commit",30,90,100,30) $iCheckbox[1]=GUICtrlCreateCheckbox("Discard",150,90,100,30) $iButton[1]=GUICtrlCreateButton("Execute",300,130,160,30) $iButton[2]=GUICtrlCreateButton("Cancel",550,130,190,30) $iButton[3]=GUICtrlCreateButton("Return to Main Menu",415,160,250,30) GUISetState(@SW_SHOW) ; Loop until the user exits. GUISetAccelerators($aAccelKeys) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE $Cancel=1 $OK=0 $MenuSet=20;Unmount WIM MenuErr() Case $iButton[0] $iInput[0]=FileSelectFolder("Browse for Source Path","") GUICtrlSetData($iInput[0],$hInput[0]) Case $iButton[1];Unmount WIM $Cancel=0 $OK=1 $dInput[0]=GUICtrlRead($iInput[0]);Mount Path If $dInput[0]="" Then MsgBox(4096+16,"Error!","Enter the mount path!") EndIf If $iCheckbox[0]=$GUI_CHECKED Then $dCheckbox[0]=1;Commit ElseIf $iCheckbox[0]=$GUI_UNCHECKED Then $dCheckbox[0]=0 EndIf If $iCheckbox[1]=$GUI_CHECKED Then $dCheckbox[1]=1;Discard ElseIf $iCheckbox[1]=$GUI_UNCHECKED Then $dCheckbox[1]=0 EndIf Case $iButton[2] $Cancel=1 $OK=0 $MenuSet=20;Unmount WIM MenuErr() Case $iButton[3] GUIDelete($hGUI) Menu() EndSwitch WEnd ; Delete the previous GUI and all controls. GUIDelete($hGUI) EndFunc Func Mount_WIM() Local $hGUI,$idMsg,$iButton[5],$iInput[3],$dInput[3],$iInput2[1],$hInput[3] Local $Temp Local $iCheckbox[1],$dCheckbox[1] Local $aAccelKeys[3][2]=[["{ENTER}",$iButton[2]],["{ESC}",$iButton[3]],["{F12}",$iButton[4]]] $hGUI=GUICreate("DISM GUI",1065,270,-1,-1,-1,$WS_EX_ACCEPTFILES) ;GUICreate("DISM GUI",1065,800) ; will create a dialog box that when displayed is centered GUISetBkColor(0x80FFFF) GUISetFont(16,400) GUICtrlCreateLabel("DISM GUI",474,10,250,20) GUICtrlCreateLabel("Mount WIM",30,30,250,30) GUICtrlCreateLabel("WIM File",30,60,250,30) $iInput[0]=GUICtrlCreateInput("",200,60,700,30) $iButton[0]=GUICtrlCreateButton("Browse...",920,60,100,30) GUICtrlCreateLabel("Mount Path",30,95,250,30) $iInput[1]=GUICtrlCreateInput("",200,95,700,30) $iButton[1]=GUICtrlCreateButton("Browse...",920,95,100,30) GUICtrlCreateLabel("Index",30,130,250,30) $iInput[2]=GUICtrlCreateInput("1",200,130,100,30) $iInput2[0]=GUICtrlCreateUpdown($iInput[2],$UDS_ARROWKEYS) GUICtrlSetLimit($iInput2[0],3,1) $iCheckbox[0]=GUICtrlCreateCheckbox("Readonly",30,160,120,30) $iButton[2]=GUICtrlCreateButton("Execute",300,190,160,30) $iButton[3]=GUICtrlCreateButton("Cancel",550,190,190,30) $iButton[4]=GUICtrlCreateButton("Return to Main Menu",415,230,250,30) GUISetState(@SW_SHOW) ; Loop until the user exits. GUISetAccelerators($aAccelKeys) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE $Cancel=1 $OK=0 $MenuSet=21;Mount WIM MenuErr() Case $iButton[0] $iInput[0]=FileOpenDialog("Browse for Image File","","WIM (*.wim)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) GUICtrlSetData($iInput[0],$hInput[0]) Case $iButton[1] $iInput[1]=FileSelectFolder("Browse for Mount Path","") GUICtrlSetData($iInput[1],$hInput[1]) Case $iButton[2];Mount WIM $Cancel=0 $OK=1 $dInput[0]=GUICtrlRead($iInput[0]);WIM File $dInput[1]=GUICtrlRead($iInput[1]);Mount Path $dInput[2]=GUICtrlRead($iInput[2]);Index If $dInput[0]="" Then MsgBox(0,"Error!","Enter the source WIM file and path!") ElseIf $dInput[1]="" Then MsgBox(0,"Error!","Enter the mount path!") EndIf If $iCheckbox[0]=$GUI_CHECKED Then $dCheckbox[0]=1;Read Only ElseIf $iCheckbox[0]=$GUI_UNCHECKED Then $dCheckbox[0]=0 EndIf Case $iButton[2] $Cancel=1 $OK=0 $MenuSet=21;Mount WIM MenuErr() Case $iButton[3] GUIDelete($hGUI) Menu() EndSwitch WEnd ; Delete the previous GUI and all controls. GUIDelete($hGUI) EndFunc Func Remount_WIM() Local $hGUI,$idMsg,$iButton[5],$iInput[3],$dInput[3],$iInput2[1],$hInput[3] Local $Temp Local $iCheckbox[1],$dCheckbox[1] Local $aAccelKeys[3][2]=[["{ENTER}",$iButton[1]],["{ESC}",$iButton[2]],["{F12}",$iButton[3]]] $hGUI=GUICreate("DISM GUI",1065,180,-1,-1,-1,$WS_EX_ACCEPTFILES) ;GUICreate("DISM GUI",1065,800) ; will create a dialog box that when displayed is centered GUISetBkColor(0x80FFFF) GUISetFont(16,400) GUICtrlCreateLabel("DISM GUI",474,10,250,20) GUICtrlCreateLabel("Remount WIM",30,30,250,30) GUICtrlCreateLabel("Mount Path",30,60,250,30) $iInput[0]=GUICtrlCreateInput("",200,60,700,30) $iButton[0]=GUICtrlCreateButton("Browse...",920,60,100,30) $iButton[1]=GUICtrlCreateButton("Execute",300,95,160,30) $iButton[2]=GUICtrlCreateButton("Cancel",550,95,190,30) $iButton[3]=GUICtrlCreateButton("Return to Main Menu",415,130,250,30) GUISetState(@SW_SHOW) ; Loop until the user exits. GUISetAccelerators($aAccelKeys) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE $Cancel=1 $OK=0 $MenuSet=22;Remount WIM MenuErr() Case $iButton[0] $iInput[0]=FileSelectFolder("Browse for Mount Path","") GUICtrlSetData($iInput[0],$hInput[0]) Case $iButton[1];Remount WIM $Cancel=0 $OK=1 $dInput[0]=GUICtrlRead($iInput[0]);Mount Path If $dInput[0]="" Then MsgBox(0,"Error!","Enter the mount path!") EndIf Case $iButton[2] $Cancel=1 $OK=0 $MenuSet=22;Remount WIM MenuErr() Case $iButton[3] GUIDelete($hGUI) Menu() EndSwitch WEnd ; Delete the previous GUI and all controls. GUIDelete($hGUI) EndFunc Func Cleanup_WIM() Local $hGUI,$idMsg,$iButton[3] Local $Temp Local $aAccelKeys[3][2]=[["{ENTER}",$iButton[0]],["{ESC}",$iButton[1]],["{F12}",$iButton[2]]] $hGUI=GUICreate("DISM GUI",625,100,-1,-1,-1,$WS_EX_ACCEPTFILES) ;GUICreate("DISM GUI",1065,800) ; will create a dialog box that when displayed is centered GUISetBkColor(0x80FFFF) GUISetFont(16,400) GUICtrlCreateLabel("DISM GUI",274,10,250,20) GUICtrlCreateLabel("Cleanup WIM",30,30,250,30) $iButton[0]=GUICtrlCreateButton("Cleanup",300,30,100,30) $iButton[1]=GUICtrlCreateButton("Cancel",150,60,190,30) $iButton[2]=GUICtrlCreateButton("Return to Main Menu",350,60,250,30) GUISetState(@SW_SHOW) ; Loop until the user exits. GUISetAccelerators($aAccelKeys) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE $Cancel=1 $OK=0 $MenuSet=23;Cleanup WIM MenuErr() Case $iButton[0];Cleanup WIM $Cancel=0 $OK=1 GUIDelete($hGUI) ExitLoop Case $iButton[1] $Cancel=1 $OK=0 $MenuSet=23;Cleanup WIM MenuErr() Case $iButton[2] GUIDelete($hGUI) Menu() EndSwitch WEnd EndFunc Func MenuErr() If $Cancel=0 Then Return EndIf $ErrorMessage=MsgBox(4+16,"Cancel","Do you want to cancel?") If $MenuSet=1 Then If $ErrorMessage=6 Then Exit Else $Error=0 $ErrorMessage=0 GUIDelete() Split_Image() EndIf ElseIf $MenuSet=2 Then If $ErrorMessage=6 Then Exit Else $Error=0 $ErrorMessage=0 GUIDelete() Apply_Image() EndIf ElseIf $MenuSet=3 Then If $ErrorMessage=6 Then Exit Else $Error=0 $ErrorMessage=0 GUIDelete() Mounted_Image_Info() EndIf ElseIf $MenuSet=4 Then If $ErrorMessage=6 Then Exit Else $Error=0 $ErrorMessage=0 GUIDelete() Image_Info() EndIf ElseIf $MenuSet=5 Then If $ErrorMessage=6 Then Exit Else $Error=0 $ErrorMessage=0 GUIDelete() Unmount_Image() EndIf ElseIf $MenuSet=6 Then If $ErrorMessage=6 Then Exit Else $Error=0 $ErrorMessage=0 GUIDelete() Mount_Image() EndIf ElseIf $MenuSet=7 Then If $ErrorMessage=6 Then Exit Else $Error=0 $ErrorMessage=0 GUIDelete() Remount_Image() EndIf ElseIf $MenuSet=8 Then If $ErrorMessage=6 Then Exit Else $Error=0 $ErrorMessage=0 GUIDelete() Cleanup_Mountpoints() EndIf ElseIf $MenuSet=9 Then If $ErrorMessage=6 Then Exit Else $Error=0 $ErrorMessage=0 GUIDelete() Apply_Custom_WIM_Data_Image() EndIf ElseIf $MenuSet=10 Then If $ErrorMessage=6 Then Exit Else $Error=0 $ErrorMessage=0 GUIDelete() Capture_Custom_WIM_Image() EndIf ElseIf $MenuSet=11 Then If $ErrorMessage=6 Then Exit Else $Error=0 $ErrorMessage=0 GUIDelete() Get_WIM_Boot_Entry() EndIf ElseIf $MenuSet=12 Then If $ErrorMessage=6 Then Exit Else $Error=0 $ErrorMessage=0 GUIDelete() Update_WIM_Boot_Entry() EndIf ElseIf $MenuSet=13 Then If $ErrorMessage=6 Then Exit Else $Error=0 $ErrorMessage=0 GUIDelete() List_WIM_Image() EndIf ElseIf $MenuSet=14 Then If $ErrorMessage=6 Then Exit Else $Error=0 $ErrorMessage=0 GUIDelete() Delete_WIM_Image() EndIf ElseIf $MenuSet=15 Then If $ErrorMessage=6 Then Exit Else $Error=0 $ErrorMessage=0 GUIDelete() Export_WIM_Image() EndIf ElseIf $MenuSet=16 Then If $ErrorMessage=6 Then Exit Else $Error=0 $ErrorMessage=0 GUIDelete() Append_WIM_Image() EndIf ElseIf $MenuSet=17 Then If $ErrorMessage=6 Then Exit Else $Error=0 $ErrorMessage=0 GUIDelete() Capture_WIM_Image() EndIf ElseIf $MenuSet=18 Then If $ErrorMessage=6 Then Exit Else $Error=0 $ErrorMessage=0 GUIDelete() Get_Mounted_WIM_Info() EndIf ElseIf $MenuSet=19 Then If $ErrorMessage=6 Then Exit Else $Error=0 $ErrorMessage=0 GUIDelete() Get_WIM_Info() EndIf ElseIf $MenuSet=20 Then If $ErrorMessage=6 Then Exit Else $Error=0 $ErrorMessage=0 GUIDelete() Unmount_WIM() EndIf ElseIf $MenuSet=21 Then If $ErrorMessage=6 Then Exit Else $Error=0 $ErrorMessage=0 GUIDelete() Mount_WIM() EndIf ElseIf $MenuSet=22 Then If $ErrorMessage=6 Then Exit Else $Error=0 $ErrorMessage=0 GUIDelete() Remount_WIM() EndIf ElseIf $MenuSet=23 Then If $ErrorMessage=6 Then Exit Else $Error=0 $ErrorMessage=0 GUIDelete() Cleanup_WIM() EndIf ElseIf $MenuSet=24 Then If $ErrorMessage=6 Then Exit Else $Error=0 $ErrorMessage=0 GUIDelete() Menu() EndIf EndIf EndFunc Func OKPressed() $idMsg=$OKButton EndFunc Func ESCPressed() $idMsg=$CancelButton EndFunc Func _IsChecked($idControlID) Return BitAND(GUICtrlRead($idControlID),$GUI_CHECKED)=$GUI_CHECKED EndFunc ;==>_IsChecked