Version Checken

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 56 Antworten in diesem Thema. Der letzte Beitrag () ist von seh.

    Saphira104 schrieb:

    Laufen tut es dennoch nicht
    Bitte gewöhne Dir für die Zukunft hier im Forum an, immer detaillierte Fehlerberichte abzugeben bzw. zu beschreiben, was nicht funktioniert. So kann Dir keiner helfen, da nicht klar ist, was das Problem ist. Diese zwei Zeilen reichen aus, allerdings sollte da kein Komma zwischen die Aufrufe, sondern ein Punkt, da ShowUserInterface eine Methode von UpdaterUI ist.

    Saphira104 schrieb:

    wie gesagt bevor ich hier weiter nachfrage und noch mehr c&p mache
    werde ich es sein lassen.
    Halte ich für sinnvoll. Es fällt halt schon auf, dass Dir noch alle Grundlagen fehlen (nicht böse gemeint) und die setze ich eigentlich voraus, wenn man (m)eine Library einbinden möchte. ;)
    Musst Du wissen, aber ist denke ich wirklich besser, weil man sich schon etwas reinfuchsen muss und das System vollkommen verstanden haben muss, um es routiniert zu nutzen. Außerdem halte ich einen Updater in Deiner Anwendung nicht unbedingt für nötig. Will das jetzt nicht aus der Ferne beurteilen, aber scheint ja auch nichts all zu großes zu sein, oder?

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Kein Problem.

    Nochmals kurz dem dem Interface wegen dem Komma ohne Punkt wird eine end of anweisung erwartet.


    Schön wäre es mit Updater da ich ein Login für das Forum habe wo sich auch dinge ändern und ich verhindern will das User das "alte" programm nutzen.

    Per Webdownload und Textbox Check mit version wolte ich verhindern.
    Da soll ja auch kein Komma hin. Was soll das Komma machen? Das ist keine gültige Syntax. Nochmal: Ein Punkt dazwischen, da das eine normale Methode vom UpdaterUI ist.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Danke nochmals und es funktioniert endlich :)

    VB.NET-Quellcode

    1. Dim updaterUI As New UpdaterUi(manager, SynchronizationContext.Current)
    2. updaterUI.ShowUserInterface()



    Und es läuft perfekt :)

    Ist es jetzt noch möglich die Form zu sperren wenn eine Neue version verfügbar ist? d.h. das man erst Das neue laden muss ansonsten ist Button1.hide()

    Wolte zwar die .dll einbinden (mit credits ist ja logisch) aber funktioniert nicht ganz werde dann mal projekt alles auf 64bit umstellen habe gesehn ist noch x86 durch VB.net

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

    So das ganze habe ich nun getestet :)

    Laufen tut es soweit Prima !

    Was mir derzeit noch Fragen aufwürft ist :

    - Ist es möglich per If ... zu Testen sobal ein Update verfügbar ist das der Button1.hide() ist?

    - Derzeit Läd es es das ganze herunter schließt kurz meine Form und öffnet die Selbe form wieder aber nicht die Geupdatedte ?!

    - Die DLL einzubinden funktioniert irgendwie nicht fehlerfrei.

    Fehler BC31541 Ein Verweis auf die UpdateManager-Klasse ist nicht zulässig, wenn in der Assembly die Einbettung von Interoptypen konfiguriert ist.

    Saphira104 schrieb:

    Ist es möglich per If ... zu Testen sobal ein Update verfügbar ist das der Button1.hide() ist?
    Ja, schau Dir dazu die ​UpdateManager-Klasse und die SearchForUpdates-Methoden an.

    Saphira104 schrieb:

    Derzeit Läd es es das ganze herunter schließt kurz meine Form und öffnet die Selbe form wieder aber nicht die Geupdatedte ?!
    Dann hast Du wohl die alte Version in das Updatepaket gepackt und nicht die aktualisierte. Prüfe das bitte nochmal.

    Saphira104 schrieb:

    Ein Verweis auf die UpdateManager-Klasse ist nicht zulässig, wenn in der Assembly die Einbettung von Interoptypen konfiguriert ist.
    Das habe ich noch nie gesehen. Hast schon mal einfaches "Neu Erstellen" versucht?

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Neu erstellt auch schon.

    Nochmal zum Fehler :
    Fehler BC31553 Aus Assembly "nUpdate.WithoutTAP, Version=3.2.0.0, Culture=neutral, PublicKeyToken=null" können keine Interoptypen eingebettet werden, da entweder das System.Runtime.InteropServices.ImportedFromTypeLibAttribute-Attribut oder das System.Runtime.InteropServices.PrimaryInteropAssemblyAttribute-Attribut fehlt.

    Verweise sind drin .

    __

    habe mir das Angeschaut von deiner Seite .

    Ich finde ja OnUpdateSearchFinish als Methoden nur wie man sie nutz weis ich leider noch nicht.
    stackoverflow.com/questions/39…terop-types-from-assembly
    Hab da mal geschaut. Installiere nUpdate einfach nochmal neu. Eventuell geht es ja dann.

    Saphira104 schrieb:

    Ich finde ja OnUpdateSearchFinish als Methoden nur wie man sie nutz weis ich leider noch nicht.
    Das ist jetzt auch eigentlich der Punkt, an dem ich voraussetze, dass bekannt ist, wie Events und Eventhandler in VB.NET benutzt werden. Mach mal sowas in der Form:

    VB.NET-Quellcode

    1. Public Sub DoSomething()
    2. AddHandler updateManager.UpdateSearchFinished, AddressOf SearchFinished
    3. updateManager.SearchForUpdatesAsync()
    4. End Sub
    5. Public Sub SearchFinished(sender As Object, e As UpdateSearchFinishedEventArgs)
    6. If e.UpdatesAvailable Then Button1.Hide() ' Irgendwie so halt
    7. End Sub


    Wegen Multithreading musst halt selbst schauen, ob Du da noch WaitHandles benötigst oder so.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    VB.NET-Quellcode

    1. Dim result As String = ""
    2. Dim version As String = Application.ProductVersion
    3. Dim wb As New WebBrowser
    4. wb.Navigate("http://www.example.com/version.php")
    5. result = wb.DocumentText
    6. If version = result Then
    7. MessageBox.Show("Keine neuen Updates!")
    8. Else
    9. MessageBox.Show("Update vorhanden!")
    10. Button1.Hide()
    11. End If


    Getestet und Funktioniert!
    @CodingCore in jedem Fall sehr unsauber programmiert. Dafür einen WebBrowser zu benutzen ist overkill. ;) Für sowas benutzt man wenn dann normale Requests.
    Auch ist damit Dein Versionierungssystem äußerst unflexibel und die weiteren Probleme (Verifizierung der Updates etc.) bleiben ja bestehen. Und wenn die Version in der PHP-Datei niedriger ist als die aktuelle, findet das Teil auch Updates. "1.0" und "1.0.0" wäre damit btw auch nicht dasselbe, obwohl das ja eigentlich so ist. So also bitte nicht. ;)

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Ich muss nochmal was los werden was ich bis jetzt noch nicht hinbekommen habe .

    Wie kann ich die .dll in das Projekt einbinden also in die Anwendung .exe ?
    Ich habe nun Interoption ausprobiert auch habe ich den Updater mit VS 2017 mit einen neuen Projekt ausprobiert.

    Spoiler anzeigen

    Quellcode

    1. Fehler BC31541 Ein Verweis auf die UpdaterUI-Klasse ist nicht zulässig, wenn in der Assembly die Einbettung von Interoptypen konfiguriert ist.
    2. Fehler BC31541 Ein Verweis auf die UpdateVersion-Klasse ist nicht zulässig, wenn in der Assembly die Einbettung von Interoptypen konfiguriert ist.
    3. Fehler BC31541 Ein Verweis auf die UpdateManager-Klasse ist nicht zulässig, wenn in der Assembly die Einbettung von Interoptypen konfiguriert ist.
    4. Fehler BC31553 Aus Assembly "nUpdate.WithoutTAP, Version=3.2.0.0, Culture=neutral, PublicKeyToken=null" können keine Interoptypen eingebettet werden, da entweder das System.Runtime.InteropServices.ImportedFromTypeLibAttribute-Attribut oder das System.Runtime.InteropServices.PrimaryInteropAssemblyAttribute-Attribut fehlt.


    Ich habe auch schon alles Importiert :

    Imports System.Runtime.InteropServices
    Imports System.Runtime.InteropServices.ImportedFromTypeLibAttribute
    Imports System.Runtime.InteropServices.PrimaryInteropAssemblyAttribute

    Dennoch wie bindet man die .dll ein?

    Auch erstellt mein Projekt eine .config durch Newtonsoft.Json und ohne Die Crasht nUpdate.
    Womöglich handelt es sich dabei um COM-Interop, aber kA. Hast Du das in Deinen Projekteinstellungen aktiviert? Bei nUpdate ist das nämlich nicht der Fall und eventuell kommt daher der Fehler.
    Ist aber nur eine Vermutung, weil ich von dem Zeugs wenig Ahnung habe.

    Saphira104 schrieb:

    Auch erstellt mein Projekt eine .config durch Newtonsoft.Json und ohne Die Crasht nUpdate.
    Ja, möglich. Aber das macht ja nichts. Die kann man ja mitliefern. ;)

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Habe heute nochmal genau getestet alles :)

    ILmerge und es klappt 100% :)
    Nun muss ich nur noch herausfinden woran ich schon 3 tage grübel mit dem Update wenn Update vorhanden ist das endweder mein Button zum Login verschwindet oder die Form erst garnicht aufgeht .
    Oder ist es auch möglich das Update zu erzwingen das es automatisch geht?
    Du weißt aber schon, dass Du nicht einfach irgendwas einkompilieren darfst, sondern erst die Erlaubnis der Autoren brauchst?
    Vor allem, lass das Merging doch weg. Was soll das für einen Sinn haben?

    Das mit dem Button etc. habe ich Piew-Keks im nUpdate-Thread beantwortet, wie das klappt. ;)

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!: