Probleme mit WPI und einem Script

  • Moin Leute,

    habe mir ein kopier Tool geschrieben, mit dem ich Dateien auf die PSP kopieren lasse. Starte ich das Script aus dem Ordner funzt es wunderbar, wird das Script aber über WPI gestartet kopiert er keine einzigste Datei.

    Hatte jemand von euch vielleicht auch schon die Probleme gehabt???

    Benutze WPI 5.5 und neueste AutoIt Beta.

    Mfg

    Analyzer

    Einmal editiert, zuletzt von Analyzer (19. November 2006 um 13:45)

  • Moin jonk,

    WPI ist "Windows Post installer" http://www.wpiw.net

    Das ist ein Installer mit dem man seine Programme nach und nach installieren lassen kann. So ähnlich wie der Install O Matic von peethebee.

    Okay, hab ich net dran gedacht:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #Include <APIFileReadWrite.au3>

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

    Opt("GUIOnEventMode", 1)

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

    Global $search = FileFindFirstFile("*.mp4")
    Global $file = FileFindNextFile($search)
    Global $filmsize = FileGetSize($file)/1024 /1024

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

    Global $Source = @ScriptDir & "\" & $file

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

    If FileExists("D:\PSP\SYSTEM\DEVBOOT.PBP") Then
    If DriveSpaceFree("D:\") < $filmsize Then
    MsgBox(16,"Memory Stick Duo","Nicht genügend Speicher auf Memory Stick Duo verfügbar.")
    Exit
    Else
    $Dest = "D:\MP_ROOT\100MNV01\" & $file
    EndIf
    ElseIf FileExists("E:\PSP\SYSTEM\DEVBOOT.PBP") Then
    If DriveSpaceFree("E:\") < $filmsize Then
    MsgBox(16,"Memory Stick Duo","Nicht genügend Speicher auf Memory Stick Duo verfügbar.")
    Exit
    Else
    $Dest = "E:\MP_ROOT\100MNV01\" & $file
    EndIf
    ElseIf FileExists("F:\PSP\SYSTEM\DEVBOOT.PBP") Then
    If DriveSpaceFree("F:\") < $filmsize Then
    MsgBox(16,"Memory Stick Duo","Nicht genügend Speicher auf Memory Stick Duo verfügbar.")
    Exit
    Else
    $Dest = "F:\MP_ROOT\100MNV01\" & $file
    EndIf
    ElseIf FileExists("G:\PSP\SYSTEM\DEVBOOT.PBP") Then
    If DriveSpaceFree("G:\") < $filmsize Then
    MsgBox(16,"Memory Stick Duo","Nicht genügend Speicher auf Memory Stick Duo verfügbar.")
    Exit
    Else
    $Dest = "G:\MP_ROOT\100MNV01\" & $file
    EndIf
    ElseIf FileExists("H:\PSP\SYSTEM\DEVBOOT.PBP") Then
    If DriveSpaceFree("H:\") < $filmsize Then
    MsgBox(16,"Memory Stick Duo","Nicht genügend Speicher auf Memory Stick Duo verfügbar.")
    Exit
    Else
    $Dest = "H:\MP_ROOT\100MNV01\" & $file
    EndIf
    ElseIf FileExists("I:\PSP\SYSTEM\DEVBOOT.PBP") Then
    If DriveSpaceFree("I:\") < $filmsize Then
    MsgBox(16,"Memory Stick Duo","Nicht genügend Speicher auf Memory Stick Duo verfügbar.")
    Exit
    Else
    $Dest = "I:\MP_ROOT\100MNV01\" & $file
    EndIf
    ElseIf FileExists("J:\PSP\SYSTEM\DEVBOOT.PBP") Then
    If DriveSpaceFree("J:\") < $filmsize Then
    MsgBox(16,"Memory Stick Duo","Nicht genügend Speicher auf Memory Stick Duo verfügbar.")
    Exit
    Else
    $Dest = "J:\MP_ROOT\100MNV01\" & $file
    EndIf
    ElseIf FileExists("K:\PSP\SYSTEM\DEVBOOT.PBP") Then
    If DriveSpaceFree("K:\") < $filmsize Then
    MsgBox(16,"Memory Stick Duo","Nicht genügend Speicher auf Memory Stick Duo verfügbar.")
    Exit
    Else
    $Dest = "K:\MP_ROOT\100MNV01\" & $file
    EndIf
    ElseIf FileExists("L:\PSP\SYSTEM\DEVBOOT.PBP") Then
    If DriveSpaceFree("L:\") < $filmsize Then
    MsgBox(16,"Memory Stick Duo","Nicht genügend Speicher auf Memory Stick Duo verfügbar.")
    Exit
    Else
    $Dest = "L:\MP_ROOT\100MNV01\" & $file
    EndIf
    ElseIf FileExists("M:\PSP\SYSTEM\DEVBOOT.PBP") Then
    If DriveSpaceFree("M:\") < $filmsize Then
    MsgBox(16,"Memory Stick Duo","Nicht genügend Speicher auf Memory Stick Duo verfügbar.")
    Exit
    Else
    $Dest = "M:\MP_ROOT\100MNV01\" & $file
    EndIf
    ElseIf FileExists("N:\PSP\SYSTEM\DEVBOOT.PBP") Then
    If DriveSpaceFree("N:\") < $filmsize Then
    MsgBox(16,"Memory Stick Duo","Nicht genügend Speicher auf Memory Stick Duo verfügbar.")
    Exit
    Else
    $Dest = "N:\MP_ROOT\100MNV01\" & $file
    EndIf
    ElseIf FileExists("O:\PSP\SYSTEM\DEVBOOT.PBP") Then
    If DriveSpaceFree("O:\") < $filmsize Then
    MsgBox(16,"Memory Stick Duo","Nicht genügend Speicher auf Memory Stick Duo verfügbar.")
    Exit
    Else
    $Dest = "O:\MP_ROOT\100MNV01\" & $file
    EndIf
    ElseIf FileExists("P:\PSP\SYSTEM\DEVBOOT.PBP") Then
    If DriveSpaceFree("P:\") < $filmsize Then
    MsgBox(16,"Memory Stick Duo","Nicht genügend Speicher auf Memory Stick Duo verfügbar.")
    Exit
    Else
    $Dest = "P:\MP_ROOT\100MNV01\" & $file
    EndIf
    ElseIf FileExists("Q:\PSP\SYSTEM\DEVBOOT.PBP") Then
    If DriveSpaceFree("Q:\") < $filmsize Then
    MsgBox(16,"Memory Stick Duo","Nicht genügend Speicher auf Memory Stick Duo verfügbar.")
    Exit
    Else
    $Dest = "Q:\MP_ROOT\100MNV01\" & $file
    EndIf
    ElseIf FileExists("R:\PSP\SYSTEM\DEVBOOT.PBP") Then
    If DriveSpaceFree("R:\") < $filmsize Then
    MsgBox(16,"Memory Stick Duo","Nicht genügend Speicher auf Memory Stick Duo verfügbar.")
    Exit
    Else
    $Dest = "R:\MP_ROOT\100MNV01\" & $file
    EndIf
    ElseIf FileExists("S:\PSP\SYSTEM\DEVBOOT.PBP") Then
    If DriveSpaceFree("S:\") < $filmsize Then
    MsgBox(16,"Memory Stick Duo","Nicht genügend Speicher auf Memory Stick Duo verfügbar.")
    Exit
    Else
    $Dest = "S:\MP_ROOT\100MNV01\" & $file
    EndIf
    ElseIf FileExists("T:\PSP\SYSTEM\DEVBOOT.PBP") Then
    If DriveSpaceFree("T:\") < $filmsize Then
    MsgBox(16,"Memory Stick Duo","Nicht genügend Speicher auf Memory Stick Duo verfügbar.")
    Exit
    Else
    $Dest = "T:\MP_ROOT\100MNV01\" & $file
    EndIf
    Else
    MsgBox(16,"PSP nicht gefunden ...","PSP wurde nicht gefunden, stelle sicher:" & @CRLF & "" & @CRLF & "- PSP ist an" & @CRLF & "- Memory Stick Duo ist in PSP eingesteckt" & @CRLF & "- PSP ist mit USB-Kabel angeschlossen" & @CRLF & "- PSP befindet sich im USB-Modus")
    EndIf

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

    CopyWithProg($Source,$Dest)

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

    $size = StringSplit($filmsize, ".")
    MsgBox(64,"Erfolgreich",$file & "(" & $size[1] & " MB) " & "wurde erfolgreich auf die PSP kopiert.")

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

    Exit

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

    Func CopyWithProg($szSource, $szDest)

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

    Local $Progress1 = GUICtrlCreateProgress(8, 56, 417, 25)
    Local $Form1 = GUICreate("Kopiere ...", 369, 128)
    Local $lblProgress = GUICtrlCreateLabel("", 8, 16,355, 25)
    Local $Prozent = GUICtrlCreateLabel("", 0, 38, 369, 18, $SS_CENTER)
    Local $Progress1 = GUICtrlCreateProgress(8, 56, 353, 17)
    Local $btnProgress = GUICtrlCreateButton("Fertig", 152, 88, 75, 25, 0)
    GUICtrlSetState($btnProgress, $GUI_Disable)
    GUISetOnEvent($btnProgress, "AForm1Close")
    GUISetOnEvent($GUI_EVENT_CLOSE, "AForm1Close")
    GUISetState(@SW_SHOW)

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

    Local $iProgress = FileGetSize($szSource)
    If $iProgress >1024 Then $iProgress = $iProgress / 1024
    Local $x,$pos,$retv

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

    $hSource = FileOpen($szSource,0)
    if $hSource = 0 then Return SetError(2)
    $hDest = FileOpen($szDest,10)
    if $hDest =0 Then
    FileClose($hSource)
    Return SetError(3)
    EndIf
    $name = StringSplit($file, ".")
    $size = StringSplit($filmsize, ".")
    GUICtrlSetData($lblProgress, "Kopiere " & $name[1] & "(" & $size[1] & " MB) " & " zur PSP")
    While 1
    $hSourceData =FileRead($hSource,1024)
    if @error = -1 then
    $retv= FileWrite($hDest,($hSourceData))
    GUICtrlSetData($lblProgress,"Fertig")
    ExitLoop
    EndIf
    $pos = $pos +(100/$iProgress)
    GUICtrlSetData($Progress1,$pos)
    $proz = StringSplit($pos, ".")
    GUICtrlSetData($Prozent, $proz[1] & " Prozent")
    if $iProgress <100 Then sleep(10)
    $retv= FileWrite($hDest,($hSourceData))
    WEnd
    FileClose($hSource)
    FileClose($hDest)
    GUIDelete($Form1)
    While 1
    Local $prgMsg = GUIGetMsg()
    if $prgMsg = $GUI_EVENT_CLOSE or $prgMsg= $btnProgress Then ExitLoop
    sleep(10)
    WEnd
    EndFunc

    Func AForm1Close()
    Exit
    EndFunc

    [/autoit]

    Mfg

    Analyzer

    2 Mal editiert, zuletzt von Analyzer (19. November 2006 um 15:48)

  • Hi Analyzer,

    ich kann Dein Skript nicht wirklich testen weil:

    - ich keine PSP habe
    - mir ein Include fehlt EDIT: das include brauchte ich wohl nicht :)
    - ich kein WPI habe
    - und der Rest des Skriptes fehlt ;)

    .... aaaaber ich habe das Skript etwas verkürzt. In dem Verzeichnis aus dem WPI das Skript startet liegen aber auch *.mp4 ?

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #Include <APIFileReadWrite.au3>

    Opt("GUIOnEventMode", 1)

    Global $search = FileFindFirstFile("*.mp4")
    Global $file = FileFindNextFile($search)
    Global $filmsize = FileGetSize($file)/1024 /1024
    Global $Source = @ScriptDir & "\" & $file
    Global $Dest

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

    For $i = 65 To 83
    $sChkFile = Chr($i)&":\PSP\SYSTEM\DEVBOOT.PBP"
    $sdest = Chr($i)&":\MP_ROOT\100MNV01\"&$file
    If FileExists($sChkFile)Then
    If DriveSpaceFree(Chr($i)&":\") < $filmsize Then
    MsgBox(16,"Memory Stick Duo","Nicht genügend Speicher auf Memory Stick Duo verfügbar.")
    Exit
    Else
    $Dest = $sdest
    $i=83
    EndIf
    EndIf
    Next
    If $Dest = "" Then
    MsgBox(16,"PSP nicht gefunden ...","PSP wurde nicht gefunden, stelle sicher:" & @CRLF & "" & @CRLF & "- PSP ist an" & @CRLF & "- Memory Stick Duo ist in PSP eingesteckt" & @CRLF & "- PSP ist mit USB-Kabel angeschlossen" & @CRLF & "- PSP befindet sich im USB-Modus")
    EndIf

    CopyWithProg($Source,$Dest)

    $size = StringSplit($filmsize, ".")
    MsgBox(64,"Erfolgreich",$file & "(" & $size[1] & " MB) " & "wurde erfolgreich auf die PSP kopiert.")

    Exit

    Func CopyWithProg($szSource, $szDest)

    Local $Progress1 = GUICtrlCreateProgress(8, 56, 417, 25)
    Local $Form1 = GUICreate("Kopiere ...", 369, 128)
    Local $lblProgress = GUICtrlCreateLabel("", 8, 16,355, 25)
    Local $Prozent = GUICtrlCreateLabel("", 0, 38, 369, 18, $SS_CENTER)
    Local $Progress1 = GUICtrlCreateProgress(8, 56, 353, 17)
    Local $btnProgress = GUICtrlCreateButton("Fertig", 152, 88, 75, 25, 0)
    GUICtrlSetState($btnProgress, $GUI_Disable)
    GUISetOnEvent($btnProgress, "AForm1Close")
    GUISetOnEvent($GUI_EVENT_CLOSE, "AForm1Close")
    GUISetState(@SW_SHOW)

    Local $iProgress = FileGetSize($szSource)
    If $iProgress >1024 Then $iProgress = $iProgress / 1024
    Local $x,$pos,$retv

    $hSource = FileOpen($szSource,0)
    if $hSource = 0 then Return SetError(2)
    $hDest = FileOpen($szDest,10)
    if $hDest =0 Then
    FileClose($hSource)
    Return SetError(3)
    EndIf
    $name = StringSplit($file, ".")
    $size = StringSplit($filmsize, ".")
    GUICtrlSetData($lblProgress, "Kopiere " & $name[1] & "(" & $size[1] & " MB) " & " zur PSP")
    While 1
    $hSourceData =FileRead($hSource,1024)
    if @error = -1 then
    $retv= FileWrite($hDest,($hSourceData))
    GUICtrlSetData($lblProgress,"Fertig")
    ExitLoop
    EndIf
    $pos = $pos +(100/$iProgress)
    GUICtrlSetData($Progress1,$pos)
    $proz = StringSplit($pos, ".")
    GUICtrlSetData($Prozent, $proz[1] & " Prozent")
    if $iProgress <100 Then sleep(10)
    $retv= FileWrite($hDest,($hSourceData))
    WEnd
    FileClose($hSource)
    FileClose($hDest)
    GUIDelete($Form1)
    While 1
    Local $prgMsg = GUIGetMsg()
    if $prgMsg = $GUI_EVENT_CLOSE or $prgMsg= $btnProgress Then ExitLoop
    sleep(10)
    WEnd
    EndFunc

    Func AForm1Close()
    Exit
    EndFunc

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

    EDIT2: a bisserl nachgebessert ;)

    4 Mal editiert, zuletzt von jonk (19. November 2006 um 17:17)

  • Moin jonk,

    danke erstmal fürs abkürzen des Script.

    Das Script ist soweit komplett, mehr gibbet net mehr.

    Mfg

    Analyzer