Verfasst: Sa 25. Dez 2021, 01:05
So meine Fragen haben mich nun selbst auf die Lösung gebracht. Ich konnte den Bug so weit eingrenzen.
Thunderbird liest beim Start Einträge aus der Registry unter folgenden drei Schlüsseln aus:
* HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Mozilla\NativeMessagingHosts\myphoneexplorer.extension
* HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\NativeMessagingHosts\myphoneexplorer.extension
* HKEY_CURRENT_USER\SOFTWARE\Mozilla\NativeMessagingHosts\myphoneexplorer.extension
nicht aber unter
* HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\Mozilla\NativeMessagingHosts\myphoneexplorer.extension
Insofern macht MPE alles korrekt, bis auf den Zeitpunkt, an dem der Registry-Eintrag geschrieben und gelöscht wird. Das darf nicht direkt vor dem Sync sein. Ist Thunderbird erstmal gestartet, hat er den Pfad zu dem JSON-Manifest bereits gelesen oder auch nicht. Ob danach ein Eintrag in die Registry erfolgt oder dort gelöscht wird, ist Thunderbird dann egal.
Offensichtlich ist es so, dass bei der Installation des MPE-Thunderbird-Addons die Einträge (wie Du bereits gesagt hast) korrekt gesetzt werden. Deswegen klappt (bis auf das Timeout-Problem) der Sync nach der Installation oder dem Update des MPE-Thunderbird-Addons bis Thunderbird geschlossen wird.
Die korrekte Konfiguration wird dann aber nach der ersten Synchronisation aus der Registry (nachdem Sie zuerst nochmal korrekt überschrieben wird) gelöscht. Das führt dazu, dass beim erneuten Start von Thunderbird, diesem den Pfad zum JSON-Manifest fehlt und die weitere Synchronisation fehlschlägt.
Das Problem kann also entscheidend verbessert werden, indem FJ MPE bereits beim Start den Eintrag HKEY_CURRENT_USER\SOFTWARE\Mozilla\NativeMessagingHosts\myphoneexplorer.extension setzen lässt und diesen dann erst beim Beenden von MPE löschen lässt. Dieses Vorgehen entspricht auch dem eines klassischen portable Starters (wie Dein kleines Skript). Mit dieser Lösung müsste MPE immer vor Thunderbird gestartet werden, damit es funktioniert. Das Timeout-Problem bleibt dabei ungelöst. (Man könnte auch eine optionale Einstellung „Stealth-Modus deaktivieren“ hinzufügen, indem der Registry-Schlüssel einfach nicht gelöscht wird. Dann wäre es egal wann Thunderbird gestartet wird, allerdings hinterlässt man dann verwaiste Einträge auf den Host-System, was nicht ganz im Sinne von portable Apps ist. Daher sollte es, wenn optional sein).
Ich hoffe, Du und FJ können das so bestätigen. Aber ich bin mir nun doch sehr sicher, dass es das ist und es doch nicht an Mozilla liegt.
Frohe Weihnachten!
Thunderbird liest beim Start Einträge aus der Registry unter folgenden drei Schlüsseln aus:
* HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Mozilla\NativeMessagingHosts\myphoneexplorer.extension
* HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\NativeMessagingHosts\myphoneexplorer.extension
* HKEY_CURRENT_USER\SOFTWARE\Mozilla\NativeMessagingHosts\myphoneexplorer.extension
nicht aber unter
* HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\Mozilla\NativeMessagingHosts\myphoneexplorer.extension
Insofern macht MPE alles korrekt, bis auf den Zeitpunkt, an dem der Registry-Eintrag geschrieben und gelöscht wird. Das darf nicht direkt vor dem Sync sein. Ist Thunderbird erstmal gestartet, hat er den Pfad zu dem JSON-Manifest bereits gelesen oder auch nicht. Ob danach ein Eintrag in die Registry erfolgt oder dort gelöscht wird, ist Thunderbird dann egal.
Offensichtlich ist es so, dass bei der Installation des MPE-Thunderbird-Addons die Einträge (wie Du bereits gesagt hast) korrekt gesetzt werden. Deswegen klappt (bis auf das Timeout-Problem) der Sync nach der Installation oder dem Update des MPE-Thunderbird-Addons bis Thunderbird geschlossen wird.
Die korrekte Konfiguration wird dann aber nach der ersten Synchronisation aus der Registry (nachdem Sie zuerst nochmal korrekt überschrieben wird) gelöscht. Das führt dazu, dass beim erneuten Start von Thunderbird, diesem den Pfad zum JSON-Manifest fehlt und die weitere Synchronisation fehlschlägt.
Das Problem kann also entscheidend verbessert werden, indem FJ MPE bereits beim Start den Eintrag HKEY_CURRENT_USER\SOFTWARE\Mozilla\NativeMessagingHosts\myphoneexplorer.extension setzen lässt und diesen dann erst beim Beenden von MPE löschen lässt. Dieses Vorgehen entspricht auch dem eines klassischen portable Starters (wie Dein kleines Skript). Mit dieser Lösung müsste MPE immer vor Thunderbird gestartet werden, damit es funktioniert. Das Timeout-Problem bleibt dabei ungelöst. (Man könnte auch eine optionale Einstellung „Stealth-Modus deaktivieren“ hinzufügen, indem der Registry-Schlüssel einfach nicht gelöscht wird. Dann wäre es egal wann Thunderbird gestartet wird, allerdings hinterlässt man dann verwaiste Einträge auf den Host-System, was nicht ganz im Sinne von portable Apps ist. Daher sollte es, wenn optional sein).
Ich hoffe, Du und FJ können das so bestätigen. Aber ich bin mir nun doch sehr sicher, dass es das ist und es doch nicht an Mozilla liegt.
Frohe Weihnachten!