So... ich habe jetzt noch ein paar Dinge geändert und bin mir nun ziemlich sicher, dass es jetzt funktioniert.
Vorab noch ein paar Infos...
- Wenn das Script bei dir unkompiliert (*.au3) nicht funktioniert, dann musst du das Script als 64-bit-Anwendung kompilieren und dann die PostgreSQL_DUMP_x64.exe starten. Die dafür nötigen 'Directives' für den AutoIt3Wrapper habe ich bereits gesetzt.
- Schmiert AutoIt bei dir wieder ab, dann starte das Script mal als Administrator (Als Administrator ausführen via Kontextmenü).
- Geht es immer noch nicht, dann benenne die c:\Program Files\PostgreSQL\9.5\bin\pg_dump.exe temporär um (pg_dump.exe.bak) und kopiere die pg_dump_test_x64.exe als pg_dump.exe nach c:\Program Files\PostgreSQL\9.5\bin\.
Wenn die Test-Exe dann nicht abschmiert, hakt es an einer Stelle, an der ich bestenfalls noch mit Teamviewer weiterhelfen könnte.
Teste mal alle Buttons durch und melde dich dann wieder...
PostgreSQL_DUMP.au3
AutoIt
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Compile_Both=y
#AutoIt3Wrapper_UseX64=y
#AutoIt3Wrapper_Change2CUI=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#Region ;************ Includes ************
#include <Array.au3>
#Include <EditConstants.au3>
#Include <GUIConstantsEx.au3>
#include <Date.au3>
#include <File.au3>
#include <WinAPIMisc.au3>
#EndRegion ;************ Includes ************
;-- TIME_STAMP 2016-08-09 23:09:22
Opt('MustDeclareVars', 1)
#Region - ;************ GUI Create **********
GUICreate('Backup', 1280, 360)
Local $idButton_DirC = GUICtrlCreateButton('Inhalt von Laufwerk C: anzeigen', 10, 320, 180, 32)
Local $idButton_BackupCMD = GUICtrlCreateButton('Backup via CMD starten', 190, 320, 150, 32)
Local $idButton_BackupEXE = GUICtrlCreateButton('Backup via EXE starten', 340, 320, 150, 32)
Local $idButton_VLC = GUICtrlCreateButton('Video(s) mit VLC-Player abspielen', 490, 320, 180, 32)
Local $idButton_Exit = GUICtrlCreateButton('Programm beenden', 1050, 320, 220, 32)
Local $idEdit_Log = GUICtrlCreateEdit('', 10, 10, 1260, 300, BitOR($GUI_SS_DEFAULT_EDIT, $ES_READONLY))
GUISetState()
_WriteLog('Backup Programm Start: ', _NowDate() & ' - ' & _NowTime())
#EndRegion ;************ GUI Create **********
#Region - ;************ GUI SelectLoop ******
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE, $idButton_Exit
Exit
Case $idButton_DirC
_DirC()
Case $idButton_BackupCMD
_BackupCMD()
Case $idButton_BackupEXE
_BackupEXE()
Case $idButton_VLC
_VLC()
EndSwitch
WEnd
#EndRegion ;************ GUI SelectLoop ******
Exit
Func _DirC()
_WriteLog('Inhalt von Laufwerk ', 'C: anzeigen...')
Local $iPID = Run(@ComSpec & " /c " & "Dir C:", "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
_WriteOutputToLog($iPID)
EndFunc
Func _BackupCMD()
; Passwort in Umgebungsvariable für PostgreSQL setzen - Paswort evtl. korrigieren
EnvSet('PGPASSWORD', '12345')
EnvUpdate()
Local $sPG_DUMP = "C:\Program Files\PostgreSQL\9.5\bin\pg_dump.exe"
Local $sFileName = "c:\asv\sicherung\asv_" & StringReplace(_NowCalcDate(), '/', '_') & ".backup"
Local $sPARAMETER = '--host localhost --port 5432 --username postgres --no-password --format custom --blobs --verbose --file'
Local $sCMD = StringFormat('%s %s %s"%s" %s "%s" %s%s', @ComSpec, "/c", '"', $sPG_DUMP, $sPARAMETER, $sFileName, 'asv', '"')
_WriteLog('Backup Befehl via CMD: ', $sCMD)
;Return
If FileExists($sPG_DUMP) = 0 Then
_WriteLog('Fatal Error: ', 'Das Program ' & $sPG_DUMP & ' konnte nicht gefunden werden!')
Return SetError(1, 0, $sPG_DUMP)
EndIf
;Return
Local $iPID = Run($sCMD, '', @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
_WriteLog('PG_DUMP.EXE wurde gestartet - ', '$iPID = ' & $iPID)
_WriteOutputToLog($iPID)
; Umgebungsvariable für PostgreSQL wieder löschen
EnvSet('PGPASSWORD')
EndFunc
Func _BackupEXE()
; Passwort in Umgebungsvariable für PostgreSQL setzen - Paswort evtl. korrigieren
EnvSet('PGPASSWORD', '12345')
EnvUpdate()
Local $sPG_DUMP = "C:\Program Files\PostgreSQL\9.5\bin\pg_dump.exe"
Local $sFileName = "c:\asv\sicherung\asv_" & StringReplace(_NowCalcDate(), '/', '_') & ".backup"
Local $sPARAMETER = '--host localhost --port 5432 --username postgres --no-password --format custom --blobs --verbose --file'
Local $sCMD = StringFormat('"%s" %s "%s" %s', $sPG_DUMP, $sPARAMETER, $sFileName, 'asv')
_WriteLog('Backup Befehl via EXE: ', $sCMD)
;Return
If FileExists($sPG_DUMP) = 0 Then
_WriteLog('Fatal Error: ', 'Das Program ' & $sPG_DUMP & ' konnte nicht gefunden werden!')
Return SetError(1, 0, $sPG_DUMP)
EndIf
;Return
Local $iPID = Run($sCMD, '', @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
_WriteLog('PG_DUMP.EXE wurde gestartet - ', '$iPID = ' & $iPID)
_WriteOutputToLog($iPID)
; Umgebungsvariable für PostgreSQL wieder löschen
EnvSet('PGPASSWORD')
EndFunc
Func _VLC()
; Video-Datei(en) (auch in ISO/ZIP/RAR/7z gepackte) mit VLC abspielen
Local $sVLC = "C:\Program Files\VideoLAN\VLC\vlc.exe"
If FileExists($sVLC) = 0 Then
_WriteLog('Fatal Error: ', 'Das Program ' & $sVLC & ' konnte nicht gefunden werden!')
Return SetError(1, 0, $sVLC)
EndIf
; Look for video files
Local $sVideoExt = 'Videos (*.mpv;*.mpg;*.mpeg;*.mov;*.divx;*.wmv;*.vob;*.img;*.flv;*.qt;*.ram;*.ras;*.rm;*.rmvb;*.rp;*.rpl;*.rt;*.asf;*.swf;*.rmvb;*.ts;*.m1v;*.m2v;*.fbr;*.webm;*.3gp;*part01.rar;*.rar;*.mkv;*.avi;*.mp4;*.img;*.iso;*.IFO)'
Local $sVideoFiles = FileOpenDialog('Video-Dateien auswählen', @DesktopDir, $sVideoExt, $FD_FILEMUSTEXIST + $FD_PATHMUSTEXIST + $FD_MULTISELECT)
If @error Then
MsgBox($MB_SYSTEMMODAL, "Ooops!", "No video files found/selected")
Return SetError(1, '', "No video files found/selected")
EndIf
; Wurde mehrere Video-Dateien ausgewählt?
If StringInStr($sVideoFiles, '|') Then
ConsoleWrite("@@ Debug line" & @TAB & @ScriptLineNumber & " var: $sVideoFiles --> " & $sVideoFiles & @LF)
Local $aArray = StringSplit($sVideoFiles, '|')
Else
ConsoleWrite("@@ Debug line" & @TAB & @ScriptLineNumber & " var: $sVideoFiles --> " & $sVideoFiles & @LF)
Local $aArray[3] = [1]
Local $iPos = StringInStr($sVideoFiles, '\', 0, -1)
$aArray[1] = StringMid($sVideoFiles, 1, $iPos -1) ; Pfadname
$aArray[2] = StringMid($sVideoFiles, $iPos +1) ; Video-Datei
EndIf
;_ArrayDisplay($aArray, '$aArray')
;Exit
; $aArray[0] = Counter, $aArray[1] = Pfadname, $aArray[2] - $aArray[n] = Video-Dateien
Local $sFileName = ''
For $i = 2 To UBound($aArray) -1 Step 1
$sFileName = $aArray[1] & '\' & $aArray[$i]
Local $sCMD = StringFormat('%s %s %s"%s" %s "%s"%s', @ComSpec, "/c", '"', $sVLC, "-Idummy --play-and-exit --fullscreen --no-sub-autodetect-file", $sFileName, '"')
_WriteLog('VLC palying now: ', $sFileName)
Local $iPID = Run($sCMD, '', @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
_WriteLog('VLC-Player wurde gestartet - ', '$iPID = ' & $iPID)
_WriteOutputToLog($iPID)
Next
EndFunc
Func _WriteOutputToLog($iPID)
Local $sOutput = ""
While 1
$sOutput = StdoutRead($iPID)
If @error Then ; Exit the loop if the process closes or StdoutRead returns an error.
ExitLoop
EndIf
_WriteLog('Stdout Read: ', $sOutput)
WEnd
While 1
$sOutput = StderrRead($iPID)
If @error Then ; Exit the loop if the process closes or StderrRead returns an error.
ExitLoop
EndIf
_WriteLog('Stderr Read: ', $sOutput)
WEnd
EndFunc
Func _WriteLog($sPrefix, $sText)
If $sText = '' Then Return
Local $aASCII = ['ä', 'ö', 'ü', 'Ä', 'Ö', 'Ü', 'ß']
For $i = 0 To UBound($aASCII) -1
If StringInStr($sText, $aASCII[$i]) Then
GUICtrlSetData($idEdit_Log, $sPrefix & $sText & @CRLF, 1)
Return
EndIf
Next
GUICtrlSetData($idEdit_Log, $sPrefix & _WinAPI_OemToChar($sText) & @CRLF, 1)
EndFunc
Alles anzeigen
pg_dump_test.au3 (Test-Script)
AutoIt
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Compile_Both=y
#AutoIt3Wrapper_UseX64=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
;-- TIME_STAMP 2016-08-09 22:50:05
; PostgreSQL\9.5\bin\pg_dump.exe
Local $sBefehl = ''
For $i = 1 To UBound($CMDLINE) -1 Step 1
$sBefehl &= $CMDLINE[$i] & @CRLF
Next
MsgBox(0, 'pg_dump.exe', $sBefehl)
ConsoleWrite($sBefehl & @CRLF)
Alles anzeigen