Jump to content

This site uses cookies. By continuing to browse the site you are agreeing to our use of cookies. Find out more here. X
X


Photo

Imagex Gui Vista Deployment tool Map/Capture/Apply


  • Please log in to reply
No replies to this topic

#1 joshiieeii

joshiieeii

    Adventurer

  • Active Members
  • PipPip
  • 137 posts

Posted 09 April 2007 - 09:52 PM

Imagex GUI

Intended for use within WinPE 2.0
Note: you have to have imagex.exe in the same folder.

Update 4-9-07:
  • Added Poll image function to display what images are available within a wim file.
  • Added Automatic Reboot functionality.
gimagex.ini
[CAPTURE] Source=C: Destination=MyWim.wim Compression=Fast Flags=Enterprise Config= Boot=0 Check=1 Name=My Vista Build Name Description=My Vista Build Description [APPLY] Source=M:\Vista.wim Destination=C: Verify=0 Name=1 [MAP] Letter=M: Share=\\networkshare\folder User=domain.com\TestUser


gimagex.exe
AutoIt         
#include <Constants.au3> #include <GUIConstants.au3> #include <Array.au3> #include <Process.au3> #include <String.au3> #include <GuiTreeView.au3> Dim $avDriveMapAdd[7] $avDriveMapAdd[0]   = "Unknown Error" $avDriveMapAdd[1]   = "Undefined / Other error" $avDriveMapAdd[2]   = "Access to the remote share was denied" $avDriveMapAdd[3]   = "The device is already assigned" $avDriveMapAdd[4]   = "Invalid device name" $avDriveMapAdd[5]   = "Invalid remote share" $avDriveMapAdd[6]   = "Invalid password" Dim $avPing [5] $avPing[0] = "Unknown Error" $avPing[1] = "Host is offline" $avPing[2] = "Host is unreachable" $avPing[3] = "Bad destination" $avPing[4] = "Other errors" ; Global Settings ; Dim $gCaptureSource Dim $gCaptureDestination Dim $gCaptureCompression Dim $gCaptureFlags Dim $gCaptureConfig Dim $gCaptureBoot Dim $gCaptureCheck Dim $gCaptureName Dim $gCaptureDescription Dim $gApplySource Dim $gApplyDestination Dim $gApplyVerify Dim $gApplyName Dim $imageinfo Dim $gMapLetter Dim $gMapUser Dim $gMapPassword Dim $gMapShare Dim $sIni = @ScriptDir & "\gimagex.ini" Dim $res ; ; Create the main GUI ; GUICreate("GImageX - ImageX GUI Wrapper", 640, 380, -1, -1 ) $hTab = GUICtrlCreateTab(10, 10, 620, 355) $BaseX = 20 $BaseY = 35 ; Drive Map Tab $hTab_0 = GUICtrlCreateTabItem(" Drive Map ") $CurX = $BaseX $CurY = $BaseY $CurY = $CurY + 10 GuiCtrlCreateGroup("Drive Mapping", $CurX+10, $CurY, 580, 135) $CurY = $CurY + 18 GUICtrlCreateLabel("Letter", $CurX+20, $CurY+3) $hMapLetter = GUICtrlCreateCombo("F:", $CurX+85, $CurY, 100, 500, $CBS_DROPDOWNLIST) GUICtrlSetData(-1, "G:|H:|I:|J:|K:|L:|M:|N:|O:|P:|Q:|R:|S:|T:|U:|V:|W:|X:|Y:|Z:") $CurY = $CurY + 27 GUICtrlCreateLabel("UNC Path", $CurX+20, $CurY+3) $hMapShareEdit = GUICtrlCreateInput("\\Server\Sharename", $CurX+85, $CurY, 300) $CurY = $CurY + 27 GUICtrlCreateLabel("Username", $CurX+20, $CurY+3) $hMapUserEdit = GUICtrlCreateInput("Domain.com\%Username%", $CurX+85, $CurY, 300) $CurY = $CurY + 27 GUICtrlCreateLabel("Password", $CurX+20, $CurY+3) $hMapPasswordEdit = GUICtrlCreateInput("Password", $CurX+85, $CurY, 300, -1, $ES_PASSWORD) $hMapButtonGo = GUICtrlCreateButton("&Map!", $BaseX+500, $BaseY+290, 100) ; Capture Tab ; $hTab_1 = GUICtrlCreateTabItem("  Capture  ") $CurX = $BaseX $CurY = $BaseY ; File Group $CurY = $CurY + 10 GuiCtrlCreateGroup("WIM Image", $CurX+10, $CurY, 580, 155) $CurY = $CurY + 18 GUICtrlCreateLabel("Source", $CurX+20, $CurY+3) $hCaptureSourceEdit = GUICtrlCreateInput("C:", $CurX+85, $CurY, 300) $hCaptureSourceBrowse = GUICtrlCreateButton("Browse", $CurX+395, $CurY-2) $CurY = $CurY + 27 GUICtrlCreateLabel("Destination", $CurX+20, $CurY+3) $hCaptureDestEdit = GUICtrlCreateInput("MyWim.wim", $CurX+85, $CurY, 300) $hCaptureDestBrowse = GUICtrlCreateButton("Browse", $CurX+395, $CurY-2) $CurY = $CurY + 27 GUICtrlCreateLabel("Compression", $CurX+20, $CurY+3) $hCaptureCompression = GUICtrlCreateCombo("Maximum", $CurX+85, $CurY, 100, 500, $CBS_DROPDOWNLIST) GUICtrlSetData(-1, "Fast") $CurY = $CurY + 27 GUICtrlCreateLabel("Name", $CurX+20, $CurY+3) $hCaptureNameEdit = GUICtrlCreateInput("My Vista Image", $CurX+85, $CurY, 300) $CurY = $CurY + 27 GUICtrlCreateLabel("Description", $CurX+20, $CurY+3) $hCaptureDescEdit = GUICtrlCreateInput("My Vista Image Description", $CurX+85, $CurY, 300) ; Options Group $CurY = $CurY + 40 GuiCtrlCreateGroup("Options", $CurX+10, $CurY, 580, 100) $CurY = $CurY + 18 GUICtrlCreateLabel("/config", $CurX+20, $CurY+3) $hCaptureConfigEdit = GUICtrlCreateInput("", $CurX+85, $CurY, 300) $hCaptureConfigBrowse = GUICtrlCreateButton("Browse", $CurX+395, $CurY-2) $CurY = $CurY + 27 GUICtrlCreateLabel("/flags", $CurX+20, $CurY+3) $hCaptureFlagsEdit = GUICtrlCreateInput("Ultimate", $CurX+85, $CurY, 300) $CurY = $CurY + 27 $hCaptureBootCheck = GUICtrlCreateCheckbox("/boot (WinPE Images Only) ", $CurX+20, $CurY) $hCaptureCheckCheck = GUICtrlCreateCheckbox("/check", $CurX+190, $CurY) $hCaptureButtonGo = GUICtrlCreateButton("&Capture!", $BaseX+500, $BaseY+290, 100) ; ; Apply Tab ; $hTab_2 = GUICtrlCreateTabItem("  Apply  ") $CurX = $BaseX $CurY = $BaseY ; File Group $CurY = $CurY + 10 GuiCtrlCreateGroup("WIM Image", $CurX+10, $CurY, 580, 205) $CurY = $CurY + 18 GUICtrlCreateLabel("1. Source", $CurX+20, $CurY+3) $hApplySourceEdit = GUICtrlCreateInput("MyWim.wim", $CurX+85, $CurY, 300) $hApplySourceBrowse = GUICtrlCreateButton("Browse", $CurX+395, $CurY-2) $CurY = $CurY + 27 GUICtrlCreateLabel ("Input Image Number", $CurX+15, $CurY+30, 70, 30) $hApplyName = GUICtrlCreateInput("1", $CurX+85, $CurY+30, 40, 20) $hApplyNameBrowse= GUICtrlCreateButton("2. Poll Image Number", $CurX+15, $CurY+1) $treeview = GUICtrlCreateTreeView ( 150, 90, 450, 120, BitOr($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE) $CurY = $CurY + 27 GUICtrlCreateLabel("Destination", $CurX+20, $CurY+103) $hApplyDestEdit = GUICtrlCreateInput("C:", $CurX+85, $CurY+100, 300) $hApplyDestBrowse = GUICtrlCreateButton("Browse", $CurX+395, $CurY+98) ; Options Group $CurY = $CurY + 40 GuiCtrlCreateGroup("Options", $CurX+10, $CurY+100, 580, 50) $CurY = $CurY + 18 Dim $hReboot = GUICtrlCreateCheckbox ( "Automatically Reboot", $CurX+20, $CurY+100, 130,15) $hApplyVerifyCheck = GUICtrlCreateCheckbox("/verify", $CurX+150, $CurY+100, 100, 15 ) GUICtrlSetState ($hReboot, $GUI_CHECKED) $hApplyButtonGo = GUICtrlCreateButton("&Apply!", $BaseX+500, $BaseY+290, 100) ; ; Set Default Options ; LoadSettings() SettingsToGUI() ; ; The GUI message loop ; GuiSetState() While 1     $msg = GuiGetMsg()     Select         ; General Messages         Case $msg = $GUI_EVENT_CLOSE             ExitLoop                         ; Capture Messages         Case $msg = $hCaptureButtonGo             DoCapture()         Case $msg = $hCaptureSourceBrowse             $sDir = BrowseForDirectory()             if $sDir Then GUICtrlSetData($hCaptureSourceEdit, $sDir)         Case $msg = $hCaptureDestBrowse             $sFile = BrowseForWimToSave()             if $sFile Then GUICtrlSetData($hCaptureDestEdit, $sFile)         Case $msg = $hCaptureConfigBrowse             $sFile = BrowseForConfig()             If $sFile Then GUICtrlSetData($hCaptureConfigEdit, $sFile)             ; Apply Messages         Case $msg = $hApplyNameBrowse             PollImage()         Case $msg = $hApplyButtonGo             DoApply()         Case $msg = $hApplyDestBrowse             $sDir = BrowseForDirectory()             if $sDir Then GUICtrlSetData($hApplyDestEdit, $sDir)         Case $msg = $hApplySourceBrowse             $sFile = BrowseForWimToLoad()             if $sFile Then GUICtrlSetData($hApplySourceEdit, $sFile)             ; Drive Map Messages         Case $msg = $hMapButtonGo             DoMapping()         Case Else             ;;;     EndSelect WEnd Exit ; ; FUNCTIONS ; Func BrowseForDirectory()     $sDir = FileSelectFolder("Select source folder", "C:")     If StringRight($sDir, 1) = "\" Then $sDir = StringTrimRight($sDir, 1)     Return $sDir EndFunc Func BrowseForWimToSave()     $sFile = FileSaveDialog( "Select destination file", "C:\", "WIM Files (*.wim)", 3)     If @error Then Return ""         If StringRight($sFile, 4) <> ".wIM" Then $sFile = $sFile & ".wim"     Return $sFile EndFunc Func BrowseForWimToLoad()     $sFile = FileOpenDialog( "Select source file", "C:\", "WIM Files (*.wim)", 3)     If @error Then Return ""     Return $sFile EndFunc Func BrowseForConfig()     $sFile = FileOpenDialog("Select config file", @ScriptDir, "INI files (*.ini)", 1)     If @error Or StringRight($sFile, 4) <> ".ini" Then Return ""     Return $sFile EndFunc Func DoCapture()     $sCmd = '"' & @ScriptDir & '\imagex.exe"'         If $gCaptureConfig <> "" Then $sCmd = $sCmd & ' /config "' & $gCaptureConfig & '"'         If $gCaptureCompression = "fast" Then         $sCmd = $sCmd & " /compress fast"     Else         $sCmd = $sCmd & " /compress maximum"     EndIf         If $gCaptureCheck = 1 Then $sCmd = $sCmd & " /check"     If $gCaptureBoot = 1 Then $sCmd = $sCmd & " /boot"     If $gCaptureFlags <> "" Then $sCmd = $sCmd & ' /flags "' & $gCaptureFlags & '"'         $sCmd = $sCmd & ' /capture "' & $gCaptureSource & '" "' & $gCaptureDestination & '"'     $sCmd = $sCmd & ' "' & $gCaptureName & '" "' & $gCaptureDescription & '"'         $ret = RunWait($sCmd, @WorkingDir, @SW_SHOW)     SplashTextOn ( "Return Code", "Imagex.exe returned with code = " & $ret, 400, 200, -1, -1, 32, "Tahoma", 16, 500)     sleep (3000)     SplashOff () EndFunc Func PollImage ()     Dim $nitem, $nitem     Dim $imageinfo = " "     $read = GUICtrlRead ($hApplySourceEdit)     $sCmd = "imagex.exe"     If $read = "" Then         MsgBox (48, "Input required", "Please select the source")     Else         $sCmd = $sCmd & ' /info "' & $read & '"'     EndIf     ;MsgBox(0, "scmd", $sCmd)     Dim $ret = Run(@ComSpec & " /c " & $sCmd & '"', @ScriptDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD )     While 1     $line = StdoutRead($ret)        If $line = "" Then  ExitLoop     $imageinfo = $imageinfo & $line     ;MsgBox(0, "RunDOS", $line)     If @error Then ExitLoop     WEnd      _GUICtrlTreeViewDeleteAllItems ($treeview)     $aImageInfo = _StringBetween ( $imageinfo, "<name>", "</name>" )     $aImageDesc = _StringBetween ( $imageinfo, "<Description>", "</Description>" )     $aImageFileCount = _StringBetween ( $imageinfo, "<Filecount>", "</Filecount>" )     $aImageBuild = _StringBetween ( $imageinfo, "<Build>", "</Build>" )     $imagenumber = UBound ($aImageInfo, 1)     $x = 0     Dim $nitem[$imagenumber]     Do     $nitem[$x] = GUICtrlCreateTreeViewItem ( "Image " & $x +1 & ": " & $aImageInfo[$x], $treeview )     GUICtrlCreateTreeViewItem ( "Description: " & $aImageDesc [$x], $nitem[$x] )     GUICtrlCreateTreeViewItem ( "File Count: " & $aImageFileCount [$x], $nitem[$x] )     GUICtrlCreateTreeViewItem ( "Build Version: " & $aImageBuild [$x], $nitem[$x] )     GUICtrlSetState($nitem[$x], $GUI_DEFBUTTON)     $x = $x + 1     Until $x = $imagenumber EndFunc Func DoApply()     $sCmd = '"' & @ScriptDir & '\imagex.exe"'         If $gApplyVerify = 1 Then $sCmd = $sCmd & " /verify"         $sCmd = $sCmd & ' /apply "' & $gApplySource & '" "' & $gApplyName & '" "' & $gApplyDestination & '"'     $ret = RunWait($sCmd, @WorkingDir, @SW_SHOW)     SplashTextOn ( "Return Code", "Imagex.exe returned with code = " & $ret, 400, 200, -1, -1, 32, "Tahoma", 16, 500)     sleep (3000)     SplashOff ()     $Rebootstate = GUICtrlRead ($hReboot)     If $Rebootstate = 1 Then     _RunDOS("Start wpeutil reboot")     EndIf EndFunc Func DoMapping()     $gMapLetter = IniRead($sIni, "MAP", "Letter", "V:")     DriveMapDel($gMapLetter)     $gMapShare = IniRead($sIni, "Map", "Share", "")     $VistaAccount = GUICtrlRead ( $hMapUserEdit )     $VistaPwd = GUICtrlRead ( $hMapPasswordEdit )     $res = DriveMapAdd($gMapLetter, $gMapShare, 0, $VistaAccount, $VistaPwd)         If $res Then         ControlSetText("Mapping Drive", "", "Static1", "Drive successfully mapped!" )         sleep (2000)         ;MsgBox(64, "Drive Mapping", "Drive successfully mapped!")     Else         SplashOff()         MsgBox(16, "Drive Mapping", "Error mapping drive! Code: " & $avDriveMapAdd[@error])             EndIf   EndFunc Func LoadSettings()     $sIni = @ScriptDir & "\gimagex.ini"         $gCaptureSource = IniRead($sIni, "CAPTURE", "Source", "C:")     $gCaptureDestination = IniRead($sIni, "CAPTURE", "Destination", "MyWim.wim")     $gCaptureCompression = IniRead($sIni, "CAPTURE", "Compression", "Maximum")     $gCaptureFlags = IniRead($sIni, "CAPTURE", "Flags", "Ultimate")     $gCaptureConfig = IniRead($sIni, "CAPTURE", "Config", "")     $gCaptureBoot = IniRead($sIni, "CAPTURE", "Boot", "0")     $gCaptureCheck = IniRead($sIni, "CAPTURE", "Check", "1")     $gCaptureName = IniRead($sIni, "CAPTURE", "Name", "My Vista Build Name")     $gCaptureDescription = IniRead($sIni, "CAPTURE", "Description", "My Vista Build Description")     $gApplySource = IniRead($sIni, "APPLY", "Source", "C:")     $gApplyDestination = IniRead($sIni, "APPLY", "Destination", "MyWim.wim")     $gApplyVerify = IniRead($sIni, "APPLY", "Verify", "0")     $gApplyName = IniRead($sIni, "APPLY", "Name", "My Vista Build Name")     $gMapLetter = IniRead($sIni, "MAP", "Letter", "M:")     $gMapShare = IniRead($sIni, "MAP", "Share", "\\Server\Share")     $gMapUser = IniRead($sIni, "MAP", "User", "User") EndFunc Func SettingsToGUI()     ; CAPTURE     GUICtrlSetData($hCaptureSourceEdit, $gCaptureSource)     GUICtrlSetData($hCaptureDestEdit, $gCaptureDestination)     GUICtrlSetData($hCaptureCompression, $gCaptureCompression)     GUICtrlSetData($hCaptureFlagsEdit, $gCaptureFlags)     GUICtrlSetData($hCaptureConfigEdit, $gCaptureConfig)     If $gCaptureBoot = 1 Then         GUICtrlSetState($hCaptureBootCheck, $GUI_CHECKED)     Else         GUICtrlSetState($hCaptureBootCheck, $GUI_UNCHECKED)     EndIf     If $gCaptureCheck = 1 Then         GUICtrlSetState($hCaptureCheckCheck, $GUI_CHECKED)     Else         GUICtrlSetState($hCaptureCheckCheck, $GUI_UNCHECKED)     EndIf     GUICtrlSetData($hCaptureNameEdit, $gCaptureName)     GUICtrlSetData($hCaptureDescEdit, $gCaptureDescription)         ; APPLY     GUICtrlSetData($hApplySourceEdit, $gApplySource)     GUICtrlSetData($hApplyDestEdit, $gApplyDestination)     If $gApplyVerify = 1 Then         GUICtrlSetState($hApplyVerifyCheck, $GUI_CHECKED)     Else         GUICtrlSetState($hApplyVerifyCheck, $GUI_UNCHECKED)     EndIf     GUICtrlSetData($hApplyName, $gApplyName)     ; MAP     GUICtrlSetData($hMapLetter, $gMapLetter)     GUICtrlSetData($hMapShareEdit, $gMapShare)     GUICtrlSetData($hMapUserEdit, $gMapUser)     GUICtrlSetData($hMapPasswordEdit, $gMapPassword) EndFunc











0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users