OEM Recovery Partition Creator for Windows

Discussion in 'MDL Projects and Applications' started by AnarethoS, Sep 11, 2010.

  1. tcntad

    tcntad MDL Guru

    Oct 26, 2009
    4,590
    1,586
    150
    Might, be who knows what people might install and copy to C:\...
    Games, musicfiles, personal pics and god knows what. I agree 12 GB is abit too much but a TB harddrive doesnt cost much.
     
  2. FreeStyler

    FreeStyler MDL Guru

    Jun 23, 2007
    3,563
    3,848
    120
    Don't see what that has to do with the recovery partition size. The Recovery partition size is only related to what programs and files are pre-installed before syspreping, so if you install a lot, 12GB may be recommended, but for a basic Win7 install, Office Starter, Windows Live & MSE 6GB is more then sufficient

    I was more wondering it it was recommended for particular reason, Temporary space required by RT for example
     
  3. FreeStyler

    FreeStyler MDL Guru

    Jun 23, 2007
    3,563
    3,848
    120
    I know, but in my opinion it doesn't make sence to store mp3's and such in the recovery partition, why not simply create another partition holding these files.
    Newly downloaded Mp3's would not be available after restoring the image...or he should intend to update his recovery partition with every new mp3 downloaded.... again that doesn't make much sense and basically is outside the scope of having a recovery partition
     
  4. tcntad

    tcntad MDL Guru

    Oct 26, 2009
    4,590
    1,586
    150

    I agree of course. I dont know why he wants all his personal files on a recoverypartition well its his choice :p
     
  5. komital

    komital MDL Novice

    Dec 1, 2010
    33
    0
    0
    Unfortunately, it is not my choice. PC is for Karaoke club. On the market it is no other application except Ecuakaraoke with bundled music. To get high quality (not midi) files it is huge job and thats why clients prefer Ecuakaraoke (with 4500 mp3 files). Creator of software packed lyrics and mp3 in his own format (DAT) and put it the path in program root directory. So, I simply don't have any choice.

    I wanted to force Ultrastar Deluxe, but clients don't want it (as it is without music collection).

    P.S. Now I received another PC with same request for Karaoke.

    P.S. If somebody know how to decompose DAT file and convert it in Ultrastar Deluxe mp3, I will appreciate it.
     
  6. FreeStyler

    FreeStyler MDL Guru

    Jun 23, 2007
    3,563
    3,848
    120
    #1230 FreeStyler, Aug 1, 2011
    Last edited by a moderator: Apr 20, 2017
    Updated scripts that hide main windows during image capture/apply progress

    Capture.au3
    Code:
    $iPID = ProcessExists("recovery.exe")
    if $iPID<>0 then
    ;Get HWND.
    $hWnd = _GetHwndFromPID($iPID)
    WinSetState ($hWnd, "", @SW_HIDE)
    
    $Imagex = Run($CmdLineRaw,"",@SW_HIDE,2)
    $Status = ProgressOn("Capturing","Preparing to capture Windows image","Please wait...")
    While ProcessExists($Imagex)
    $Line = StdoutRead($Imagex)
    $Line = StringReplace($Line,"[","")
    $Line = StringReplace($Line,"]","")
    $Line = StringReplace($Line," ","")
    $Line = StringReplace($Line,"%","")
    $Line1 = StringLeft($Line,1)
    $Line2 = StringLeft($Line,2)
    $Line3 = StringLeft($Line,3)
    
    If StringIsDigit($Line3) Then
    ProgressSet($Line3,$Line3&"%","Capturing image")
    ElseIf StringIsDigit($Line2) Then
    ProgressSet($Line2,$Line2&"%","Capturing image")
    ElseIf StringIsDigit($Line1) Then
    ProgressSet($Line1,$Line1&"%","Capturing image")
    EndIf
    WEnd
    ProgressOff()
    WinSetState ($hWnd, "", @SW_SHOW)
    endif
    
    Func _GetHwndFromPID($PID)
    $hWnd = 0
    $winlist = WinList()
    Do
        For $i = 1 To $winlist[0][0]
        If $winlist[$i][0] <> "" Then
            $iPID2 = WinGetProcess($winlist[$i][1])
            If $iPID2 = $PID Then
                $hWnd = $winlist[$i][1]
                ExitLoop
            EndIf
        EndIf
        Next
    Until $hWnd <> 0
    Return $hWnd
    EndFunc;==>_GetHwndFromPID
    Apply.au3
    Code:
    $iPID = ProcessExists("Recovery.exe")
    if $iPID<>0 then
    ;Get HWND.
    $hWnd = _GetHwndFromPID($iPID)
    WinSetState ($hWnd, '', @SW_HIDE)
    
    $Imagex = Run($CmdLineRaw,"",@SW_HIDE,2)
    $Status = ProgressOn("Applying","Preparing to apply Windows image","Please wait...")
    While ProcessExists($Imagex)
    $Line = StdoutRead($Imagex)
    $Line = StringReplace($Line,"[","")
    $Line = StringReplace($Line,"]","")
    $Line = StringReplace($Line," ","")
    $Line = StringReplace($Line,"%","")
    $Line1 = StringLeft($Line,1)
    $Line2 = StringLeft($Line,2)
    $Line3 = StringLeft($Line,3)
    
    If StringIsDigit($Line3) Then
    ProgressSet($Line3,$Line3&"%","Applying image")
    ElseIf StringIsDigit($Line2) Then
    ProgressSet($Line2,$Line2&"%","Applying image")
    ElseIf StringIsDigit($Line1) Then
    ProgressSet($Line1,$Line1&"%","Applying image")
    EndIf
    WEnd
    ProgressOff()
    WinSetState ($hWnd, '', @SW_SHOW)
    endif
    
    Func _GetHwndFromPID($PID)
    $hWnd = 0
    $winlist = WinList()
    Do
        For $i = 1 To $winlist[0][0]
        If $winlist[$i][0] <> "" Then
            $iPID2 = WinGetProcess($winlist[$i][1])
            If $iPID2 = $PID Then
                $hWnd = $winlist[$i][1]
                ExitLoop
            EndIf
        EndIf
        Next
    Until $hWnd <> 0
    Return $hWnd
    EndFunc;==>_GetHwndFromPID
     
  7. AnarethoS

    AnarethoS MDL Expert

    Jul 31, 2009
    1,297
    1,587
    60
    @FreeStyler
    The next verion of the tools (later this year, I am stuck with too much university home-works)
    - Autokill of "Sysprep.exe" so it won't carsh if you forgot to close the windows
    - Autokill of "wmpnetw.exe" so it may help with some people during Sysprep
    - Regional version of Capture and Apply which will be english be default if not translated string is found
    - Hide backgroud window when capturing (I will look into your code to see what you did)
    - Hide language selection when default is set

    As for the "minimum" size of the recovery partition, 6gb should be enough. But it always depend of how much software you put in it. Considering today large HDD, 12gb should prevent any problem due to lack of space. On my side, my capture image is around 10gb, due to the fact my image is bilungual (you select to install in french or english) and it include Office 2010 32 and 64 bits version (user select which one to install on firt boot). Both version takes around 8gb on the hdd.....

    @TcnTad
    Sadly, lot of softwares made with AutoIt are detected as a virus. Problem is, the WaikFile.exe does not include any AutoIt script, just M$ files. But both softwares are compressed using WinRar. Maybe it is the source of the problem....
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  8. FreeStyler

    FreeStyler MDL Guru

    Jun 23, 2007
    3,563
    3,848
    120
  9. AnarethoS

    AnarethoS MDL Expert

    Jul 31, 2009
    1,297
    1,587
    60
    Thanks for your code. Basically, you are goind through all active window to find the PID of the good one.
    I was rather thinking putting the PID in a dummy text file at application launch... your method seem better :)

    To answer your question, IMAGEX is "scanning" all file on the HDD to calculate how much time it will takes and creates the files list and the ACL of the files. When using IMAGEX, there is no % on the screen at this step.
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  10. FreeStyler

    FreeStyler MDL Guru

    Jun 23, 2007
    3,563
    3,848
    120
    Nope, not exactly... the PID is taken from recovery.exe, because of the dialog titles being multilingual there is no way to use a hardcoded value with WinSetState, meaning we have to go trough all processes and take the title from the one that matches the pid from recovery.exe
     
  11. Phixer

    Phixer MDL Novice

    Sep 30, 2010
    30
    10
    0
    First I want to thank you Anarethos for this fantastic program and tcntad for all the documentation.
    It has worked for me with minor glitches (mostly my own) as I had a learning curve update. :doh:
    Question::confused:
    I have used the Autounattend.xml to install Win 7 and wondered if the .xml could be modified to be
    included with the Backup so that it could format the hard drive with the needed partitions when starting
    with the Recovery Disk. Or if you could show me what to modify and I will include it on my backup.

    THANK YOU THANK YOU THANK YOU :worthy::worthy:
     
  12. tcntad

    tcntad MDL Guru

    Oct 26, 2009
    4,590
    1,586
    150
    So you would like to have the autounattend.xml in your recoverypartition/disc?
    Well its not necessary as it already has all that info, it will format your windowspartition and reinstall it for you.

    Atleast im 99% sure of this^^
     
  13. AnarethoS

    AnarethoS MDL Expert

    Jul 31, 2009
    1,297
    1,587
    60
    The AutoUnattend.Xml file is used when installing Windows to correctly prepare your disk.
    When using the recovery disk /usb media, it use the infor in the Settings.Ini file from the recovery software.

    If you modify the AutoUnattend.Xml file (change partition size, order, etc.) you will have to modify Settings.Ini file with the same settings PRIOR installing the recovery software on the computer.
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  14. AnarethoS

    AnarethoS MDL Expert

    Jul 31, 2009
    1,297
    1,587
    60
    Also, I must appologies if anyone got problem DL the software in the past days as my server PSU went bad. I have replaced it and everything is ok now (cross fingers).
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  15. Jarmez

    Jarmez MDL Novice

    Jun 28, 2011
    8
    0
    0
    Hi,

    Can this tool be used with Bitlocker by any chance