ThuCommix.UpdateServices - Dein Intelligentes UpdateSystem 1.3.0.0

    • Beta

    Es gibt 488 Antworten in diesem Thema. Der letzte Beitrag () ist von Trade.

      ThuCommix.UpdateServices - Dein Intelligentes UpdateSystem 1.3.0.0

      Willkommen bei ThuCommix.UpdateServices,

      Aufgrund der Anfälligkeit von SmartUpdate hab ich mich nochmal ran gesetzt und ein völlig neues Projekt geschrieben. Ich habe auf viele Extras verzichtet, da diese Bibliothek schnell und einfach zu benutzen sein soll.














      Um zu funktionieren greift die Lib, auf ein "Register" auf eurem Server zu, in diesem stehen dann relevante Informationen zu dem aktuellen Updatepaket. Der Aufbau ist folgender:

      - Link zu der Updatezip
      - Version des Updates
      - Md5 Hash (Klein, ohne Bindestriche)
      - Link zum Changelog

      Beispiel Register Datei




      Der Quellcode ist denkbar einfach:

      VB.NET-Quellcode

      1. Dim updateProvider = New UpdateProvider()
      2. updateProvider.ApplicationVersion = New Version("0.900.000")
      3. updateProvider.UpdateDirectory = "http://www.thucommix.de/project/thucommix.updateservices/test" ' Ordner in dem die Register Datei liegt
      4. updateProvider.RegisterIndexName = "updateregister.txt" 'Name der Register Datei
      5. updateProvider.Start()





      Informationen:

      • Erstellt mit Visual Studio 2012
      • Framework 4.5

      Downloads:

      ThuCommix.UpdateServices 1.3.0.0

      -> Neuere Version siehe Anhang.



      Ihr könnt weiterhin gerne Anregungen schreiben :)
      Dateien

      Dieser Beitrag wurde bereits 69 mal editiert, zuletzt von „ThuCommix“ ()

      Dankeschön, :)
      Endlich mal einen einfachen Updater, ohne viel Schnick Schnack.

      Ein Vorschlag wäre noch also ein Update Intervall, z.B. alle paar Tage, Wochen oder auch Monate. ;)

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

      Eine Frage:
      CrypticUpdate.Update.UpdateInformationUrl = "http://crypticforce.square7.ch/other/TestCenter/info.txt" 'Txtdatei in der die Version in der ersten Zeile steht

      Bei dir auf dem Server ist in der Datei ja nur die Versioninfo kann man aber auch einen Changelog einbauen?

      Wenn das nicht geht wäre mein Verbesserungsvorschlag einen Changelog einzubauen, evtl. auch den Namen des Programmes weil manche User kommen durcheinander nicht das Sie denken das Programm Cryptic will sich updaten. Verstehst du wie ich das meine?

      Wenn du die beiden Verbesserungen/Features eingebaut hast werde ich mir den Updater mal herunterladen und ausführlich testen, aber gerade hocke ich an Ubuntu ;)

      Mfg
      Das mit den Changelog werde ich machen Cryptic Update war nur weil ich die Property CrypticUpdate.Update.UpdateSystenName auf Cryptic Update gesetzt habe, nennst du sie domipoppe, steht da als Text Domipoppe.


      Grüße


      Edit:
      // Es gibt allerdings ein Problem, wo soll ich diese Extra Informationen ausgeben? Ist ja nicht mehr viel Platz übrig
      // Hmm, ich weiß leider nicht wie ich das sinvoll integrieren soll.

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

      du könntest so eine art expander machen, dass die form erweitert wird und dort der text steht.
      ansonsten könntest du auch einfach einen button nehmen und eine extra-form öffnen, in der der changelog zu lesen ist.
      sonst auch eine gute hilfe!
      Ok ich hab das vorgeschlagene Umgesetzt das sieht nun so aus:





      Der gesamte Zusatz Text befindet sich in der info.txt unter der versionszeile (Also neue Zeile). Falls diese Info nicht verfügbar ist, erscheint der Expander nicht.


      Grüße
      Wow, das ging ja fix, danke :)
      Ach und das mit wann er Updates machen soll hab ich auch hingekriegt ^^

      Edit: Ach vielleicht eine möglichkeit zum einstellen ob z.B. das prüfen der Updates versteckt gemacht werden soll, und falls es dann ein Update gibt, die Form geöffnet wird!? ;) (Ich denke an einen Booleschen Wert). :)

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

      Hab diese Funktion intigriert:

      VB.NET-Quellcode

      1. If CrypticUpdate.Update.HiddenUpdateSearch = True Then
      2. 'Update verfügbar
      3. Else
      4. 'Update nicht verfügbar
      5. End If


      Gibt es sonst noch Vorschläge und Wünsche? :)


      Grüße

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

      Erneut ein dickes fettes danke. :)

      Öhm, also ich habe ihm moment nichts, ich lass dich wissen, wenn mir etwas einfällt. ;)

      Edit: Fehler entdeckt. :S

      Wenn ich

      VB.NET-Quellcode

      1. CrypticUpdate.Update.HiddenUpdateSearch = True

      eingebe, kommt:

      Fehler 1
      Der Ausdruck ist ein Wert und kann nicht als Ziel einer Zuweisung verwendet werden.

      und wenn ich dann

      VB.NET-Quellcode

      1. CrypticUpdate.Update.HiddenUpdateSearch(True)

      versuche, kommt dann:


      Fehler 1
      Zu viele Argumente für "Public Shared Function HiddenUpdateSearch() As Object.


      Edit 2:

      Wenn ich dein Beispiel versuche kommt das hier raus... ;)

      Fehler 1
      "Option Strict On" lässt Operanden des Typs "Object" für den =-Operator nicht zu. Verwenden Sie den Is-Operator, wenn Sie die Objektidentität testen möchten.

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Mapag“ ()

      Das liegt daran, das HiddenUpdateSearch eine Funktion ist, und einen Wert zurückliefert, wenn du sie also aufrufst, liefert sie True zurück, wenn ein Update verfügbar ist und False wenn nicht.

      VB.NET-Quellcode

      1. If HiddenUpdateSearch = True then
      2. Msgbox("Updates verfügbar")
      3. Else
      4. Msgbox("Keine Updates verfügbar")
      5. End If


      VB.NET-Quellcode

      1. InvokeHiddenUpdate()



      Grüße

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

      Dann muss ich aber dennoch Option Strict Deaktivieren, nur dann geht es. :/

      Weil sonst kommt immer noch der Fehler:

      Fehler 1
      "Option Strict On" lässt Operanden des Typs "Object" für den =-Operator nicht zu. Verwenden Sie den Is-Operator, wenn Sie die Objektidentität testen möchten.

      EDIT: Beim ausführen dann: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt. ^^ I'm confused...

      Tut mir leid das ich so viel poste. :/

      Und meine Idee war so gemeint, das nur die Update Form versteckt ist, d.h. falls es ein neues Update gibt erscheint dann die Form. ^^
      Ist aber ja auch so okay. :)
      Das liegt dann aber nicht an meiner Funktion, es muss nur anders aufgerufen werden, ich weiß nur grad nicht wie, frag am besten mal im Grundlagen Forum.


      Grüße


      //Achso, ok mach ich

      //Erledigt

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

      Ich gebe es auf... verwende ich eben die Normale Form. ^^

      Es kommt ein schöner Error:

      Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.


      Spoiler anzeigen
      nformationen über das Aufrufen von JIT-Debuggen
      anstelle dieses Dialogfelds finden Sie am Ende dieser Meldung.


      ************** Ausnahmetext **************
      System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
      bei CrypticUpdate.Update.InvokeHiddenSearch() in C:\Users\Kevin\Documents\Visual Studio 2008\Projects\CrypticUpdate\CrypticUpdate\Class1.vb:Zeile 262.
      bei WindowsApplication1.Form1.Button3_Click(Object sender, EventArgs e)
      bei System.Windows.Forms.Control.OnClick(EventArgs e)
      bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
      bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
      bei System.Windows.Forms.Control.WndProc(Message& m)
      bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
      bei System.Windows.Forms.Button.WndProc(Message& m)
      bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
      bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


      ************** Geladene Assemblys **************
      mscorlib
      Assembly-Version: 2.0.0.0.
      Win32-Version: 2.0.50727.4961 (win7RTMGDR.050727-4900).
      CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll.
      ----------------------------------------
      mscorlib.resources
      Assembly-Version: 2.0.0.0.
      Win32-Version: 2.0.50727.4961 (win7RTMGDR.050727-4900).
      CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll.
      ----------------------------------------
      Testi
      Assembly-Version: 1.0.0.0.
      Win32-Version: 1.0.0.0.
      CodeBase: file:///C:/Users/XDown/Downloads/Software/Tools/Programmierung/Test/Testi/Testi/bin/Release/Testi.EXE.
      ----------------------------------------
      Microsoft.VisualBasic
      Assembly-Version: 8.0.0.0.
      Win32-Version: 8.0.50727.4927 (NetFXspW7.050727-4900).
      CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll.
      ----------------------------------------
      System
      Assembly-Version: 2.0.0.0.
      Win32-Version: 2.0.50727.4957 (win7RTMGDR.050727-4900).
      CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll.
      ----------------------------------------
      System.Windows.Forms
      Assembly-Version: 2.0.0.0.
      Win32-Version: 2.0.50727.4961 (win7RTMGDR.050727-4900).
      CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll.
      ----------------------------------------
      System.Drawing
      Assembly-Version: 2.0.0.0.
      Win32-Version: 2.0.50727.4927 (NetFXspW7.050727-4900).
      CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll.
      ----------------------------------------
      System.Configuration
      Assembly-Version: 2.0.0.0.
      Win32-Version: 2.0.50727.4927 (NetFXspW7.050727-4900).
      CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll.
      ----------------------------------------
      System.Xml
      Assembly-Version: 2.0.0.0.
      Win32-Version: 2.0.50727.4927 (NetFXspW7.050727-4900).
      CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll.
      ----------------------------------------
      System.Runtime.Remoting
      Assembly-Version: 2.0.0.0.
      Win32-Version: 2.0.50727.4927 (NetFXspW7.050727-4900).
      CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Runtime.Remoting/2.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll.
      ----------------------------------------
      CrypticUpdate
      Assembly-Version: 1.0.0.0.
      Win32-Version: 1.0.0.0.
      CodeBase: file:///C:/Users/XDown/Downloads/Software/Tools/Programmierung/Test/Testi/Testi/bin/Release/CrypticUpdate.DLL.
      ----------------------------------------
      System.Windows.Forms.resources
      Assembly-Version: 2.0.0.0.
      Win32-Version: 2.0.50727.4927 (NetFXspW7.050727-4900).
      CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_de_b77a5c561934e089/System.Windows.Forms.resources.dll.
      ----------------------------------------

      ************** JIT-Debuggen **************
      Um das JIT-Debuggen (Just-In-Time) zu aktivieren, muss in der
      Konfigurationsdatei der Anwendung oder des Computers
      (machine.config) der jitDebugging-Wert im Abschnitt system.windows.forms festgelegt werden.
      Die Anwendung muss mit aktiviertem Debuggen kompiliert werden.

      Zum Beispiel:

      <configuration>
      <system.windows.forms jitDebugging="true" />
      </configuration>

      Wenn das JIT-Debuggen aktiviert ist, werden alle nicht behandelten
      Ausnahmen an den JIT-Debugger gesendet, der auf dem
      Computer registriert ist, und nicht in diesem Dialogfeld behandelt.



      Du heißt ja genauso wie mein Bruder. :D
      Auch mal nen schönes und nützliches Tool ;)
      Werds zwar nicht nutzen und habs zwar nicht getestet, aber mir persönlich würde es so besser gefallen:
      Man hat eine PHP Datei auf dem Server, über diese werden die Dateien auf dem PC mit denen auf dem Server verglichen und anschließend abgeglichen, so muss man die neuen Dateien jedes mal lediglich Hochladen, der Rest funktioniert von alleine ;)

      (So hab ich es bei meinem auch gemacht :P)
      Ich wollte auch mal ne total überflüssige Signatur:
      ---Leer---