nUpdate - Die komfortable Updatelösung

    • Release
    • Open Source

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

      @masterm Für die Administration? Wäre eine Idee für den Registryeintrag, jo, ich überlege es mir. ^^
      @ThuCommix Sowas ist grade schon in Arbeit, das sind die Differentialupdates, die für Update 5 geplant sind. Oder meinst Du komplett nur diese Bytes?

      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 :!:
      Da sollte man aber auswählen können, ob/wie diese Methode verwendet werden soll. Also zum Beispiel alles ersetzen, egal ob sich etwas verändert hat, nurveränderte Dateien ersetzen oder veränderte Dateien teilweise ersetzen, also nur die veränderten Bytes. Letzteres könnte man weglassen, wäre aber ganz schick. Und toll wäre es, wenn bei teilweise ersetzen auch nur die Dateien heruntergeladen werden würden. Der Free Download Manager kann auch Dateien aus zip-Paketen auswählen. Man müsste das dann nur noch mit der Signatur hinbekommen.
      Alle Angaben sind ohne Gewähr, jedoch mit Pistole. Glücksspiel, Drogen und leckeres Essen können süchtig machen.

      43232069737420636f6f6c21
      Ich weiß halt nicht, inwiefern das Prüfen auf die Stellen der Veränderungen und dann das Austauschen genau dieser Stellen effizienter ist als die komplette Datei zu ersetzen, bei großen Dateien und kleinen Changes würde es sicherlich Sinn machen, aber ob es bei kleineren auch schneller ist, weiß ich eben nicht.
      Differentialupdates wird aber auf jeden Fall eingebaut, nur kann man nicht nur exakt diese Dateien downloaden, @masterm, da 1. das Paket so oder so runtergeladen werden muss, um solche Aktionen durchzführen (kann es ja nicht online entpacken) und 2. kann ich es ja nur als Ganzes laden. Die Signatur würde auch, wie Du gesagt hast, kaputtgehen, angenommen man würde einen Weg finden. Ich glaube da wäre das alles dann komplexer als es sich im Endeffekt lohnt. Sowas geht halt nur, wenn die Dateien alle einzeln auf dem Server liegen und da wollte ich mich von distanzieren und einheitliche Pakete schaffen, welche viel leichter wartbar sind.

      Sobald das aber lokal entpackt ist, kann man auf Änderungen reagieren und derartiges einbauen.
      Also ich baue gerne noch diese Art "Delta Patching" ein, das könnte man ja auch optional machen, sodass der Entwickler das selbst einschätzen kann, wann es Sinn macht und wann nicht (Größe der Dateien usw.).

      Die Konfiguration muss eh geändert werden, früher oder später, deshalb gibt es ja den Configuration Converter. :P

      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 :!:
      Nein, noch kein Update, das dauert noch ein wenig, aber auf Grund eines Vorschlags von @Luki-Progger, der mich inspiriert hat, werde ich wahrscheinlich auch noch einbauen, dass es benötigte Updates gibt, die anderen bevorzugt werden, sogar, wenn deren Version höher ist. Dann muss man als Entwickler nämlich nicht immer große Dateien in jedem Update mitliefern, sondern kann das in einem Update machen, das dann jeder zuerst installieren muss, wenn er updaten möchte.
      Feedback wäre ganz interessant, wie Ihr das fändet.

      Einen Bug konnte ich auch vorhin beheben.
      Ist also jetzt einiges hinzugekommen, wird ein recht schönes Update. :)

      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 :!:
      Hallo @Trade,
      das ist sehr erfeulich, das Du das "alte updateSystem.Net" runderneuerst!
      Sehr lobenswert, da ich eigentlich sehr zufrieden mit dem System war und traurig darüber, das es "tot" ist.
      Zumal Du das auch als OpenSource anbietest! :thumbup:

      Nun mal eine erste Frage:
      - ist denn die Übernahme der Funktionalitäten des alten updateSystem.Net geplant oder bereits realisiert?
      -> z.B. restartApp (als Admin wäre hier wichtig) um nur eines zu nennen

      MfG
      Nettes Projekt.

      Feedback
      • New Project:
        • Wieso darf man die Projekt Datei nicht von Hand verschieben? Ich finde das eine unnötige Einschränkung
        • Die Reihenfolge für den Fokus sollte beim FTP Dialog angepasst werden
        • Ein Refresh Button für die Auflistung der Ordner auf dem FTP wäre ganz nett
        • Die Möglichkeit einen Ordner auf dem FTP zu erstellen wäre auch ganz nett
        • FTP: Wenn ein Pfad angegeben wird der nicht existiert sollte dieser erst geprüft werden bevor das Projekt erstellt wird. Außerdem sollte man gefragt werden ob man diesen erstellen will, falls er nicht existiert(Derzeit bekommt man nur eine Fehlermeldung wenn man das Projekt öffnet)
        • Man kann kein Projekt mit dem selben Namen 2x erstellen, wieso? Auch das finde ich eine unnötige Einschränkung. Du solltest dir evtl. ein Beispiel an Visual Studio nehmen, was die Projekt Verwaltung angeht.
        • Wenn die Update-URL nicht mit einem / endet bekommt man diese Fehlermeldung(Copy entire message disabled).
      • Open project/Edit project:
        • Das ständige neu eingeben der Login Daten finde ich sehr störend. Hier wäre eine Option zum Speichern ganz toll.
        • Beim Öffnen des Projekts/Klicken auf "Check status" bekomm ich eine Fehlermeldung(Copy entire message ist disabled).
        • Beim erstellen eines Updates fehlt mir Drag&Drop von Dateien/Ordnern in die Administration(Replace file/folder Menü)
        • Wenn man ein Update bearbeiten will fehlt das "Replace file/folder" Menü
        • Wenn ich ein Update bearbeite bekomme kurz nachdem schließen des Dialogs eine Fehlermeldung:
          Spoiler anzeigen
          MySql.Data.MySqlClient.MySqlException (0x80004005): Unable to connect to any of the specified MySQL hosts.
          bei MySql.Data.MySqlClient.NativeDriver.Open()
          bei MySql.Data.MySqlClient.Driver.Open()
          bei MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder settings)
          bei MySql.Data.MySqlClient.MySqlPool.CreateNewPooledConnection()
          bei MySql.Data.MySqlClient.MySqlPool.GetPooledConnection()
          bei MySql.Data.MySqlClient.MySqlPool.TryToGetDriver()
          bei MySql.Data.MySqlClient.MySqlPool.GetConnection()
          bei MySql.Data.MySqlClient.MySqlConnection.Open()
          bei nUpdate.Administration.UI.Dialogs.ProjectDialog.InitializeStatisticsData() in d:\Documents\Visual Studio 2013\Projects\nUpdate\nUpdate\nUpdate Administration\nUpdate Administration\UI\Dialogs\ProjectDialog.cs:Zeile 539.
        • Mir fehlt die Möglichkeit Parameter für das Programm anzugeben bei einem erfolgreichen/fehlerhaften Update
      • UpdaterUI:
        • Fehlermeldung beim installieren von einem Update(Wenn ich die nUpdate Ordner aus dem %temp% Ordner lösche geht es wieder):
          Spoiler anzeigen
          System.IO.IOException was unhandled
          _HResult=-2147024751
          _message=Das Verzeichnis ist nicht leer.

          HResult=-2147024751
          IsTransient=false
          Message=Das Verzeichnis ist nicht leer.

          Source=mscorlib
          StackTrace:
          bei System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
          bei System.IO.Directory.DeleteHelper(String fullPath, String userPath, Boolean recursive, Boolean throwOnTopLevelDirectoryNotFound)
          bei System.IO.Directory.Delete(String fullPath, String userPath, Boolean recursive, Boolean checkHost)
          bei System.IO.Directory.Delete(String path)
          bei nUpdate.Updating.UpdateManager.InstallPackage() in d:\Documents\Visual Studio 2013\Projects\nUpdate\nUpdate\nUpdate\Updating\UpdateManager.cs:Zeile 537.
          bei nUpdate.Updating.UpdaterUi.ShowUserInterface() in d:\Documents\Visual Studio 2013\Projects\nUpdate\nUpdate\nUpdate\Updating\UpdaterUi.cs:Zeile 173.
          bei ConsoleApplication1.Program.Main(String[] args) in c:\Users\eax\Desktop\ConsoleApplication1\ConsoleApplication1\Program.cs:Zeile 22.
          bei System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
          bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
          bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
          bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)
          bei System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
          bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
          bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
          bei System.Threading.ThreadHelper.ThreadStart()
          InnerException:
        • Es wird bei mir nur das neuste Update installiert, statt alle neueren in entsprechender Reihenfolge
      Was die Fehlermeldung bei Check status angeht: Auf dem FTP kann ich nUpdate jetzt nicht mehr benutzen, egal wie oft ich ein neues Projekt in einem anderen Ordner erstelle. Zum weiter testen musste ich auf einen anderen FTP Account ausweichen(Beide bei square7.ch).
      Das ist kein bisschen sinnvoll. Ein Update kann mehr als nur Dateien ersetzen, was wenn bei einem Update was an der Registry geändert werden muss? Alle Nutzer die diese Version nicht haben, und es bereits ein weiteres Update gab, werden diese Änderung nie bekommen. Je nachdem was gemacht werden musste könnte das Programm unbrauchbar für den Nutzer werden.

      Besseres Beispiel: Du hast ein Spiel. Update 1: Es wurden einige Texturen und Maps geändert, Update 2: Es wurde was am Code bearbeitet

      Update 1 hätte nur die geänderten Texturen/Maps und Update 2 nur die geänderten Binaries. Was wenn Update 2 rauskommt, aber es noch Nutzer gibt die nicht Update 1 haben? Tja, die stehen dann dumm da.

      Ihr müsst schon etwas weiter denken als bei euren eine Datei Programmen.

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

      @Andy Wie kann man nur so unqualifizierte Antworten abgeben, Respekt.

      Ich wär eher dafür, das man gewisse Updates als "Must Have" beschreiben könnte, so mit muss man nicht von jeder Version updaten sondern nur die wichtigen und ansonsten einfach das neueste.
      Also, ich finde die Aussage nicht Unqualifiziert. Eine Datenbank funktioniert über einen Server (SQL). Es gibt auch noch Access, wobei ich aber nicht weiß, wie dies Funktioniert.
      Meine Projekte Genesis Game Engine | GFX | smartli.me - Der smarte URL shortener

      Selbst wenn die Datenbank Lokal ist, läuft sie dennoch über einen Server. Wobei ich nicht weiß, für welche Software man eine Lokale Datenbank nutzt ? Man kann doch einfach die Datenbank in das Packet legen und Fertig.
      Meine Projekte Genesis Game Engine | GFX | smartli.me - Der smarte URL shortener

      Sagt wer? Eine Datenbank muss weder über einen Server laufen, noch muss diese zwingend etwas mit SQL zu tun haben. Und lokale Datenbanken nutzt man sehr oft. Da wäre z.B. das Beispiel einer Musik-Bibliothek wo du das Zeug nach Alben, Interpreten,... ablegst. Weshalb sollte man sowas online speichern? @Andy


      Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.

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

      Es ging ja um deine anfängliche Aussage das eine Datenbank auf einen Server liegen muss, das ist schlicht falsch und wollte ich nur anmerken. Deine weiteren Posts haben irgendwie gar nichts mehr mit den Anfangspost zutun.. also wieder back 2 topic.
      Man kann doch einfach die Datenbank in das Packet legen und Fertig.


      Bezieht sich doch auf das Updaten. Geht dies nicht ? dass man die Datenbank Datei einfach in das Packet packt ?
      Meine Projekte Genesis Game Engine | GFX | smartli.me - Der smarte URL shortener