środa, 2 sierpnia 2017

Thunderbird i Pocket PC

Tworząc system Windows Mobile (w tym artykule oznacza to „stary” Windows Mobile w wersjach 2002, 2003 i 2003SE) Microsoft zbudował mechanizmy do synchronizacji danych z książki adresowej i kalendarza (a także zadań i notatek) z programem Outlook dla PC. Dla użytkowników mobilnych komputerków nie posiadających Microsoft Office, do każdego urządzenia była dołączana płyta instalacyjna z programem Outlook 2002 dla PC.

Czasy się jednak zmieniły. Synchronizacja z Pocket PC nie działa z Outlookiem wchodzącym w skład najnowszych wersji pakietu Microsoft Office, zaś Outlook 2002 nie działa pod kontrolą nowych wersji systemu Windows (na pewno działa pod Windows XP, być może też pod kontrolą 32-bitowych wersji Windows Vista i Windows 7, ale tego nie sprawdzałem). I co teraz? Czy oznacza to definitywny koniec możliwości synchronizowania danych z „dużym” komputerem? Niekoniecznie. Dla tych, którzy nie mają możliwości skorzystania z Outlooka lub po prostu nie lubią tego programu (do tej ostatniej kategorii i ja się zaliczam), istnieje możliwość synchronizacji z Thunderbirdem. Wprawdzie jest to trochę skomplikowane i nic nie będzie się „robiło samo” (korzystać będziemy z oprogramowania klasy „beta” – wersja ostateczna nigdy nie powstała), ale się da. Można nawet, za pośrednictwem Thunderbirda, synchronizować książkę adresową Pocket PC z kontaktami Google, a w ograniczonym zakresie – także terminy z kalendarzem Google.

Na początek musimy zsynchronizować Thunderbirda z usługami Google. Zastanawiałem się, czy rozpisywać się szerzej na ten temat, ale wykracza to poza tematykę tego bloga, a ponadto szczegółowe opisy są łatwe do odnalezienia w internecie (pomoc Mozilli twoim przyjacielem). Dlatego ograniczę się do tego, co niezbędne.

1. Synchronizacja książki adresowej

Istnieje kilka dodatków (plugins) do Thunderbirda umożliwiających synchronizację książki adresowej z chmurą Google. Ja korzystam z gContactSync. Działa stabilnie i mogę go z czystym sumieniem polecić. Podczas konfiguracji teoretycznie jest możliwość połączenia istniejącej osobistej książki adresowej z usługami Google, ja jednak bardzo polecam założenie nowej książki i skopiowanie do niej istniejących kontaktów. Zabezpieczymy się w ten sposób przed przypadkowym skasowaniem naszej bazy, gdyby podczas dalszej konfiguracji lub użytkowania coś poszło nie tak.

Utworzenie nowej książki adresowej skutkuje w programie Thunderbird powstaniem pliku abook*.mab przeznaczonego na dane (standardowa książka znajduje się w pliku abook.mab, następna – abook-1.mab, kolejna – abook-2.mab itd.), w katalogu profilu. Do konfiguracji z PPC musimy dokładnie wiedzieć, gdzie to jest.

Profil Thunderbirda znajduje się w katalogu:
              %APPDATA%\Thunderbird\Profiles\losowy_ciąg_znaków.default
przy czym %APPDATA% jest zmienną systemową wskazującą na katalog, w którym Windows zapisuje dane potrzebne aplikacjom użytkowym. Aby dowiedzieć się, co się pod tym kryje otwieramy okno konsoli tekstowej i wprowadzamy polecenie:
              echo %appdata%
Pod kontrolą Windows XP najprawdopodobniej otrzymamy odpowiedź:
             C:\Documents and Settings\<nazwa_użytkownika>\Dane aplikacji
(w miejscu <nazwa_użytkownika> pojawi się nazwa użytkownika aktualnie zalogowanego w systemie).
Następnie wprowadzamy (w jednym wierszu):
      dir "C:\Documents and Settings\<nazwa_użytkownika>\Dane aplikacji\Thunderbird\Profiles"
(pole <nazwa_użytkownika> zastępujemy oczywiście właściwą nazwą) otrzymując w wyniku coś takiego:
      2016-06-06 19:44 <DIR> .
      2016-06-06 19:44 <DIR> ..
      2016-06-06 19:44 <DIR> yk47cxfd.default
Wreszcie (znowu w jednym wierszu):
      dir "C:\Documents and Settings\<nazwa_użytkownika>\Dane aplikacji\Thunderbird\Profiles\yk47cxfd.default\abook*.mab"
dostając w odpowiedzi coś podobnego do:
      2017-07-29 10:35 165 219 abook-1.mab
      2017-07-02 12:52 29 268 ABOOK.MAB
Tak więc w przykładowym systemie (Windows XP) nowa książka adresowa znajduje się w pliku:
      C:\Documents and Settings\<nazwa_użytkownika>\Dane aplikacji\Thunderbird\Profiles\yk47cxfd.default\abook-1.mab
Każdy musi to sobie sprawdzić samodzielnie i zapamiętać (a najlepiej zapisać).

2. Synchronizacja kalendarza

Począwszy od wersji 38 Thunderbird zawiera zintegrowany kalendarz Lightning (wcześniej trzeba było go doinstalowywać jako dodatek). Tak jak poprzednio zalecam utworzenie nowego kalendarza, dlatego klikamy Plik Utwórz → Kalendarz → Kalendarz zdalny, wybieramy Kalendarz Google... Zaraz, zaraz: ale przecież czegoś takiego nie ma! Żeby ta opcja się pojawiła trzeba zainstalować dodatek „Dostawca dla kalendarza Google” (Provider for Google Calendar). Dalsza konfiguracja nie powinna już przysporzyć problemów.

Niestety nie przybliżyło nas to zbytnio do synchronizacji kalendarza z Pocket PC. Do tego celu potrzebujemy kalendarza w pliku, w formacie iCalendar (rozszerzenie pliku .ics). Thunderbird obsługuje takie pliki, tylko... skąd go wziąć? Najprościej z... Google!

Logujemy się do naszego kalendarza Google w przeglądarce WWW (https://calendar.google.com), rozwijamy „Moje kalendarze”. Będzie tam kalendarz nazwany imieniem i nazwiskiem które podaliśmy podczas rejestracji w Google. Rozwijamy menu tego kalendarza (przycisk z trójkątem skierowanym w dół) i wybieramy „Ustawienia kalendarza”. Teraz trzeba znaleźć „Eksportowanie kalendarza” (być może trzeba trochę przewinąć stronę) i kliknąć „Eksportuj ten kalendarz”. Powinno to doprowadzić do pobrania pliku o nazwie <adres_e-mail_w_Google>.ical.zip. W archiwum znajduje się plik <adres_e-mail_w_Google>.ics, który wypakujemy do odpowiedniego katalogu na dysku. „Odpowiedniego”, to znaczy takiego, że zawsze będziemy wiedzieli gdzie on jest i nie będziemy w nim „grzebali”. Moim zdaniem dobrym miejscem jest odnaleziony w poprzednim punkcie katalog profilu Thunderbirda.

Teraz możemy skonfigurować nowy (to już będzie trzeci) kalendarz w Thunderbirdzie. Klikamy jak poprzednio: Plik → Utwórz → Kalendarz → Kalendarz zdalny, zaznaczamy „iCalendar (ICS)” i wskazujemy położenie pliku. Teraz uwaga, uwaga: położenie pliku wprowadzamy w następującym formacie:
      file:///c:/documents and settings/<nazwa_użytkownika>/dane aplikacji/thunderbird/profiles/yk47cxfd.default/<adres_e-mail_w_google>.ics
Należy zwrócić uwagę na przedrostek „file:///" (trzy ukośniki, a nie dwa, to nie pomyłka!) oraz zastąpienie wszystkich odwrotnych ukośników (\) prostymi (/). Dla użytkownika Windows może się to wydawać dziwne, ale użytkownik Linuksa poczuje się „jak w domu”. Dalsza konfiguracja powinna już przebiegać bez problemów, jeśli kalendarz Google był wypełniony danymi, to powinniśmy zobaczyć te dane przeniesione do Thunderbirda.

Dopiero teraz możemy przejść do sprawy zasadniczej, czyli synchronizacji Pocket PC z Thunderbirdem. Czytelnicy, którzy nie są zainteresowani współpracą z chmurą Google mogliby w zasadzie zacząć czytać od tego momentu, ale:
  • trzeba wiedzieć, gdzie znajduje się plik książki adresowej
  • trzeba mieć skonfigurowany kalendarz w formacie iCalendar.

3. Synchronizacja z Pocket PC

Do synchronizacji kalendarza i książki adresowej Pocket PC z Thunderbirdem potrzebne jest oprogramowanie FinchSync. Ja używam wersji 0.8d. Znalezienie aktywnego linku do pobrania tej aplikacji w internecie może już dzisiaj stanowić problem, dlatego wrzuciłem plik tutaj.


Oprogramowanie działa w architekturze client-server. Serwerem jest aplikacja Javy zapisana w pliku finschsync.jar, uruchamiana na PC. Do swojego działania wymaga jedynie zainstalowanej wirtualnej maszyny Javy, przy czym nie jest „wybredna” jeśli chodzi na przykład o wersję. W praktyce nie miałem żadnych problemów z uruchamianiem tego programu pod kontrolą różnych wersji systemu Windows, z różnymi wersjami Javy. Być może będzie działać także pod kontrolą innych systemów operacyjnych obsługujących Javę, na przykład Linux, ale tego nie próbowałem.

Plik instalacyjny klienta, FinschSync.cab.CAB, należy przekopiować na Pocket PC i tam uruchomić. Instalacja trwa krótką chwilę, po czym w menedżerze programów (Programs) powinna pojawić się ikona FinchSync.

Pora na konfigurację. Uruchamiamy serwer, klikamy zakładkę „Sync Sources” i przycisk „Add”. Wpisujemy nazwę nowego źródła danych, na przykład „Adresy” (polskie litery i inne „dziwne” znaczki nie są akceptowane) i klikamy „Next”. Następnie w pozycji „Source” wybieramy „Mozilla/Thunderbird/Netscape Address Book”. Teraz trzeba wskazać plik z książką adresową. Klikamy „Browse” i posługując się danymi zapamiętanymi (zanotowanymi) w punkcie 1 wyszukujemy odpowiedni plik .mab, następnie klikamy „Next”. Na kolejnym formularzu sprawdzamy poprawność wprowadzonych danych i klikamy „Finish”. Analogicznie konfigurujemy kalendarz, tylko jako „Source” wybieramy „Mozilla Calendar/Sunbird” i wskazujemy plik .ics skonfigurowany w punkcie 2.

Skoro mamy już źródła danych, pora na komunikację z klientem. Klikamy zakładkę „Clients” i „Add”. Wpisujemy nazwę klienta (polskie litery, spacje i inne „dziwactwa” zabronione) i hasło. Te dane musimy zapamiętać, bo będziemy je musieli wprowadzić na Pocket PC. Następnie klikamy „Add” (na tej samej formatce) i wybieramy „Adresy” (czy jak tam nazwaliśmy źródło danych książki adresowej), następnie w analogiczny sposób dodajemy kalendarz. Na tym kończy się konfiguracja serwera. Warto tylko przełączyć się na zakładkę „Activity”, żeby można było podejrzeć adres IP serwera i śledzić przebieg sesji z klientem.

Czas na Pocket PC. Łączymy PDA z komputerem PC kablem USB (na komputerze musi być zainstalowany i skonfigurowany ActiveSync lub Centrum obsługi urządzeń z systemem Windows Mobile). Uruchamiamy FinschSync, klikamy „Config”, następnie „Server” (pojawi się pusta lista serwerów) i „Add”. Wpisujemy nazwę serwera, jego adres IP (jest wyświetlony na dole okna aplikacji serwera), login (to jest nazwa klienta wprowadzona przy konfiguracji serwera) i hasło. Teraz uwaga, uwaga: zmieniamy wartość w polu „Port” z domyślnej „80” na „8080”. Bez tego nic się nie uda. Klikamy przycisk „Test”, następnie w kolejnym oknie – „connect”. Jeśli wszystko zrobiliśmy dobrze, to powinniśmy zobaczyć, jakie źródła danych skonfigurowaliśmy na serwerze. Zamykamy formatkę („OK” w prawym górnym rogu) i wracamy do formularza „Server Configuration”, gdzie klikamy przycisk „OK”. Teraz lista serwerów już nie jest pusta. Zamykamy formatkę.

Przeprowadzamy próbę synchronizacji: zamykamy Thunderbirda na PC, a na urządzeniu mobilnym klikamy przycisk „Sync it” w głównym oknie Finsch Synca. Po krótszej lub dłuższej chwili powinniśmy otrzymać komunikat „Synchronization succesful !”. Bingo!!! Można już zamknąć Fiinsh Sync na PPC (a także serwer na „dużym” PC) i sprawdzić zawartość książki adresowej i kalendarza na urządzeniu mobilnym, oraz w programie Thunderbird. Jestem gotów się założyć, że efekt nie będzie zgodny z oczekiwaniami. To dlatego, że zasady synchronizacji danych są zupełnie inne, niż te, które Microsoft wymyślił dla Outlooka. O tym dalej.

4. O synchronizacji słów kilka

Synchronizacja danych przy pomocy FinchSynca przebiega następująco. Podczas konfiguracji połączenia z serwerem na Pocket PC (albo dopiero przy pierwszej synchronizacji, nigdy nie chciało mi się tego zbadać dokładnie) w Pocket Outlooku tworzone są dwie nowe kategorie: <nazwa_serwera>:Adresy i <nazwa_serwera>:Kalendarz (albo podobnie, w zależności od tego, jak nazwaliśmy nasze źródła danych). Podczas pierwszej synchronizacji dane z Thunderbirda kopiują się do Pocket Outlooka i wpisy zostają od razu przypisane do odpowiednich kategorii. Dane z Pocket PC nie kopiują się do Thunderbirda, gdyż nie mają przypisanej właściwej kategorii. To dlatego po synchronizacji stan danych może nie do końca odpowiadać oczekiwaniom. Podczas kolejnych sesji synchronizują się dane przypisane do odpowiednich kategorii niezależnie od tego gdzie były edytowane, oraz wpisy utworzone w Thunderbirdzie kopiowane są na Pocket PC. Jeśli jednak utworzymy wpis w Pocket Outlooku i chcemy, żeby się synchronizował z Thunderbirdem, musimy „ręcznie” przypisać mu odpowiednią kategorię.

Na początku może się to wydawać niewygodne i dziwaczne, system ten ma jednak swoją logikę. Przede wszystkim urządzenie przenośne może być synchronizowane z dowolną liczbą serwerów (w przypadku rozwiązania Microsoftu – maksymalnie z dwoma). Serwery nie muszą przechowywać tych samych danych (w przypadku rozwiązania Microsoftu – muszą), gdyż kategorie pozwalają rozróżnić, które dane pochodzą z którego serwera i z którym muszą się synchronizować. Istnieje prosta metoda na zdefiniowanie danych „wspólnych”, które mają się synchronizować ze wszystkimi lub z wybraną grupą serwerów. Wystarczy je przypisać do kilku kategorii. Wreszcie, rozwiązanie pozwala znacznie zminimalizować ryzyko utraty wszystkich danych. W przypadku rozwiązania Microsoftu, jeśli na Pocket PC wykonamy „twardy reset” lub po prostu wyładujemy baterię „do zera”, co na tym urządzeniu jest równoznaczne z utratą danych użytkownika, system synchronizacji potraktuje to jako skasowanie wszystkich danych. Może się wówczas zdarzyć, że po podłączeniu urządzenia przenośnego do PC, w wyniku „synchronizacji” stracimy wszystkie dane w Outlooku. W przypadku FinchSynca pusta baza Pocket Outlooka będzie oznaczała, że trzeba skopiować dane z Thunderbirda (zwłaszcza że będziemy musieli skonfigurować klienta FinchSync od nowa, będzie to więc pierwsza synchronizacja) i nic się złego nie stanie. Jednak nawet gdyby udało nam się przypadkowo skasować jakieś istotne wpisy, zostaną one usunięte tylko w tej książce adresowej i w tym kalendarzu Thunderbirda, które podlegają synchronizacji z danym urządzeniem przenośnym. Nie będą to wszystkie dane.

Ważna uwaga. Już o tym wspominałem, ale nie zaszkodzi przypomnieć jeszcze raz. Proces synchronizacji FinchSync uruchamiamy przy zamkniętym programie Thunderbird. W przeciwnym wypadku modyfikacje danych wykonane w Thunderbirdzie przekopiują się wprawdzie do Pocket Outlooka, ale modyfikacje wykonane na Pocket PC nie przeniosą się do baz Thunderbirda, gdyż pliki będą otwarte i serwer FinchSync nie będzie mógł wykonać zapisu.

No dobrze: a co z synchronizacją z usługami Google? W przypadku książki adresowej – nie ma problemu. FinchSync synchronizuje Pocket Outlooka z książką adresową Thunderbirda, gContactSync synchronizuje książkę Thunderbirda z kontaktami Google i to by było na tyle. Z kalendarzem jest gorzej: wprawdzie i tutaj FinchSync synchronizuje Pocket Outlooka z kalendarzem Thunderbirda, ale to nie jest ten kalendarz, który jest synchronizowany z Google. Jeśli więc chcemy, żeby jakiś wpis kalendarza z Pocket PC pojawił się w Google, musimy go „ręcznie” w Thunderbirdzie przenieść z jednego kalendarza do drugiego. Na szczęście jest to łatwe. Podobnie postępujemy, jeśli jakiś termin z Google ma się pojawić na Pocket PC. Może taka „ręczna synchronizacja” nie jest tym, co tygrysy lubią najbardziej, ale w końcu „lepszy rydz, niż nic”.

5. Iskierka nadziei na koniec

Uważny czytelnik zauważył zapewne, że połączenie klienta FinshSync z serwerem odbywa się z wykorzystaniem protokołu IP (przy konfiguracji klienta podawaliśmy adres IP serwera). Oprogramowanie Microsoft ActiveSync lub Centrum obsługi urządzeń z Windows Mobile, zainstalowane na PC, wykorzystywane jest w tym przypadku do realizacji połączenia IP przez kabel USB i w zasadzie do niczego więcej. Takie połączenie może jednak być zrealizowane w inny sposób, na przykład przez WiFi. Ja tego nie testowałem, bo moje komputerki mobilne nie mają wbudowanego adaptera WiFi i chociaż jest możliwe podłączenie takiego urządzenia w postaci karty SD (mam coś takiego i nawet działa), jednak nie jest wygodne, bo trzeba wyjąć kartę pamięci z danymi (a wewnętrzna pamięć urządzenia jest malutka). Wolę kabelek. Może jednak jest to jakiś sposób na synchronizację z Windows 10 po poprawce Creators Update, na którym Centrum obsługi już nie działa?

1 komentarz: