Programm-Updater wird geblockt

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

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Grinsnir.

    Programm-Updater wird geblockt

    Moin zusammen,
    ein uraltes und schon x-mal eröffnetes Thema, Updaten seines Programms.
    Ich hab ein kleines Stückchen Software geschrieben was ich semi-regelmäßig auch aktualisiere, diese Updates will ich dann möglichst automatisch verteilen.
    Über die SuFu bin ich auf Programm Update Frage! gestoßen, was schon ziemlich exakt der Methode entspricht, die ich nutze.

    Jetzt hab ich nur das Problem, dass ich von einem User die Info bekommen hab, dass der Windows-Defender bei ihm mein Programm blockt, und wenn ich virustotal einmal drüberlaufen lasse, sagen mir 2 von 71 auch "Rot".
    Was ich da bisher rausgelesen habe, scheinen die ein Problem damit zu haben, dass das Programm beim Start eine weitere .exe (eben den updater) herunterlädt, ein paar Ordner in "Dokumente" erstellt, und auch dass ich die Software nicht signieren kann (weil wegen Hobby, und Zertifikat kost Geld) scheint denen irgendwie "sauer aufzustoßen".

    Im groben passiert beim Programmstart folgendes:

    1) Es wird geprüft ob die Ordner unter "Dokumente" bereits existieren -> Wenn nein, werden sie erstellt, wenn ja, gehts weiter.
    2) Es wird versucht, meinen Server zu kontaktieren -> Wenns nicht funktioniert, skip, wenn es funktioniert, folgendes:
    Download einer Textdatei welche die aktuellste Version beinhaltet
    Download des aktuellsten Updaters (oben genannte .exe-Datei)
    3) Der Inhalt der Versions-Textdatei wird mit der Programminternen Version abgeglichen -> Wenn gleich, Fertig, wenn unterschiedlich, Meldung sowie anlegen einer weiteren Datei, anhand welcher das Programm erkennt ob es die neue Version bereits gemeldet hat, und welche. Somit wird jede neue Version nur einmalig gemeldet, aber wenn es vor dem (User-getriggerten) Update eine weitere neue gibt, wird diese auch nochmal gemeldet.


    Im Grunde gefällt mir die Funktion so ja ganz gut, funktioniert auch alles astrein, nur dass eben gelegentlich der Windows-Defender bei anderen Usern dazwischenfunkt oder auch dass Virustotal nicht komplett "Grün" ist, find ich doof.

    Ggf. hat ja jemand Ideen/Vorschläge zur Verbesserung des Prozesses, oder wie ich für die Antivirensoftwares komplett "okay" bin =)
    Moin,

    zunächst grundsätzlich: Updater - Worauf sollte man bei eigenen Updatern achten?

    Grinsnir schrieb:

    der Windows-Defender bei ihm mein Programm blockt
    Wahrscheinlich handelt es sich hier um SmartScreen: Siehe Windows 10 - Windows Smartscreen. Wenn du kein Code-Signing-Zertifikat kaufen willst, bleibt wohl nur, die Datei zur Analyse an Microsoft zu senden.
    Mit freundlichen Grüßen,
    Thunderbolt
    Hab gerade schonmal in den verlinkten Thread reingespickt und werde mich da mal einlesen, danke dir!

    Bzgl. Einsenden an MS -> Ich tausche bei Updates jedes mal die gesamte .exe des Originalprogramms (Man sagt im Programm "Update starten", der Pfad zur eigenen .exe wird in ne .txt geschrieben, der Updater wird gestartet und gleichzeitig das Programm gekillt, Updater liest die .txt aus, löscht die .exe und lädt die neue herunter), das müsste ich doch dann vermutlich jedes mal machen wenn ich was ändere?

    Und das würde ja in meinem Verständnis auch dann, wenn ich auf eine "bessere" Updatemöglichkeit umsteige, trotzdem das Problem sein?

    Grinsnir schrieb:

    dass ich die Software nicht signieren kann (weil wegen Hobby, und Zertifikat kost Geld)


    In welchem Umfeld läuft Dein Dein Programm?
    • Bei Dir und Bekannten, dann kannst Du mit XCA hohnstaedt.de/xca/index.php/download Dir eine kleine CA aufsetzen, und Dir ein CodeSigning-Zertifikat erstellen. Anschließend müssen alle Zertifikate der Kette vom CodeSigning-Zertifkat zum Root-Zertifikat auf den Zielrechnern installiert werden.
    • Innerhalb einer Firma, dann kannst Du versuchen mit der IT zu reden, ob diese Dir ein CodeSigning-Zertifikat über Firmen-CA ausstellen können.
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).

    INOPIAE schrieb:

    In welchem Umfeld läuft Dein Dein Programm?


    Diese spezifische Software ist für Spieler eines Browsergames gemacht, also.. nicht nur Bekannte, aber auch keine Firma, da wird dein Vorschlag also wohl nicht funktionieren. Ich danke dir trotzdem!
    Das was ich für die Arbeit gemacht hab wird "lustigerweise" nicht vom Antivirus blockiert, und das macht wesentlich mehr Netzwerktraffic.. allerdings rein intern, wird daran liegen.

    Grinsnir schrieb:

    allerdings rein intern, wird daran liegen.

    Nein.

    Du lädst eine EXE herunter nachdem und startest diese in deinem Programm. Das machen nunmal meist nur Viren/Trojaner/Malware oder was auch immer.
    Überlege dir einfach wie nötig es ist das dein Programm diese dinge tut.
    Mach dir einen ordentlichen Installer - und prüfe bei Programmstart einfach nur ob es eine neue Version gibt wenn ja wird man auf die Downloadseite
    geleitet und der User lädt sich den neuen Installer runter - installiert drüber und fertig.

    So mach ich das mittlerweile da es 100x einfacher ist und ich nicht Gefahr habe einen "schlechten" Update da bummeln zu lassen der wohlmöglich noch gehackt wird.
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen

    xChRoNiKx schrieb:

    prüfe bei Programmstart einfach nur ob es eine neue Version gibt wenn ja wird man auf die Downloadseite geleitet


    So hab ich das jetzt geregelt.. Zwar ohne Installer (Weil das Programm halt wirklich nur aus einer .exe-Datei und ein paar Textdateien besteht, die es dann selbst aus seinen Ressourcen lädt), aber mit manuellem Download.