Hallo zusammen,
habe eine Internet-Update Funktion in mein Programm intehriert. Hab alles genau so gemacht wie im Workshop. Die Versionsprüfung wird tadellos durchgeführt und die Datei auch heruntergeladen.
Nur während des Downloadprozesses hab ich 100% Prozessorlast. Der Fortschrittsbalken (picProgress) und die geladenen Bytes (lblStatus) bleiben bei 3% stehen.. dann passiert nix (download läuft aber im Hintergrund weiter).. Fortschritt geht sprunghaft auf 31% und bleibt dann bis zum Ende stehen. Die Datei wird auch nicht bis zum Ende heruntergeladen. Es fehlen etwa 26kb .. trotzdem wird das finished() ereignis ausgelöst....
woran könnte es liegen?
hier der relevante code des forms... der code der active-x .dll entspricht zu 100% dem original aus dem Workshop
Private Sub VersionDownload_Finished()
' aktuelle Version auslesen
sNewVersion = TextRead(App.Path & "\" & sCurrentVersion)
' downgeloadete Versionsdatei löschen
Kill App.Path & "\" & sCurrentVersion
' aktuelle Version im Label anzeigen
lblCurrent.Caption = "Version auf Server: " & sNewVersion
' Objekt löschen
Set VersionDownload = Nothing
' Wenn Version keine Zahl, dann ist was faul
If Not IsNumeric(sNewVersion) Then
MsgBox "Ungültige Datei auf Server!", vbCritical
Else
' Ansonsten überprüfen, ob die neue Version als Zahl größer ist, als die
' Alte...
If IsNewVersion(sNewVersion, lblLocal.Tag) Then
' Sie ist es, und nun fragen wir den User, ob er updaten will
If MsgBox("Neue Version verfügbar!" & vbCrLf & "Downloaden?", vbYesNo) = _
vbYes Then
' Ja, also Objekt instanzieren und downloaden
Set FileDownload = New clsDownload
If FileDownload.DoDownload(sDomain & App.EXEName & ".exe", App.Path & _
"\" & App.EXEName & ".e32") = True Then
EnableContainer FRM_SETUP, FrameDl, False
cmdAbortDl.Enabled = True
cmdAbort.Enabled = False
cmdOK.Enabled = False
cmdApply.Enabled = False
Else
Set FileDownload = Nothing
Screen.MousePointer = vbDefault
End If
End If
Else
' kein Update vorhanden...
MsgBox "Keine neue Programmversion verfügbar"
End If
End If
' Maus zurücksetzen
Screen.MousePointer = vbDefault
End Sub ' Download-Fortschritt
Private Sub FileDownload_Progress(ByVal BytesLoaded As Long, ByVal FileSize As _
Long)
lblStatus.Caption = CStr(BytesLoaded) & " von " & _
CStr(FileSize) & " Bytes"
ShowProgress picProgress, BytesLoaded, 0, FileSize
End Sub ' Fortschritsanzeige
Private Sub ShowProgress(picProgress As PictureBox, _
ByVal Value As Long, _
ByVal Min As Long, _
ByVal Max As Long, _
Optional ByVal bShowProzent As Boolean = True)
Dim pWidth As Long
Dim intProz As Integer
Dim strProz As String
' Farben
Const progBackColor = &HC00000
Const progForeColor = vbBlack
Const progForeColorHighlight = vbWhite
' Plausibilitätsprüfungen
If Value < Min Then Value = Min
If Value > Max Then Value = Max
' Prozentwert ausrechnen
If Max > 0 Then
intProz = Int(Value / Max * 100 + 0.5)
Else
intProz = 100
End If
With picProgress
' Prüfen, ob AutoReadraw=True
If .AutoRedraw = False Then .AutoRedraw = True
' Inhalt löschen
picProgress.Cls
If Value > 0 Then
' Balkenbreite
pWidth = .ScaleWidth / 100 * intProz
' Balken anzeigen
picProgress.Line (0, 0)-(pWidth, .ScaleHeight), _
progBackColor, BF
' Prozentanzeige
If bShowProzent Then
strProz = CStr(intProz) & " %"
.CurrentX = (.ScaleWidth - .TextWidth(strProz)) / 2
.CurrentY = (.ScaleHeight - .TextHeight(strProz)) / 2
' Vordergrundfarbe
If pWidth >= .CurrentX Then
.ForeColor = progForeColorHighlight
Else
.ForeColor = progForeColor
End If
picProgress.Print strProz
End If
End If
End With
End Sub ' Ist der Download beendet,
' MsgBox anzeigen und die Batch-Datei erstellen...
Private Sub FileDownload_Finished()
MsgBox "Download fertig gestellt! Deponie v2 wird nun beendet."
Screen.MousePointer = vbDefault
Set FileDownload = Nothing
Call CreateBatch(App.Path & "\" & App.EXEName & ".e32", App.Path & "\" & _
App.EXEName & ".exe")
EnableContainer FRM_SETUP, FrameDl, False
cmdAbortDl.Enabled = True
cmdAbort.Enabled = False
cmdOK.Enabled = False
cmdApply.Enabled = False
'Fenster schließen und Update Status an MDI Container übergeben
END_APP_UPDATE = True
Unload Me
Exit Sub
End Sub Vielleicht hat jemand eine Idee.. auf jeden Fall schonmal Danke
mfg
LE-Tarantino |