SATINEZ.NET - Imagemaker (ISO)

  • ciao!

    Hoffe Unattended ist euch ein Begriff :)
    Wie der Titel schon sagt, möchte ich die Commandlineversion von CDIMAGE.EXE als Gui benutzen.

    Ich habe mal angefangen das GUI zu erstellen. Jetzt bin ich an dem Punkt, wo ich Autoit sagen muss, was soll passieren wenn eine Aktion gemacht wird.

    In verschiedenen Skripts habe ich gesehen, dass einmal die

    [autoit]

    While True
    Sleep(50)
    WEnd

    [/autoit]

    und die Switch , Case Variante gibt.
    Was muss ich benutzen, was ist besser um evt. später Fehler auszuschliessen?

    Hier mein Probestück
    In Kommentaren steht das Skript als CMD Version

    Spoiler anzeigen
    [autoit]


    #include
    #include
    #include
    #include
    #include
    #include

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $main = GUICreate("Create CD Image", 388, 272, 292, 186)

    [/autoit] [autoit][/autoit] [autoit]

    $gruppe_quelle = GUICtrlCreateGroup("Quelle", 8, 16, 373, 61)
    $input_quelle = GUICtrlCreateInput("", 16, 40, 229, 21)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $btn_quelle_01 = GUICtrlCreateButton("...", 252, 40, 25, 21, 0)

    [/autoit] [autoit][/autoit] [autoit]

    $gruppe_ziel = GUICtrlCreateGroup("Ziel", 8, 128, 373, 101)
    $combo_01 = GUICtrlCreateCombo("", 20, 152, 145, 25)
    $lbl_ziel_01 = GUICtrlCreateLabel("Definiert auf welchem Datenträger sich die Dateien befinden, " & @CRLF & "die kopiert werden sollen.", 20, 180, 350, 30)
    GUICtrlSetFont(-1, 5, 400, 0, "MS Sans Serif")

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While True
    Sleep(50)
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;~ :: Die Variable "drive1" definiert, auf welchem Datenträger
    ;~ :: sich die Dateien befinden die kopiert werden sollen. (Bsp. c:)
    ;~ SET drive1=x:

    [/autoit] [autoit][/autoit] [autoit]

    ;~ REM Die Variable "drive2" definiert, auf welchem Datenträger
    ;~ REM das IMAGE erstellt wird (Bsp. d:).
    ;~ SET drive2=c:

    [/autoit] [autoit][/autoit] [autoit]

    ;~ REM Welche version soll kopiert werden?
    ;~ SET mode=_test

    [/autoit] [autoit][/autoit] [autoit]

    ;~ TITLE Creating ISO Image of Windows XP Professional
    ;~ ECHO.
    ;~ ECHO.
    ;~ attrib -R -H -A %drive1%\WICHTIGEDATEN\UNATTENDED_XPPRO\XPCD%mode% /S /D
    ;~ ECHO.
    ;~ ECHO.
    ;~ ECHO Creating ISO...
    ;~ CDIMAGE.EXE -ls_xppro_sp3%mode% -t12/31/2002,12:00:00 -h -j1 -m -bxpboot.img %drive1%\WICHTIGEDATEN\UNATTENDED_XPPRO\XPCD%mode% %drive2%\s_xppro_sp3%mode%.iso
    ;~ ECHO.
    ;~ EXIT

    [/autoit] [autoit][/autoit] [autoit][/autoit]

    2 Mal editiert, zuletzt von satinez (8. März 2009 um 15:57)

  • So ich hab mich mal richtig ran gesetzt und die Hilfe gelesen :)
    .
    Ich muss sagen, die Methode mit Opt('GUIOnEventMode', 1) ist sehr praktisch.
    Der ganze Code wird durch die einzelnen Funktionen viel übersichtlicher, satinez lernt dazu 8o
    .
    Ich habe es als *.zip hochgeladen, wer weiss vielleicht kann es jemand gebrauchen.
    .
    .
    P.S. Danke Oscar , ich habe als Referenz dein FileRenamer gebraucht. Wenn es dich stört, dass ich dein Design "geklaut" habe, sag es ruhig ^^
    .
    [Blockierte Grafik: http://www.imgupload.org/images/532_s_imgmaker.jpg]


    Spoiler anzeigen
    [autoit]

    #RequireAdmin
    #include
    #include
    #include

    [/autoit] [autoit][/autoit] [autoit]

    Opt('GUIOnEventMode', 1)

    [/autoit] [autoit][/autoit] [autoit]

    Global $title_01 = "SATINEZ.NET"
    Global $title_02 = " SATINEZ.NET - Imagemaker (ISO)"
    Global $title_03 = " SATINEZ.NET - "
    Global $check_quelle
    Global $check_ziel
    Global $path_quelle
    Global $path_ziel

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $main = GUICreate($title_02, 315, 300)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
    GUISetBkColor(0xeeeeee)
    GUISetIcon(@ScriptDir & '\icon.ico', -1)

    [/autoit] [autoit][/autoit] [autoit]

    $gruppe_quelle = GUICtrlCreateGroup('Verzeichnisauswahl (Quelle)', 5, 10, 306, 50)
    $input_quelle = GUICtrlCreateInput('', 10, 31, 240, 20, BitOR($ES_READONLY, -1))
    GUICtrlSetBkColor(-1, 0xdddddd)

    [/autoit] [autoit][/autoit] [autoit]

    $btn_quelle_01 = GUICtrlCreateButton('Select', 255, 30, 50, 20)
    GUICtrlSetOnEvent(-1, '_SelectSourceFolder')
    GUICtrlCreateGroup('', -99, -99, 1, 1)

    [/autoit] [autoit][/autoit] [autoit]

    $lbl_quelle_01 = GUICtrlCreateLabel("Definiert wo sich die Dateien befinden, " & @CRLF & "die kopiert werden sollen.", 10, 65, 350, 30)
    GUICtrlSetFont(-1, 5, 400, 0, "MS Sans Serif")

    [/autoit] [autoit][/autoit] [autoit]

    $btn_start = GUICtrlCreateButton("START", 105, 220, 100, 25, $WS_DISABLED)
    GUICtrlSetOnEvent(-1, '_Start')

    [/autoit] [autoit][/autoit] [autoit]

    $gruppe_ziel = GUICtrlCreateGroup("Verzeichnisauswahl (Ziel)", 5, 128, 306, 50)
    $input_ziel = GUICtrlCreateInput("", 10, 149, 240, 20, BitOR($ES_READONLY, -1))
    GUICtrlSetBkColor(-1, 0xdddddd)

    [/autoit] [autoit][/autoit] [autoit]

    $btn_ziel_01 = GUICtrlCreateButton('Select', 255, 148, 50, 20)
    GUICtrlSetOnEvent(-1, '_SelectTargetFolder')
    GUICtrlCreateGroup('', -99, -99, 1, 1)

    [/autoit] [autoit][/autoit] [autoit]

    $lbl_ziel_01 = GUICtrlCreateLabel("Definiert wo das Image gespeichert werden soll.", 10, 182, 350, 15)
    GUICtrlSetFont(-1, 5, 400, 0, "MS Sans Serif")

    [/autoit] [autoit][/autoit] [autoit]

    $menu = GUICtrlCreateMenu('&Datei')
    GUICtrlCreateMenuItem('Quellverzeichnis auswählen', $menu)
    GUICtrlSetOnEvent(-1, '_SelectSourceFolder')
    ;~ --------------------------------------------------
    GUICtrlCreateMenuItem('Zielverzeichnis auswählen', $menu)
    GUICtrlSetOnEvent(-1, '_SelectTargetFolder')
    ;~ --------------------------------------------------
    GUICtrlCreateMenuItem('', $menu)
    ;~ --------------------------------------------------
    GUICtrlCreateMenuItem('Beenden', $menu)
    GUICtrlSetOnEvent(-1, '_End')
    ;~ --------------------------------------------------
    $menu_help = GUICtrlCreateMenu('&Hilfe')
    GUICtrlCreateMenuItem('About Imagemaker (ISO)', $menu_help)
    GUICtrlSetOnEvent(-1, '_About')

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _SelectSourceFolder()
    $path_quelle = FileSelectFolder('Bitte Verzeichnis auswählen', '', 4, '', $main)
    If Not @error Then
    If StringRight($path_quelle, 1) <> '\' Then $path_quelle &= '\'
    GUICtrlSetData($input_quelle, $path_quelle)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    If StringInStr($path_quelle, "XPCD_") Then
    $check_quelle = 1
    GUICtrlSetBkColor($input_quelle, 0xddffdd)
    If $check_quelle = 1 And $check_ziel = 1 Then
    GUICtrlSetState($btn_start, $GUI_ENABLE)

    [/autoit] [autoit][/autoit] [autoit]

    EndIf
    Else
    $check_quelle = 0
    GUICtrlSetState($btn_start, $GUI_DISABLE)
    GUICtrlSetBkColor($input_quelle, 0xff9393)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndIf
    EndFunc ;==>_SelectSourceFolder

    [/autoit] [autoit][/autoit] [autoit]

    Func _SelectTargetFolder()
    $path_ziel = FileSelectFolder('Bitte Verzeichnis auswählen', '', 4, '', $main)
    If Not @error Then
    If StringRight($path_ziel, 1) <> '\' Then $path_ziel &= '\'
    GUICtrlSetData($input_ziel, $path_ziel)
    $check_ziel = 1
    If $check_quelle = 1 And $check_ziel = 1 Then
    GUICtrlSetState($btn_start, $GUI_ENABLE)
    Else
    GUICtrlSetState($btn_start, $GUI_DISABLE)
    EndIf
    EndIf
    EndFunc ;==>_SelectTargetFolder

    [/autoit] [autoit][/autoit] [autoit]

    Func _Start()
    RunWait(@ComSpec & " /c" & 'ATTRIB -R -H -A ' & $path_quelle & ' /S /D')
    Run(@ComSpec & " /c" & 'CDIMAGE.EXE -ls_xppro_sp3 -t12/31/2002,12:00:00 -h -j1 -m -bxpboot.img ' & $path_quelle & ' ' & $path_ziel & 's_xppro_sp3.iso')
    _Clear()
    EndFunc ;==>_Start

    [/autoit] [autoit][/autoit] [autoit]

    Func _Clear()
    GUICtrlSetData($input_quelle, "")
    GUICtrlSetData($input_ziel, "")
    $check_quelle = 0
    $check_ziel = 0
    GUICtrlSetBkColor($input_quelle, 0xdddddd)
    GUICtrlSetState($btn_start, $GUI_DISABLE)
    EndFunc ;==>_Clear

    [/autoit] [autoit][/autoit] [autoit]

    Func _About()
    MsgBox(262144 + 64, $title_01 & " - About", "Imagemaker (ISO) 08.03.2009 - SATINEZ.NET", 0, $main)
    EndFunc ;==>_About

    [/autoit] [autoit][/autoit] [autoit]

    Func _End()
    Exit
    EndFunc ;==>_End

    [/autoit] [autoit][/autoit] [autoit]

    While True
    Sleep(50)
    WEnd

    [/autoit]
  • Habe einen kleinen Fehler gefunden :(
    Wie kann man dem @ComSpec eine Variable mitgeben die Leerzeichen enthält? So, dass er sie versteht oder umwandelt?
    .
    Beispiel

    Code
    C:\Dokumente und Einstellungen\Administrator\Desktop\
  • Versuchs doch mal so zu machen:
    Nicht "C:\Dokumente und Einstellungen\Administrator\Desktop\", sondern ' "C:\Dokumente und Einstellungen\Administrator\Desktop\" '
    Ich hab die Leerzeichen zwischen ' und " gemacht damit man sie unterscheiden kann :D

    Padmak

  • Danke!
    Also das heisst ich mache es so..

    [autoit]

    $pfad = "'" & $pfad & "'"
    ; ~ Oder so...
    $pfad = '"' & $pfad & '"'

    [/autoit]

    Ich teste mal ^^

  • Ok ich probiers :)
    Und wenns nicht klappt dann mach ich einfach

    [autoit]

    If StringInStr($path_ziel, ' ') Then Exit

    [/autoit]