Fremde Software startet meinen Updater
-
Hi,
heute wurde mir ein sehr seltsames Problem berichtet. Eine Fremdsoftware nutzt zum updaten genau wie meine Software eine "Updater.exe", die bei Finden einer neuen Version auf dem Server gestartet wird.
Funktioniert normalerweise auch prächtig. Jetzt ist es nur so, dass eben diese fremde Software plötzlich meinen Updater (in einem anderen Verzeichnis) verwendet. Die upgedateten Dateien werden dann aber in den Ordner der Fremdsoftware geschrieben und überschreiben - unter anderem - deren updater.exe.
Das ist wirklich seltsam. Woran kann das liegen? Meine erste Idee war, dass mein Updater in der PATH-Variable vorkommt. In cmd wird aber ein reines "Updater.exe" nicht gefunden, daran scheint das nicht zu liegen. Ansonsten befindet sich eine Verknüpfung zum Updater im Startmenü (einem Untermenü für meine Software). Gibt man nach Windows-Taste Updater.exe ein, ist meiner aber die erste Wahl.
Den Fehler kann ich bestens reproduzieren. Hat jemand eine Idee, wie ich das lösen könnte? Weiß jemand, was ich ausprobieren könnte?
Danke schon Mal und beste Grüße!
-
klingt nach einen Bug in der Fremdsoftware.
Du könntest also höchstens beim Start deines Updaters ermitteln, wo dein Programmpfad liegt (in die registry eintragen oder so) und auch nur dort dein Update durchführen und nicht im aktuellen Arbeitsverzeichnis. So verhinderst du zumindest, dass dein Update deren Dateien überschreibt.
-
Ich würde lieber validieren ob im aktuellen Verzeichnis eine korrekte Installation deiner Software liegt. Wenn nicht, dann abbrechen.
-
Okay, das finde ich schon Mal gut und löst das Überschreiben.
Es scheint jedoch so, dass bei der Fremdsoftware die updater.exe nicht ohne Parameter, die von der Software selbst kommen, gestartet werden kann (sonst wäre ein einfacher Workaround gegeben). Der Bug ist sicherlich dort zu suchen, aber darauf habe ich keinen Einfluss und wahrscheinlich wird mir das angehängt, weil die Fremdsoftware von einem größerer Hersteller kommt als ich es bin.
Was könnte dort denn der Bug sein? Wie kommt die Software dazu in meinem Pfad rumzuschnüffeln? Ist halt ein Ratespiel, aber vielleicht hat noch jemand Ideen, sodass ich einen besseren Workaround finden kann als "Updater.exe" umzubenennen.
-
Startet deine Software den Updater selbst? Wenn ja, kann der Updater ja prüfen, wer ihn gestartet hat und ggf. abbrechen.
-
Ja, das würde auch funktionieren, nur löse ich damit leider nicht das Problem, dass die Fremdsoftware bei Programmstart auf neue Updates prüft und dann eben den (falschen) Updater aufruft. Zwar würde ich also nicht mehr die Fremdsoftware überschreiben, man könnte die aber auch nicht mehr updaten.
-
die einfachste Lösung wäre, Updater.exe umzubenennen.
Ansonsten musst du dem ganzen nachgehen warum die Fremdsoftware den falschen Pfad aufruft. uU sind es registry werte oder config werte, etc. Das kann alles sein.
-
Okay, hatte befürchtet, dass das Problem nicht trivial ist. Das Umbenennen wird wohl am einfachsten sein, stimmt. Bin froh gefragt zu haben, danke euch allen
-
Unter Windows ist bei sowas Process Monitor (aus der Sysinternals-Suite) ganz hilfreich; vielleicht auch Process Hacker (das habe ich aber noch nicht benutzt, sondern nur die Beschreibung durchgelesen, die klingt aber gut)
-
Hm, ich bin nicht der Typ, der sich auf Grund eines Schlagworts irgendeine Software lädt.
Inwiefern sind diese Tools denn hilfreich? Wie können die bei meinem Problem helfen?
-
Eisflamme schrieb:
Was könnte dort denn der Bug sein? Wie kommt die Software dazu in meinem Pfad rumzuschnüffeln? Ist halt ein Ratespiel, aber vielleicht hat noch jemand Ideen, sodass ich einen besseren Workaround finden kann als "Updater.exe" umzubenennen.
Verlange von deinem Updater einfach noch die zusätzliche Angabe eines Parameters, die deine Software, die den Updater aufruft, mit übergeben muss.
Z.b. könnte das sein:
update.exe --keyword="mkdfldlfjed"
Und nur wenn dieser Parameter korrekt ist, das Keyword also stimmt, dann kam der Updatebefehl von deiner SW.
Damit kannst du so gut wie alle Fremdsoftware ausschließen.
Problem ist nur, falls der Nutzer dein Update manuell starten können soll, dann würde er ebenfalls den Parameter und das Keyword benötigen.
Hier könntest du vielleicht mit einem GUI Dialog reagieren, der aufpoppt, wenn die Update.exe ohne den Parameter gestartet wurde.
-
Eisflamme schrieb:
Das Umbenennen wird wohl am einfachsten sein, stimmt.
Ist auch wie ein Kniefall vor dem Drittsoftwarehersteller der seine Probleme nicht in den Griff kriegt.
Ich würde das jedenfalls nicht machen und nach der Nase der anderen tanzen.
-
Lösung schrieb:
Eisflamme schrieb:
Das Umbenennen wird wohl am einfachsten sein, stimmt.
Ist auch wie ein Kniefall vor dem Drittsoftwarehersteller der seine Probleme nicht in den Griff kriegt.
Ich würde das jedenfalls nicht machen und nach der Nase der anderen tanzen.
Man sollte lieber um die Probleme anderer kümmern müssen.
-
Lösung:
Ja, das wurde mir jetzt schon drei Mal vorgeschlagen und es löst das andere Probleme wie gesagt nicht. Das erste natürlich schon.Wobei es einfacher ist einen Updater upzudaten, wenn ich ihn umbenenne. Sonst braucht man ja einen Updater-Updater oder die Software selbst muss Teil des Updates übernehmen, das ist alles nicht der Brüller.
Kniefall na ja... es geht um die User Experience, die will ich maximieren. Bug Report ist ja gesendet, aber wenn die das nicht hinbekommen, ändere lieber ich etwas, damit die Benutzer beides gleichzeitig nutzen können, selbst wenn die Fremdsoftware Mist baut.
-
Sonst braucht man ja einen Updater-Updater
Eigentlich nicht. Du kannst die Exe des Updaters im laufenden Betrieb umbennen in updater_old.exe und eine neue updater.exe anlegen, und die alte dann beim nächsten Start des Updaters löschen.
-
Oh, das funktioniert auch für laufende Echsen? Ich dachte immer, das wäre nur bei DLLs möglich (wobei die Beschränkung für mich auch keinen Sinn ergibt). Dann find ich das fein, danke
-
Eisflamme schrieb:
Oh, das funktioniert auch für laufende Echsen?
-
Eisflamme schrieb:
Oh, das funktioniert auch für laufende Echsen?
Anscheinend.
Ich hatte in Erinnerung dass es nicht geht. Hab's aber grad ausprobiert, und geht offenbar doch (Win8 x64).