Aktuellen Fortschritt anzeigen lassen (Komprimierung mit WiX-Assemblies)

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Dwargh.

    Aktuellen Fortschritt anzeigen lassen (Komprimierung mit WiX-Assemblies)

    Hi Leute! :D

    Ich würde gerne eine progressbar dazu nutzen, um anzuzeigen, wie weit schon gepackt wurde.

    Der Parameter

    VB.NET-Quellcode

    1. progressHandler as Eventhandler(of ArchiveProgressEventArgs)

    der Funktion

    VB.NET-Quellcode

    1. PackFiles
    soll sowas ermöglichen, habe ich gelesen.

    Nun habe ich rumprobiert, die Doku abgesucht (WiX.chm und co.), gegoogelt und gemacht und getan.
    Ich bin mit meinem Latein am Ende, oder ich sehe den Wald vor lauter Bäumen nicht...
    Zustande gebracht habe ich das ungefähr so:

    VB.NET-Quellcode

    1. ' Deklaration des Events über den Delegaten EventHandler
    2. Private OnProgress As EventHandler(Of ArchiveProgressEventArgs)
    3. Private Sub Packen ()
    4. ' [...]
    5. ZipInfoInstanz.PackFiles(ZipFilePath, Dateien, PfadeInZipDatei(Dateien, ZipFilePath), _
    6. KompressionsRate, CompressionProgress(Me,???))
    7. ' [...]
    8. End Sub
    9. ' Hoffe, ich verwende das richtig... IntelliSense zeigte mir ja alles nötige an...
    10. Private Sub CompressionProgress(ByVal src As Object, ByVal pea As ArchiveProgressEventArgs)
    11. Dim msg As String = String.Empty
    12. msg &= pea.CurrentArchiveBytesProcessed & Environment.NewLine
    13. msg &= pea.CurrentArchiveName & Environment.NewLine
    14. msg &= pea.CurrentArchiveNumber & Environment.NewLine
    15. msg &= pea.CurrentArchiveTotalBytes & Environment.NewLine
    16. msg &= pea.CurrentFileBytesProcessed & Environment.NewLine
    17. msg &= pea.CurrentFileName & Environment.NewLine
    18. msg &= pea.CurrentFileNumber & Environment.NewLine
    19. msg &= pea.CurrentFileTotalBytes & Environment.NewLine
    20. msg &= pea.FileBytesProcessed & Environment.NewLine
    21. msg &= pea.ProgressType & Environment.NewLine
    22. msg &= pea.TotalArchives & Environment.NewLine
    23. msg &= pea.TotalFileBytes & Environment.NewLine
    24. msg &= pea.TotalFiles & Environment.NewLine
    25. Label1.Text = msg
    26. End Sub


    So, nun weiß ich beim besten Willen nicht, was ich bei ??? hinschreiben soll!

    Endprodukt:
    Ich will in Zahlen, oder von mir aus auch als ProgressBar angezeigt bekommen,
    wie der aktuelle Fortschritt ist.

    Kann mir da jemand helfen?
    Ich wäre wirklich dankbar für Hinweise, die zur Ergreifung der Lösung führen! :thumbsup:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Dwargh“ ()

    Setz da einen Haltepunkt rein und sieh Dir zur Laufzeit den Inhalt der Variablen pea an. Vielleicht ist da was zu sehen.
    Du kannst es natürlich ausprobieren, indem Du die Werte in eine Tabelle schreibst, jeder Aufruf eine neue Zeile, und dann am Ende auswerten, welcher Eintrag bei 100 gelandet ist.
    Oder ein Element heißt halt irgendwie richtig oder Du musst den Quotient aus 2en bilden.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „RodFromGermany“ ()

    Hallo und danke für Deinen Hinweis!

    Aber in die EventhandlerFunktion kam ich gar nicht erst rein!!

    Ich hab aber die Lösung gefunden:

    VB.NET-Quellcode

    1. ' Die Delegatendeklaration war schon richtig:
    2. Private OnProgress As EventHandler(Of ArchiveProgressEventArgs)
    3. ' ...
    4. Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    5. ' DAS hier fehlte:
    6. ' 1. Late Binding
    7. ' 2. (AddressOf CompressionProgress)
    8. OnProgress = New EventHandler(Of ArchiveProgressEventArgs)(AddressOf CompressionProgress)
    9. End Sub
    10. Private Sub Packen (...)
    11. ZipInfoInstanz.PackFiles(ZipFilePath, Dateien, PfadeInZipDatei(Dateien, ZipFilePath), KompressionsRate, OnProgress)
    12. End Sub


    Nochmals danke an alle, die sich Gedanken gemacht haben! :thumbsup:
    Und jetzt kommst Du ordentlich in die EventhandlerFunktion rein?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!