#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 $wimfile Global $targetpath Global $percent=0 Global $value=0 Global $Title="Bogus" Global $pDISM Global $Dism_Cmds[24][15]=[["/Split-Image","/ImageFile:","/SWMFile:","FileSize:","/CheckIntegrity"],["/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 $dInput[46],$dButton[55],$dCheckbox[35],$dDriveCombo[28],$dInclude[1],$dCombo[2],$aArray,$Temp Menu() Func Menu() Local $hGUI,$idMsg,$hTab,$aTab[23],$iInput[46],$iCheckbox[35],$iCombo[2],$Temp,$iDriveCombo[28],$iInput2[10] Local $iButton0,$iButton1,$iButton2,$iButton3,$iButton4,$iButton5,$iButton6,$iButton7,$iButton8,$iButton9,$iButton10,$iButton11,$iButton12,$iButton13,$iButton14,$iButton15,$iButton16,$iButton17,$iButton18,$iButton19,$iButton20,$iButton21,$iButton22,$iButton23,$iButton24,$iButton25,$iButton26,$iButton27,$iButton28,$iButton29,$iButton30,$iButton31,$iButton32,$iButton33,$iButton34,$iButton35,$iButton36,$iButton37,$iButton38,$iButton39,$iButton40,$iButton41,$iButton42,$iButton43,$iButton44,$iButton45,$iButton46,$iButton47,$iButton48,$iButton49,$iButton50,$iButton51,$iButton52,$iButton53,$iButton54 $hGUI=GUICreate("DISM GUI",1065,800,-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) $hTab=GUICtrlCreateTab(10,50,1050,730,BitOR($TCS_MULTILINE,$TCS_BUTTONS));$TCS_TABS $aTab[0]=GUICtrlCreateTabItem("Split Image") GUICtrlCreateLabel("Split Image",30,230,250,30) GUICtrlCreateLabel("Image File Path",30,260,250,30) $iInput[0]=GUICtrlCreateInput("",200,260,700,30) $iButton0=GUICtrlCreateButton("Browse...",920,260,100,30) GUICtrlCreateLabel("SWM File Path",30,295,250,30) $iInput[1]=GUICtrlCreateInput("",200,295,700,30) $iButton1=GUICtrlCreateButton("Browse...",920,295,100,30) GUICtrlCreateLabel("File Size",30,330,250,30) $iInput[2]=GUICtrlCreateInput("1",200,330,100,30) $iInput2[0]=GUICtrlCreateUpdown($iInput[2],$UDS_ARROWKEYS) GUICtrlSetLimit($iInput2[0],999,1) $iCheckbox[0]=GUICtrlCreateCheckbox("Check Integrity",30,360,160,30) $iButton2=GUICtrlCreateButton("Execute",444,390,160,30) $aTab[1]=GUICtrlCreateTabItem("Apply Image") GUICtrlCreateLabel("Apply Image",30,230,250,30) GUICtrlCreateLabel("Image File Path",30,260,250,30) $iInput[3]=GUICtrlCreateInput("",200,260,700,30) $iButton3=GUICtrlCreateButton("Browse...",920,260,100,30) GUICtrlCreateLabel("Target Drive",30,295,250,30) $aArray=DriveGetDrive($DT_FIXED) If @error Then ; An error occurred when retrieving the drives. MsgBox($MB_SYSTEMMODAL, "", "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,295,100,30) GUICtrlSetData($iDriveCombo[0],$Temp,$aArray[1]) GUICtrlCreateLabel("Image Index",30,330,250,30) $iInput[4]=GUICtrlCreateInput("1",200,330,100,30) $iInput2[1]=GUICtrlCreateUpdown($iInput[4],$UDS_ARROWKEYS) GUICtrlSetLimit($iInput2[1],999,1) $iCheckbox[1]=GUICtrlCreateCheckbox("Check Integrity",30,360,160,30) $iCheckbox[2]=GUICtrlCreateCheckbox("Verify",200,360,100,30) $iCheckbox[3]=GUICtrlCreateCheckbox("NoRpFix",300,360,110,30) GUICtrlCreateLabel("Split Image File Path",30,390,250,30) $iInput[5]=GUICtrlCreateInput("",230,390,680,30) $iButton4=GUICtrlCreateButton("Browse...",920,390,100,30) $iCheckbox[4]=GUICtrlCreateCheckbox("Confirm Trusted File",420,360,220,30) $iCheckbox[5]=GUICtrlCreateCheckbox("WIM Boot",640,360,130,30) $iCheckbox[6]=GUICtrlCreateCheckbox("Compact",770,360,230,30) $iButton5=GUICtrlCreateButton("Execute",444,430,160,30) $aTab[2]=GUICtrlCreateTabItem("Mounted Image Info") GUICtrlCreateLabel("Mounted Image Info",30,230,250,30) $iButton6=GUICtrlCreateButton("Get Info",300,230,100,30) $aTab[3]=GUICtrlCreateTabItem("Image Info") GUICtrlCreateLabel("Image Info",30,230,250,30) GUICtrlCreateLabel("Image File Path",30,260,250,30) $iInput[6]=GUICtrlCreateInput("",200,260,700,30) $iButton7=GUICtrlCreateButton("Browse...",920,260,100,30) GUICtrlCreateLabel("Image Index",30,300,250,30) $iInput[7]=GUICtrlCreateInput("1",200,300,100,30) $iInput2[2]=GUICtrlCreateUpdown($iInput[7],$UDS_ARROWKEYS) GUICtrlSetLimit($iInput2[2],99,1) GUICtrlCreateLabel("0 Means All Images",30,330,250,30) $iButton8=GUICtrlCreateButton("Execute",444,360,160,30) $aTab[4]=GUICtrlCreateTabItem("Unmount Image") GUICtrlCreateLabel("Unmount Image",30,230,250,30) GUICtrlCreateLabel("Target Mount Path",30,260,250,30) $iInput[8]=GUICtrlCreateInput("",210,260,700,30) $iButton9=GUICtrlCreateButton("Browse...",920,260,100,30) $iCheckbox[7]=GUICtrlCreateCheckbox("Discard",30,290,100,30) $iCheckbox[8]=GUICtrlCreateCheckbox("Commit",140,290,100,30) $iCheckbox[9]=GUICtrlCreateCheckbox("Append",240,290,100,30) $iCheckbox[10]=GUICtrlCreateCheckbox("Check Integrity",340,290,230,30) $iButton10=GUICtrlCreateButton("Execute",444,330,160,30) $aTab[5]=GUICtrlCreateTabItem("Mount Image") GUICtrlCreateLabel("Mount Image",30,230,250,30) GUICtrlCreateLabel("Image File Path",30,260,250,30) $iInput[9]=GUICtrlCreateInput("",200,260,700,30) $iButton11=GUICtrlCreateButton("Browse...",920,260,100,30) GUICtrlCreateLabel("Target Mount Path",30,295,250,30) $iInput[10]=GUICtrlCreateInput("",210,295,690,30) $iButton12=GUICtrlCreateButton("Browse...",920,295,100,30) GUICtrlCreateLabel("Image Index",30,330,250,30) $iInput[11]=GUICtrlCreateInput("1",200,330,100,30) $iInput2[3]=GUICtrlCreateUpdown($iInput[11],$UDS_ARROWKEYS) GUICtrlSetLimit($iInput2[3],999,1) $iCheckbox[11]=GUICtrlCreateCheckbox("Check Integrity",30,360,160,30) $iCheckbox[12]=GUICtrlCreateCheckbox("Read Only",200,360,160,30) $iCheckbox[13]=GUICtrlCreateCheckbox("Optimize",330,360,160,30) $iButton13=GUICtrlCreateButton("Execute",444,390,160,30) $aTab[6]=GUICtrlCreateTabItem("Remount Image") GUICtrlCreateLabel("Remount Image",30,230,250,30) GUICtrlCreateLabel("Target Mount Path",30,260,250,30) $iInput[12]=GUICtrlCreateInput("",210,260,690,30) $iButton14=GUICtrlCreateButton("Browse...",920,260,100,30) $iButton15=GUICtrlCreateButton("Execute",444,300,160,30) $aTab[7]=GUICtrlCreateTabItem("Cleanup Mountpoints") GUICtrlCreateLabel("Cleanup Mountpoints",30,230,290,30) $iButton16=GUICtrlCreateButton("Cleanup Mountpoints",300,230,230,30) $aTab[8]=GUICtrlCreateTabItem("Apply Custom WIM Data Image") GUICtrlCreateLabel("Apply Custom WIM Data Image",30,230,350,30) GUICtrlCreateLabel("Image File Path",30,260,250,30) $iInput[13]=GUICtrlCreateInput("",200,260,700,30) $iButton17=GUICtrlCreateButton("Browse...",920,260,100,30) GUICtrlCreateLabel("Target File Path",30,295,250,30) $iInput[14]=GUICtrlCreateInput("",200,295,700,30) $iButton18=GUICtrlCreateButton("Browse...",920,295,100,30) $iCheckbox[14]=GUICtrlCreateCheckbox("Single Instance",30,330,170,30) $iButton19=GUICtrlCreateButton("Execute",444,360,160,30) $aTab[9]=GUICtrlCreateTabItem("Custom Capture WIM Image") GUICtrlCreateLabel("Custom Capture WIM Image",30,230,300,30) GUICtrlCreateLabel("Capture Path",30,260,250,30) $iInput[15]=GUICtrlCreateInput("",200,260,700,30) $iButton20=GUICtrlCreateButton("Browse...",920,260,100,30) GUICtrlCreateLabel("Config File Path",30,295,250,30) $iInput[16]=GUICtrlCreateInput("",200,295,700,30) $iButton21=GUICtrlCreateButton("Browse...",920,295,100,30) $iCheckbox[15]=GUICtrlCreateCheckbox("Check Integrity",30,330,160,30) $iCheckbox[16]=GUICtrlCreateCheckbox("Verify",200,330,100,30) $iCheckbox[17]=GUICtrlCreateCheckbox("Confirm Trusted File",300,330,230,30) $iButton22=GUICtrlCreateButton("Execute",444,360,160,30) $aTab[10]=GUICtrlCreateTabItem("Get WIM Boot Entry") GUICtrlCreateLabel("Get WIM Boot Entry",30,230,300,30) GUICtrlCreateLabel("Volume Path",30,260,250,30) $iDriveCombo[1]=GUICtrlCreateCombo(StringUpper($aArray[1]),200,260,100,30) GUICtrlSetData($iDriveCombo[1],$Temp,$aArray[1]) $iButton24=GUICtrlCreateButton("Execute",444,300,160,30) $aTab[11]=GUICtrlCreateTabItem("Update WIM Boot Entry") GUICtrlCreateLabel("Update WIM Boot Entry",30,230,300,30) GUICtrlCreateLabel("Volume Path",30,260,250,30) $iDriveCombo[2]=GUICtrlCreateCombo(StringUpper($aArray[1]),200,260,100,30) GUICtrlSetData($iDriveCombo[2],$Temp,$aArray[1]) GUICtrlCreateLabel("Data Source ID",30,295,250,30) $iInput[17]=GUICtrlCreateInput("1",200,295,100,30) $iInput2[4]=GUICtrlCreateUpdown($iInput[17],$UDS_ARROWKEYS) GUICtrlSetLimit($iInput2[4],99,1) GUICtrlCreateLabel("Image File Path",30,330,250,30) $iInput[18]=GUICtrlCreateInput("",200,330,700,30) $iButton26=GUICtrlCreateButton("Browse...",920,340,100,30) $iButton27=GUICtrlCreateButton("Execute",444,370,160,30) $aTab[12]=GUICtrlCreateTabItem("List WIM Image") GUICtrlCreateLabel("List WIM Image",30,230,300,30) GUICtrlCreateLabel("Image File Path",30,260,250,30) $iInput[19]=GUICtrlCreateInput("",200,260,700,30) $iButton28=GUICtrlCreateButton("Browse...",920,260,100,30) GUICtrlCreateLabel("Index",30,295,250,30) $iInput[20]=GUICtrlCreateInput("1",200,295,100,30) $iInput2[5]=GUICtrlCreateUpdown($iInput[20],$UDS_ARROWKEYS) GUICtrlSetLimit($iInput2[5],99,1) $iButton29=GUICtrlCreateButton("Execute",444,340,160,30) $aTab[13]=GUICtrlCreateTabItem("Delete WIM Image") GUICtrlCreateLabel("Delete WIM Image",30,230,300,30) GUICtrlCreateLabel("Image File Path",30,260,250,30) $iInput[21]=GUICtrlCreateInput("",200,260,700,30) $iButton30=GUICtrlCreateButton("Browse...",920,260,100,30) GUICtrlCreateLabel("Index",30,295,250,30) $iInput[22]=GUICtrlCreateInput("1",200,295,100,30) $iInput2[6]=GUICtrlCreateUpdown($iInput[22],$UDS_ARROWKEYS) GUICtrlSetLimit($iInput2[6],99,1) $iCheckbox[18]=GUICtrlCreateCheckbox("Check Integrity",30,330,230,30) $iButton31=GUICtrlCreateButton("Execute",444,360,160,30) $aTab[14]=GUICtrlCreateTabItem("Export WIM Image") GUICtrlCreateLabel("Export WIM Image",30,230,300,30) GUICtrlCreateLabel("Source Image File Path",30,260,350,30) $iInput[23]=GUICtrlCreateInput("",290,260,590,30) $iButton32=GUICtrlCreateButton("Browse...",920,260,100,30) GUICtrlCreateLabel("Split Image File Path",30,295,350,30) $iInput[24]=GUICtrlCreateInput("",290,295,590,30) $iButton33=GUICtrlCreateButton("Browse...",920,295,100,30) GUICtrlCreateLabel("Source Index",30,330,250,30) $iInput[25]=GUICtrlCreateInput("1",200,330,100,30) $iInput2[7]=GUICtrlCreateUpdown($iInput[25],$UDS_ARROWKEYS) GUICtrlSetLimit($iInput2[7],99,1) GUICtrlCreateLabel("Destination Image File Path",30,360,350,30) $iInput[26]=GUICtrlCreateInput("",290,360,590,30) $iButton34=GUICtrlCreateButton("Browse...",920,360,100,30) GUICtrlCreateLabel("Destination Name",30,395,350,30) $iInput[27]=GUICtrlCreateInput("",290,395,590,30) GUICtrlCreateLabel("Compress",30,430,250,30) $iCombo[0]=GUICtrlCreateCombo("Maximum",200,430,250,30) GUICtrlSetData($iCombo[0],"Fast|None|Recovery","Maximum") $iCheckbox[19]=GUICtrlCreateCheckbox("Bootable",30,470,110,30) $iCheckbox[20]=GUICtrlCreateCheckbox("WIM Boot",150,470,160,30) $iCheckbox[21]=GUICtrlCreateCheckbox("Check Integrity",280,470,230,30) $iButton35=GUICtrlCreateButton("Execute",444,500,160,30) $aTab[15]=GUICtrlCreateTabItem("Append WIM Image") GUICtrlCreateLabel("Append WIM Image",30,230,300,30) GUICtrlCreateLabel("Image File Path",30,260,150,30) $iInput[28]=GUICtrlCreateInput("",200,260,680,30) $iButton36=GUICtrlCreateButton("Browse...",890,260,100,30) GUICtrlCreateLabel("Source Path",30,295,350,30) $iInput[29]=GUICtrlCreateInput("",200,295,680,30) $iButton37=GUICtrlCreateButton("Browse...",890,295,100,30) GUICtrlCreateLabel("Name",30,330,350,30) $iInput[30]=GUICtrlCreateInput("",200,330,680,30) GUICtrlCreateLabel("Description",30,365,350,30) $iInput[31]=GUICtrlCreateInput("",200,365,680,30) GUICtrlCreateLabel("Configuration File",30,400,350,30) $iInput[32]=GUICtrlCreateInput("",200,400,680,30) $iButton38=GUICtrlCreateButton("Browse...",890,400,100,30) $iCheckbox[22]=GUICtrlCreateCheckbox("Bootable",30,440,110,30) $iCheckbox[23]=GUICtrlCreateCheckbox("WIM Boot",150,440,120,30) $iCheckbox[24]=GUICtrlCreateCheckbox("Check Integrity",280,440,160,30) $iCheckbox[25]=GUICtrlCreateCheckbox("Verify",450,440,100,30) $iCheckbox[26]=GUICtrlCreateCheckbox("No Reparse Point Fix",550,440,230,30) $iButton39=GUICtrlCreateButton("Execute",444,470,160,30) $aTab[16]=GUICtrlCreateTabItem("Capture WIM Image") GUICtrlCreateLabel("Capture WIM Image",30,230,300,30) GUICtrlCreateLabel("Image File Path",30,260,150,30) $iInput[33]=GUICtrlCreateInput("",200,260,680,30) $iButton40=GUICtrlCreateButton("Browse...",890,260,100,30) GUICtrlCreateLabel("Source Path",30,295,350,30) $iInput[34]=GUICtrlCreateInput("",200,295,680,30) $iButton41=GUICtrlCreateButton("Browse...",890,295,100,30) GUICtrlCreateLabel("Name",30,330,350,30) $iInput[35]=GUICtrlCreateInput("",200,330,680,30) GUICtrlCreateLabel("Description",30,365,350,30) $iInput[36]=GUICtrlCreateInput("",200,365,680,30) GUICtrlCreateLabel("Configuration File",30,400,350,30) $iInput[37]=GUICtrlCreateInput("",200,400,680,30) $iButton42=GUICtrlCreateButton("Browse...",890,400,100,30) GUICtrlCreateLabel("Compress",30,440,250,30) $iCombo[1]=GUICtrlCreateCombo("Maximum",200,440,250,30) GUICtrlSetData($iCombo[1],"Fast|None|Recovery","Maximum") $iCheckbox[27]=GUICtrlCreateCheckbox("Bootable",30,480,110,30) $iCheckbox[28]=GUICtrlCreateCheckbox("WIM Boot",150,480,120,30) $iCheckbox[29]=GUICtrlCreateCheckbox("Check Integrity",280,480,160,30) $iCheckbox[30]=GUICtrlCreateCheckbox("Verify",450,480,100,30) $iCheckbox[31]=GUICtrlCreateCheckbox("No Reparse Point Fix",550,480,230,30) $iButton43=GUICtrlCreateButton("Execute",444,510,160,30) $aTab[17]=GUICtrlCreateTabItem("Get Mounted WIM Info") GUICtrlCreateLabel("Get Mounted Wim Info",30,230,250,30) $iButton44=GUICtrlCreateButton("Get Info",300,230,100,30) $aTab[18]=GUICtrlCreateTabItem("Get WIM Info") GUICtrlCreateLabel("Get WIM Info",30,230,250,30) GUICtrlCreateLabel("WIM File",30,260,250,30) $iInput[38]=GUICtrlCreateInput("",200,260,700,30) $iButton45=GUICtrlCreateButton("Browse...",920,260,100,30) GUICtrlCreateLabel("Index",30,295,250,30) $iInput[39]=GUICtrlCreateInput("1",200,295,100,30) $iInput2[8]=GUICtrlCreateUpdown($iInput[39],$UDS_ARROWKEYS) GUICtrlSetLimit($iInput2[8],999,1) $iButton46=GUICtrlCreateButton("Execute",444,330,160,30) $aTab[19]=GUICtrlCreateTabItem("Unmount WIM") GUICtrlCreateLabel("Unmount WIM",30,230,250,30) GUICtrlCreateLabel("Mount Path",30,260,250,30) $iInput[40]=GUICtrlCreateInput("",200,260,700,30) $iButton47=GUICtrlCreateButton("Browse...",920,260,100,30) $iCheckbox[32]=GUICtrlCreateCheckbox("Commit",30,290,100,30) $iCheckbox[33]=GUICtrlCreateCheckbox("Discard",150,290,100,30) $iButton48=GUICtrlCreateButton("Execute",444,320,160,30) $aTab[20]=GUICtrlCreateTabItem("Mount WIM") GUICtrlCreateLabel("Mount WIM",30,230,250,30) GUICtrlCreateLabel("WIM File",30,260,250,30) $iInput[41]=GUICtrlCreateInput("",200,260,700,30) $iButton49=GUICtrlCreateButton("Browse...",920,260,100,30) GUICtrlCreateLabel("Mount Path",30,295,250,30) $iInput[42]=GUICtrlCreateInput("",200,295,700,30) $iButton50=GUICtrlCreateButton("Browse...",920,295,100,30) GUICtrlCreateLabel("Index",30,330,250,30) $iInput[43]=GUICtrlCreateInput("1",200,330,100,30) $iInput2[9]=GUICtrlCreateUpdown($iInput[43],$UDS_ARROWKEYS) GUICtrlSetLimit($iInput2[9],3,1) $iCheckbox[34]=GUICtrlCreateCheckbox("Readonly",30,360,120,30) $iButton51=GUICtrlCreateButton("Execute",444,390,160,30) $aTab[21]=GUICtrlCreateTabItem("Remount WIM") GUICtrlCreateLabel("Remount WIM",30,230,250,30) GUICtrlCreateLabel("Mount Path",30,260,250,30) $iInput[44]=GUICtrlCreateInput("",200,260,700,30) $iButton52=GUICtrlCreateButton("Browse...",920,260,100,30) $iButton53=GUICtrlCreateButton("Execute",444,300,160,30) $aTab[22]=GUICtrlCreateTabItem("Cleanup WIM") GUICtrlCreateLabel("Cleanup WIM",30,230,250,30) $iButton54=GUICtrlCreateButton("Cleanup",300,230,100,30) GUICtrlCreateTabItem("") ; end tabitem definition GUICtrlSetState($aTab[0],$GUI_SHOW) GUISetState(@SW_SHOW) ; Loop until the user exits. While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop Case $iButton2;Split Image $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(0,"Error!","Enter a WIM file and path!") ElseIf $iInput[1]="" Then MsgBox(0,"Error!","Enter a SWM 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 $Temp=$Dism_Cmds[0][0]&" "&$Dism_Cmds[0][1]&Chr(34)&$dInput[0]&Chr(34)&" "&$Dism_Cmds[0][2]&Chr(34)&$dInput[1]&Chr(34)&" "&$Dism_Cmds[0][3]&$dInput[2] If $dCheckbox[0]=1 Then $Temp=$Temp&" "&$Dism_Cmds[0][3] EndIf MsgBox(0,"",$Temp) ExitLoop Case $iButton0;Browse $iInput[0]=FileOpenDialog("Browse for Image File","","WIM or ESD (*.wim|*.esd)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) Case $iButton1;Browse $iInput[1]=FileOpenDialog("Browse for Image File","","SWM (*.swm)",$FD_PROMPTCREATENEW) Case $iButton3 $iInput[3]=FileOpenDialog("Browse for Image File","","WIM or ESD (*.wim|*.esd)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) Case $iButton4 $iInput[5]=FileOpenDialog("Browse for Split Images","","SWM (*.wim)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) Case $iButton5;Apply Image $dInput[3]=GUICtrlRead($iInput[3]);Image File Path $dInput[4]=GUICtrlRead($iInput[4]);Index $dInput[5]=GUICtrlRead($iInput[5]);Split Image File Path $dDriveCombo[0]=GUICtrlRead($iDriveCombo[0]);Target Drive If $dInput[3]="" Then MsgBox(0,"Error!","Enter a WIM or ESD file and path!") ElseIf $dInput[4]<1 Then MsgBox(0,"Error!","Enter an index number!") EndIf If $dInput[5]<>"" Then $dInclude[0]=1 EndIf If $iCheckbox[1]=$GUI_CHECKED Then $dCheckbox[1]=1;Check Integrity ElseIf $iCheckbox[1]=$GUI_UNCHECKED Then $dCheckbox[1]=0 EndIf If $iCheckbox[2]=$GUI_CHECKED Then $dCheckbox[2]=1;Verify ElseIf $iCheckbox[2]=$GUI_UNCHECKED Then $dCheckbox[2]=0 EndIf If $iCheckbox[3]=$GUI_CHECKED Then $dCheckbox[3]=1;NoRpFix ElseIf $iCheckbox[3]=$GUI_UNCHECKED Then $dCheckbox[3]=0 EndIf If $iCheckbox[4]=$GUI_CHECKED Then $dCheckbox[4]=1;Confirm Trusted File ElseIf $iCheckbox[4]=$GUI_UNCHECKED Then $dCheckbox[4]=0 EndIf If $iCheckbox[5]=$GUI_CHECKED Then $dCheckbox[5]=1;WIM Boot ElseIf $iCheckbox[5]=$GUI_UNCHECKED Then $dCheckbox[5]=0 EndIf If $iCheckbox[6]=$GUI_CHECKED Then $dCheckbox[6]=1;Compact ElseIf $iCheckbox[6]=$GUI_UNCHECKED Then $dCheckbox[6]=0 EndIf Case $iButton7 $iInput[6]=FileOpenDialog("Browse for Image File","","WIM or ESD (*.wim|*.esd)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) Case $iButton6;Mounted Image Info Sleep(10000) Case $iButton8;Image Info $dInput[6]=GUICtrlRead($iInput[6]);Image File Path $dInput[7]=GUICtrlRead($iInput[7]);Index If $dInput[6]="" Then MsgBox(0,"Error!","Enter a WIM or ESD file and path!") EndIf Case $iButton10;Unmount Image $dInput[8]=GUICtrlRead($iInput[8]);Target Mount Path If $dInput[8]="" Then MsgBox(0,"Error!","Enter a WIM or ESD file and path!") EndIf If $iCheckbox[7]=$GUI_CHECKED Then $dCheckbox[7]=1;Discard ElseIf $iCheckbox[7]=$GUI_UNCHECKED Then $dCheckbox[7]=0 EndIf If $iCheckbox[8]=$GUI_CHECKED Then $dCheckbox[8]=1;Commit ElseIf $iCheckbox[8]=$GUI_UNCHECKED Then $dCheckbox[8]=0 EndIf If $iCheckbox[9]=$GUI_CHECKED Then $dCheckbox[9]=1;Append ElseIf $iCheckbox[9]=$GUI_UNCHECKED Then $dCheckbox[9]=0 EndIf If $iCheckbox[10]=$GUI_CHECKED Then $dCheckbox[10]=1;Check Integrity ElseIf $iCheckbox[10]=$GUI_UNCHECKED Then $dCheckbox[10]=0 EndIf Case $iButton11 $iInput[9]=FileOpenDialog("Browse for Image File","","WIM or ESD (*.wim|*.esd)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) Case $iButton12 $iInput[10]=FileSelectFolder("Browse for Target Mount Path","") Case $iButton13;Mount Image $dInput[9]=GUICtrlRead($iInput[9]);Image File Path $dInput[10]=GUICtrlRead($iInput[10]);Target Mount Path $dInput[11]=GUICtrlRead($iInput[11]);Index If $dInput[9]="" Then MsgBox(0,"Error!","Enter a WIM or ESD file and path!") ElseIf $dInput[10]="" Then MsgBox(0,"Error!","Enter a Target Mount path!") EndIf If $iCheckbox[11]=$GUI_CHECKED Then $dCheckbox[11]=1;Check Integrity ElseIf $iCheckbox[11]=$GUI_UNCHECKED Then $dCheckbox[11]=0 EndIf If $iCheckbox[12]=$GUI_CHECKED Then $dCheckbox[12]=1;Read Only ElseIf $iCheckbox[12]=$GUI_UNCHECKED Then $dCheckbox[12]=0 EndIf If $iCheckbox[13]=$GUI_CHECKED Then $dCheckbox[13]=1;Optimize ElseIf $iCheckbox[13]=$GUI_UNCHECKED Then $dCheckbox[13]=0 EndIf Case $iButton14 $iInput[12]=FileSelectFolder("Browse for Target Mount Path","") Case $iButton15;Remount Image $dInput[12]=GUICtrlRead($iInput[12]);Target Mount Path If $dInput[12]="" Then MsgBox(0,"Error!","Enter a Target Mount path!") EndIf Case $iButton16;Cleanup Mountpoints Sleep(1000) Case $iButton17 $iInput[13]=FileOpenDialog("Browse for Image File","","WIM (*.wim)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) Case $iButton18 $iInput[14]=FileSelectFolder("Browse for Target Mount Path","") Case $iButton19;Apply Custom WIM Data Image $dInput[13]=GUICtrlRead($iInput[13]);Image File Path $dInput[14]=GUICtrlRead($iInput[14]);Target File Path If $dInput[13]="" Then MsgBox(0,"Error!","Enter a WIM file and path!") ElseIf $dInput[14]="" Then MsgBox(0,"Error!","Enter a Target Mount path!") EndIf If $iCheckbox[14]=$GUI_CHECKED Then $dCheckbox[14]=1;Single Instance ElseIf $iCheckbox[14]=$GUI_UNCHECKED Then $dCheckbox[14]=0 EndIf Case $iButton20 $iInput[15]=FileSelectFolder("Browse for Capture Path","") Case $iButton21 $iInput[16]=FileOpenDialog("Browse for Configuration File","","INI (*.ini)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) Case $iButton22;Apply Custom WIM Data Image $dInput[15]=GUICtrlRead($iInput[15]);Image File Path $dInput[16]=GUICtrlRead($iInput[16]);Config File Path If $dInput[15]="" Then MsgBox(0,"Error!","Enter a Capture path!") ElseIf $dInput[16]="" Then MsgBox(0,"Error!","Enter a Target Mount path!") EndIf If $iCheckbox[15]=$GUI_CHECKED Then $dCheckbox[15]=1;Check Integrity ElseIf $iCheckbox[15]=$GUI_UNCHECKED Then $dCheckbox[15]=0 EndIf If $iCheckbox[16]=$GUI_CHECKED Then $dCheckbox[16]=1;Verify ElseIf $iCheckbox[16]=$GUI_UNCHECKED Then $dCheckbox[16]=0 EndIf If $iCheckbox[17]=$GUI_CHECKED Then $dCheckbox[17]=1;Confirm Trusted File ElseIf $iCheckbox[17]=$GUI_UNCHECKED Then $dCheckbox[17]=0 EndIf Case $iButton24;Get WIM Boot Entry $dDriveCombo[1]=GUICtrlRead($iDriveCombo[1]);Volume Path Case $iButton26 $iInput[18]=FileOpenDialog("Browse for Image File","","WIM (*.wim)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) Case $iButton27;Update WIM Boot Entry $dDriveCombo[2]=GUICtrlRead($iDriveCombo[2]);Volume Path $dInput[17]=GUICtrlRead($iInput[17]);Data Source ID $dInput[18]=GUICtrlRead($iInput[18]);Image File Path If $dInput[18]="" Then MsgBox(0,"Error!","Enter a WIM file and path!") EndIf Case $iButton28 $iInput[19]=FileOpenDialog("Browse for Image File","","WIM (*.wim)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) Case $iButton29;List WIM Image $dInput[19]=GUICtrlRead($iInput[19]);Image File Path $dInput[20]=GUICtrlRead($iInput[20]);Index If $dInput[19]="" Then MsgBox(0,"Error!","Enter a WIM file and path!") EndIf Case $iButton30 $iInput[21]=FileOpenDialog("Browse for Image File","","WIM (*.wim)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) Case $iButton31;Delete WIM Image $dInput[21]=GUICtrlRead($iInput[23]);Image File Path $dInput[22]=GUICtrlRead($iInput[24]);Index If $dInput[21]="" Then MsgBox(0,"Error!","Enter a WIM file and path!") EndIf If $iCheckbox[18]=$GUI_CHECKED Then $dCheckbox[18]=1;Check Integrity ElseIf $iCheckbox[18]=$GUI_UNCHECKED Then $dCheckbox[18]=0 EndIf Case $iButton32 $iInput[23]=FileOpenDialog("Browse for Image File","","WIM (*.wim)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) Case $iButton34; $iInput[26]=FileOpenDialog("Browse for Image File","","WIM (*.wim)") Case $iButton33; $iInput[23]=FileOpenDialog("Browse for Split Image Files","","SWM (*.swm)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) Case $iButton35;Export WIM Image $dInput[23]=GUICtrlRead($iInput[23]);Source Image File Path $dInput[24]=GUICtrlRead($iInput[24]);Index $dInput[25]=GUICtrlRead($iInput[25]);Split Image File Path $dInput[26]=GUICtrlRead($iInput[26]);Destination Image File Path $dInput[27]=GUICtrlRead($iInput[27]);Destination Name $dCombo[0]=GUICtrlRead($iCombo[0]);Compress If $dInput[23]="" Then MsgBox(0,"Error!","Enter the source WIM file and path!") ElseIf $dInput[26]="" Then MsgBox(0,"Error!","Enter the destination WIM file and path!") EndIf If $iCheckbox[19]=$GUI_CHECKED Then $dCheckbox[19]=1;Bootable ElseIf $iCheckbox[19]=$GUI_UNCHECKED Then $dCheckbox[19]=0 EndIf If $iCheckbox[20]=$GUI_CHECKED Then $dCheckbox[20]=1;WIM Boot ElseIf $iCheckbox[20]=$GUI_UNCHECKED Then $dCheckbox[20]=0 EndIf If $iCheckbox[21]=$GUI_CHECKED Then $dCheckbox[21]=1;Check Integrity ElseIf $iCheckbox[21]=$GUI_UNCHECKED Then $dCheckbox[21]=0 EndIf Case $iButton36 $iInput[29]=FileSelectFolder("Browse for Source Path","") Case $iButton37 $iInput[28]=FileOpenDialog("Browse for Image File","","WIM (*.wim)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) Case $iButton38; $iInput[32]=FileOpenDialog("Browse for Configuration File","","INI (*.ini)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) Case $iButton39;Append WIM Image $dInput[28]=GUICtrlRead($iInput[28]);Image File Path $dInput[29]=GUICtrlRead($iInput[29]);Source Path $dInput[30]=GUICtrlRead($iInput[30]);Name $dInput[31]=GUICtrlRead($iInput[31]);Description $dInput[32]=GUICtrlRead($iInput[32]);Configuration File Path If $dInput[28]="" Then MsgBox(0,"Error!","Enter the source WIM file and path!") ElseIf $dInput[29]="" Then MsgBox(0,"Error!","Enter the Source path!") ElseIf $dInput[30]="" Then MsgBox(0,"Error!","Enter the Name!") EndIf If $iCheckbox[22]=$GUI_CHECKED Then $dCheckbox[22]=1;Bootable ElseIf $iCheckbox[22]=$GUI_UNCHECKED Then $dCheckbox[22]=0 EndIf If $iCheckbox[23]=$GUI_CHECKED Then $dCheckbox[23]=1;WIM Boot ElseIf $iCheckbox[23]=$GUI_UNCHECKED Then $dCheckbox[23]=0 EndIf If $iCheckbox[24]=$GUI_CHECKED Then $dCheckbox[24]=1;Check Integrity ElseIf $iCheckbox[24]=$GUI_UNCHECKED Then $dCheckbox[24]=0 EndIf If $iCheckbox[25]=$GUI_CHECKED Then $dCheckbox[25]=1;Verify ElseIf $iCheckbox[25]=$GUI_UNCHECKED Then $dCheckbox[25]=0 EndIf If $iCheckbox[26]=$GUI_CHECKED Then $dCheckbox[26]=1;NoRpFix ElseIf $iCheckbox[26]=$GUI_UNCHECKED Then $dCheckbox[26]=0 EndIf Case $iButton40 $iInput[33]=FileSelectFolder("Browse for Source Path","") Case $iButton41 $iInput[34]=FileOpenDialog("Browse for Image File","","WIM (*.wim)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) Case $iButton42; $iInput[37]=FileOpenDialog("Browse for Configuration File","","INI (*.ini)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) Case $iButton43;Capture WIM Image $dInput[33]=GUICtrlRead($iInput[33]);Image File Path $dInput[34]=GUICtrlRead($iInput[34]);Source Path $dInput[35]=GUICtrlRead($iInput[35]);Name $dInput[36]=GUICtrlRead($iInput[36]);Description $dInput[37]=GUICtrlRead($iInput[37]);Configuration File Path $dCombo[1]=GUICtrlRead($iCombo[1]);Compress If $dInput[28]="" Then MsgBox(0,"Error!","Enter the source WIM file and path!") ElseIf $dInput[29]="" Then MsgBox(0,"Error!","Enter the Source path!") ElseIf $dInput[35]="" Then MsgBox(0,"Error!","Enter the Name!") EndIf If $iCheckbox[27]=$GUI_CHECKED Then $dCheckbox[27]=1;Bootable ElseIf $iCheckbox[27]=$GUI_UNCHECKED Then $dCheckbox[27]=0 EndIf If $iCheckbox[28]=$GUI_CHECKED Then $dCheckbox[28]=1;WIM Boot ElseIf $iCheckbox[28]=$GUI_UNCHECKED Then $dCheckbox[28]=0 EndIf If $iCheckbox[29]=$GUI_CHECKED Then $dCheckbox[29]=1;Check Integrity ElseIf $iCheckbox[29]=$GUI_UNCHECKED Then $dCheckbox[29]=0 EndIf If $iCheckbox[30]=$GUI_CHECKED Then $dCheckbox[30]=1;Verify ElseIf $iCheckbox[30]=$GUI_UNCHECKED Then $dCheckbox[30]=0 EndIf If $iCheckbox[31]=$GUI_CHECKED Then $dCheckbox[31]=1;NoRpFix ElseIf $iCheckbox[31]=$GUI_UNCHECKED Then $dCheckbox[31]=0 EndIf Case $iButton44;Get Mounted WIM Info Sleep(1000) Case $iButton45 $iInput[38]=FileOpenDialog("Browse for Image File","","WIM (*.wim)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) Case $iButton46;Get WIM Info $dInput[38]=GUICtrlRead($iInput[38]);WIM File $dInput[39]=GUICtrlRead($iInput[39]);Index If $dInput[38]="" Then MsgBox(0,"Error!","Enter the source WIM file and path!") EndIf Case $iButton47 $iInput[40]=FileSelectFolder("Browse for Source Path","") Case $iButton48;Unmount WIM $dInput[40]=GUICtrlRead($iInput[40]);Mount Path If $dInput[40]="" Then MsgBox(0,"Error!","Enter the mount path!") EndIf If $iCheckbox[32]=$GUI_CHECKED Then $dCheckbox[32]=1;Commit ElseIf $iCheckbox[32]=$GUI_UNCHECKED Then $dCheckbox[32]=0 EndIf If $iCheckbox[33]=$GUI_CHECKED Then $dCheckbox[33]=1;Discard ElseIf $iCheckbox[33]=$GUI_UNCHECKED Then $dCheckbox[33]=0 EndIf Case $iButton49 $iInput[41]=FileOpenDialog("Browse for Image File","","WIM (*.wim)",BitOR($FD_FILEMUSTEXIST,$FD_PATHMUSTEXIST)) Case $iButton50 $iInput[42]=FileSelectFolder("Browse for Mount Path","") Case $iButton51;Mount WIM $dInput[41]=GUICtrlRead($iInput[41]);WIM File $dInput[42]=GUICtrlRead($iInput[42]);Mount Path $dInput[43]=GUICtrlRead($iInput[43]);Index If $dInput[41]="" Then MsgBox(0,"Error!","Enter the source WIM file and path!") ElseIf $dInput[42]="" Then MsgBox(0,"Error!","Enter the mount path!") EndIf If $iCheckbox[34]=$GUI_CHECKED Then $dCheckbox[34]=1;Read Only ElseIf $iCheckbox[34]=$GUI_UNCHECKED Then $dCheckbox[34]=0 EndIf Case $iButton52 $iInput[44]=FileSelectFolder("Browse for Mount Path","") Case $iButton53;Remount WIM $dInput[44]=GUICtrlRead($iInput[44]);WIM File $dInput[42]=GUICtrlRead($iInput[42]);Mount Path $dInput[43]=GUICtrlRead($iInput[43]);Index If $dInput[44]="" Then MsgBox(0,"Error!","Enter the mount path!") EndIf Case $iButton54;Cleanup WIM Sleep(1000) EndSwitch WEnd ; Delete the previous GUI and all controls. GUIDelete($hGUI) EndFunc Func DISM_ProgressBar() Local $line,$line1 $pDISM=Run(@ComSpec&" /c title "&$Title&"|"&'Dism.exe /mount-wim /wimfile:"'&$wimfile&'" /index:1 /mountdir:"'&$targetpath,"","",2+4) ProgressOn("Image Load","Deploying Image","0 percent") While ProcessExists($pDISM) $line=StdoutRead($pDISM,5) 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,"Deploying Image","Boot.wim"&$value&"%") $percent=$value EndIf If $value=100 Then ExitLoop WEnd ProgressOff() EndFunc