poniedziałek, 9 kwietnia 2018

Jak drukować bez sterowników – Windows 10

Bezpośrednią inspiracją do powstania tego artykułu okazał się komentarz do wpisu „Jak drukować bez sterowników?” opublikowany przez użytkownika Reprotechnika dnia 28 marca 2018 roku, w którym stwierdza on, że pod Windows 10 to nie działa.

W poprzednim wpisie pokazałem wprawdzie, że jeśli drukarka obsługiwana jest przez Windows XP, to nadal można drukować bez sterowników, nie tylko z Linuksa, ale również z systemu Windows 10. Co jednak, gdy komputer z fizycznie podłączoną drukarką pracuje pod kontrolą tego ostatniego systemu? Miałem wątpliwości, czy pod Windows 10 da się skonfigurować wirtualną drukarkę postscriptową, tak aby można było w sieci drukować z poziomu innych systemów operacyjnych nawet wówczas, gdy nie obsługują one danego modelu drukarki fizycznej.

Wprawdzie nie miałem potrzeby realizowania takiej konfiguracji na potrzeby mojej sieci domowej (drukarka w dalszym ciągu jest obsługiwana przez komputer z XP), ale problem nie dawał mi spokoju i postanowiłem sprawdzić. Dzisiaj już wiem: da się w systemie Windows 10 skonfigurować wirtualną drukarkę postscriptową i drukować na niej bez sterowników (a właściwie z wykorzystaniem sterownika PostScript, który jest dostępny praktycznie w każdym normalnym systemie), nawet jeśli ten Windows 10 jest 64-bitowy, nawet jeśli chcemy drukować z poziomu tak starego systemu jak Windows 98 czy 95 i nawet wtedy, jeśli fizyczna drukarka jest jakimś najnowszym „wynalazkiem” nieobsługiwanym przez żaden system operacyjny poza Windows 10.

Zanim przejdę dalej chciałbym zaznaczyć, że wpis ten jest uzupełnieniem artykułów „Jak drukować bez sterowników?” oraz „Drukujemy z Linuksa (i innych systemów) na drukarce Windows”. Podane tam informacje są niezbędne do poprawnego skonfigurowania środowiska druku.

Konfigurujemy wirtualną drukarkę PostScript

Potrzebne będą najnowsze wersje następujących programów:
  • Ghostscript
  • GSview
  • RedMon
Komplet linków do pobrania można znaleźć na tej stronie.
Ponadto przyda się aplikacja cmdow.exe, którą umieściłem tutaj. Musiałem go skompresować, bo jak wrzuciłem plik EXE, to po jakimś czasie pliku nie można było pobrać. Gdyby link przestał działać, dajcie znać w komentarzu.

Po pobraniu plików (Ghostscript i GSview w wersji 32-bitowej lub 64-bitowej odpowiednio do systemu) instalujemy je w kolejności, w jakiej zostały wymienione. Niestandardowo przebiega instalacja RedMona: należy „ręcznie” utworzyć katalog, skopiować do niego pliki z archiwum i dopiero w tym katalogu uruchomić setup.exe. Koniecznie trzeba zapamiętać (zapisać) katalogi, w których zostało zainstalowane oprogramowanie. U mnie wygląda to następująco (może się przydać dla ustalenia uwagi:
  • C:\Program Files\gs\gs9.23
  • C:\Program Files\gs\gsview5.0
  • C:\Program Files\gs\redmon
  • C:\Util\cmdow.exe
Teraz tworzymy plik typu BAT niezbędny do komunikacji z drukarką fizyczną. Szczegółowe zasady tworzenia tego pliku podałem w pierwszym z podlinkowanych wpisów. U mnie zawartość tego pliku wygląda następująco (publikuję tylko jako przykład, należy go dostosować do swojego środowiska):

c:\util\cmdow @ /HID
C:\PROGRA~1\gs\gsview5.0\gsview\gsprint.exe -printer "HP DeskJet 840C na AXIS 540+" -color -

Kolejnym krokiem będzie (uwaga: inaczej niż pod XP) utworzenie wirtualnego portu drukarki, który będzie przekierowywał wydruki do naszego pliku wsadowego. Pod Windows 10 musimy wykonać tę czynność z uprawnieniami administratora. Otwieramy zatem okno wiersza poleceń używając funkcji „Uruchom jako administrator” i wprowadzamy polecenie jak niżej:


Spowoduje to otwarcie okna właściwości serwera wydruku z wymaganymi uprawnieniami. Klikamy zakładkę „Porty”, następnie przycisk „Dodaj port”, wybieramy „Redirected Port” (będzie dostępny, jeśli prawidłowo zainstalowaliśmy RedMona), klikamy przycisk „Nowy port...” i ustalamy jego nazwę. Proponuję nie zmieniać domyślnej: „RPT1:”.


Po dodaniu portu klikamy przycisk „Konfiguruj port...” i wpisujemy ścieżkę do utworzonego wcześniej pliku BAT.


Teraz można już skonfigurować naszą wirtualną drukarkę (jak to robić podałem szczegółowo w poprzednim wpisie). W opcjach wybieramy „Dodaj drukarkę lokalną lub sieciową z ustawieniami ręcznymi”, jako port drukarki – utworzony przed chwilą port wirtualny (RPT1:),... 


jako sterownik – jakiś sterownik drukarki postscriptowej dostępny w systemie, u siebie dobre wyniki uzyskałem z HP Color Laseret 4500PS.


Jeszcze jakaś sensowna nazwa drukarki i gotowe.


Jest bardzo ważne, aby po skonfigurowaniu drukarki wykonać wydruk strony testowej i rozwiązać ewentualne problemy.

Kolejnym krokiem będzie udostępnienie naszej wirtualnej drukarki w sieci z wykorzystaniem usług drukowania dla systemów Linux/Unix (LPD/LPR). Jak to zrobić w systemie Windows 10 podałem w poprzednim wpisie (punkt 5).


Drukujemy w sieci

Teraz możemy już zainstalować drukarkę sieciową w docelowym systemie. Jak to zrobić w przypadku Linuksa i Windows 10 (pod XP jest podobnie) opisywałem poprzednio.

Nie byłbym jednak dinozaurem, gdybym nie spróbował drukowania z poziomu Windows 98 i tu pojawia się problem: ten system nie ma wbudowanej obsługi drukarek LPR, nie obejdzie się zatem bez dodatkowego softu. W internecie znalazłem program KPrint, stworzony kiedyś przez firmę Koyocera dla Windows 95/98/NT/2000/XP, w celu umożliwienia obsługi sieciowej produkowanych przez nich profesjonalnych drukarek. Spróbujmy go wykorzystać do naszych celów.

Instalujemy KPrint (w standardowy dla Windows sposób) i w odpowiednim momencie zaznaczamy opcję uruchomienia kreatora portu (można go też uruchomić po zakończeniu instalacji).


Wybieramy drukowanie z użyciem LPR.


Wpisujemy adres IP naszego komputera z Windows 10 i nazwę nadaną wirtualnej drukarce podczas udostępniania (nazwę kolejki LPD).


W systemie zostanie utworzony port drukarki LPR. Proponuję nie zmieniać jego domyślnej nazwy.


Można już przystąpić do konfiguracji drukarki. W kreatorze wybieramy opcję „Drukarka lokalna” (właśnie tak, nie sieciowa) 


i sterownik drukarki postscriptowej. Tu ciekawostka: używany przeze mnie dotychczas sterownik HP Color LaserJet PS (patrz wpis „Jak drukować bez sterowników”) nie chciał „dogadać się” z oprogramowaniem Koyocera. Drukowały się jakieś śmieci i fragmenty komunikatów PostSriptu. Jednakże wybór sterownika Apple LaserWriter 12/640 PS daje poprawne wyniki.


Jako port drukarki wskazujemy wirtualny port LPR utworzony w programie Koyocera.


Jeszcze tylko jakaś nazwa dobrze opisująca naszą drukarkę i…



nie, teraz jeszcze nie powinniśmy drukować strony testowej, ponieważ musimy wyłączyć dwukierunkową obsługę drukarki.


We właściwościach drukarki wybieramy zakładkę „Szczegóły”…


klikamy przycisk „Ustawienia buforowania...”


i zaznaczamy odpowiednią opcję.


Można już spróbować wydrukować stronę testową. Jeśli wszystko działa poprawnie, powinniśmy otrzymać taki wynik:

Tak więc w epoce Windows 10 również da się drukować bez sterowników.

środa, 4 kwietnia 2018

Drukujemy z Linuksa (i innych systemów) na drukarce Windows

Jeśli mówimy o udostępnianiu drukarki obsługiwanej przez system Windows dla Linuksa lub udostępnianiu drukarki linuksowej dla stacji roboczych Windows, to najczęściej mamy na myśli wykorzystanie protokołu SMB oraz, w przypadku Linuksa – pakietu samba.

Chciałbym tu zaproponować zupełnie inne rozwiązanie, oparte o usługi LPD/LPR, które zostały zaimplementowane w każdej wersji Windows (w Windows 10 Microsoft miał to usunąć, na szczęście dotychczas tego nie zrobił), chociaż nie są instalowane i uruchamiane domyślnie.

Rozwiązanie takie wydaje mi się prostsze, a już na pewno jest o wiele bardziej uniwersalne. Można na przykład drukować z Linuksa na windowsowej drukarce GDI, do której albo w ogóle nie ma sterowników w systemie druku cups, albo istniejący sterownik jest kiepskiej jakości, co się zdarza, gdy społeczność próbuje odtworzyć działanie drukarki, do której producent nie udostępnił specyfikacji. Warunkiem dokonania takiej sztuki jest jednak, aby w systemie Windows dało się skonfigurować wirtualną drukarkę postscriptową, a nie próbowałem tego robić w systemach nowszych niż XP (i nie wiem, czy się w ogóle da).

No dobrze: starczy już tego wstępu, pora brać się do roboty.

1. Konfigurujemy i udostępniamy wirtualną drukarkę PostSript jak opisano tutaj. Jeśli brak sterownika w systemie Linux nie jest problemem, to możemy pominąć całą zabawę z GhostScriptem i udostępnić od razu odpowiednią drukarkę fizyczną.

2. Teraz musimy zainstalować i uruchomić usługi drukowania dla systemów Unix/Linux. W systemie Windows XP robi się to w ten sposób, że uruchamiamy Panel Sterowania, wybieramy ikonę „Dodaj lub usuń programy”, klikamy przycisk „Dodaj/Usuń składniki systemu Windows” i instalujemy „Inne usługi plików i drukowania w sieci” (potrzebna płyta lub katalog instalacyjny).


Wracamy do głównego okna Panelu sterowania, wybieramy ikonę „Usługi”, znajdujemy usługę „Serwer wydruku TCP/IP” i we właściwościach (prawy klawisz myszy -> „Właściwości”) przestawiamy tryb uruchamiania na automatyczny.


Ciekawostka: Drukarka udostępniana poprzez „Serwer wydruku TCP/IP” wcale nie musi być jednocześnie udostępniana w sieci Windows. Można więc po zainstalowaniu usług drukowania powrócić do okna dialogowego udostępniania drukarki (patrz wpis podlinkowany w punkcie 1) i wyłączyć udostępnianie. Ważne, żeby zachowała się „Nazwa udziału” nadana podczas udostępniania – będzie to nazwa kolejki wydruku LPD.


3. Pora przejść do Linuksa. Na potrzeby prezentacji wybrałem dystrybucję Lubuntu 16.04 LTS, bo ma stosunkowo niskie wymagania sprzętowe (to jest w końcu blog dla dinozaurów), a z systemów rodziny Ubuntu korzysta stosunkowo duża liczba użytkowników. No a dlaczego nie Puppy? Testowany przeze mnie w 2015 roku Puppy Precise Retro zdezaktualizował się znacznie bardziej niż Windows XP (chociaż jest od niego o wiele młodszy), zaś jego następca, Tahrpup, to już nie jest dystrybucja dla słabego sprzętu. Moim zdaniem Puppy utracił w ten sposób sens swojego istnienia.

    Ale do rzeczy: uruchamiamy Lubuntu, otwieramy menu (można w tym przypadku mówić o menu „Start”, czy też jakiś linuksiarz się obrazi?), „Narzędzia systemowe”, „Drukarki” i …


Upsss! Czy to nie jest irytujące, że w systemie operacyjnym domyślnie drukarki nie działają?

No dobrze, zainstalujmy tego cups-a (potrzebne połączenie z internetem):
sudo apt install cups

Teraz można już dodać drukarkę. Klikamy przycisk „Dodaj”, rozwijamy „Drukarka sieciowa” i zaznaczamy „Komputer lub drukarka LPD/LPR”.


Wpisujemy adres IP komputera obsługującego drukarkę, a jako nazwę kolejki – nazwę nadaną w systemie Windows podczas udostępniania.

Jako sterownik drukarki wybierzmy Generic Postscript Printer Foomatic/Postscript.


Pozostaje tylko nadanie nazwy i stosownego opisu...


i mamy skonfigurowaną drukarkę.


Możemy teraz wydrukować stronę testową. Jeśli wszystko wykonaliśmy poprawnie, wynik powinien być taki, jak poniżej.


Ktoś jeszcze nie wierzy, że to działa? No to niech sam sprawdzi.

4. Jeśli już mamy w sieci skonfigurowaną drukarkę LPR, to możemy na niej drukować nie tylko z poziomu Linuksa czy innych systemów uniksopodobnych, ale także na przykład… z Windows 10. W ten sposób możemy drukować na drukarce podłączonej do komputera z Windows XP (a nawet z Windows 98, bo i tam da się udostępnić drukarkę w ten sposób), co „windowsowymi” mechanizmami okazuje się trudne do osiągnięcia (bo Microsoft pozmieniał te mechanizmy).

Konfiguracja drukarki w systemie Windows 10 (podobnie jest w 7 i 8) przebiega następująco. Otwieramy Panel Sterowania…

Dygresja: Jeśli ktoś nie może znaleźć panela sterowania, to niech sobie wyszuka przy pomocy wyszukiwarki. Mnie osobiście wkurza to, że Microsoft w każdej kolejnej kompilacji systemu zmienia położenie różnych ustawień w interfejsie. Nie mam czasu ani ochoty, żeby za tym nadążać.

klikamy ikonę „Urządzenia i drukarki”, następnie link „Dodaj drukarkę”. W tym momencie włącza się irytująca funkcja Windows 10 wyszukująca dostępne drukarki sieciowe. Jeśli mamy małą sieć domową, nie stanowi to problemu, jednak w przypadku dużej sieci lepiej szybko kliknąć „Drukarki, której szukam, nie ma na liście” (naszej drukarki i tak nie znajdzie).

Następnie wybieramy opcję „Dodaj drukarkę lokalną lub sieciową z ustawieniami ręcznymi”. To nam zapewni maksymalną kontrolę i nie będziemy potem godzinami zastanawiać się „co nam tu Windows ustawił, że nie działa”.


Tworzymy nowy port drukarki i wybieramy typ „Standard TCP/IP port”.


Wpisujemy adres IP komputera obsługującego drukarkę i nie zaznaczamy opcji „Sprawdź drukarkę i automatycznie wybierz sterownik do użycia”.


W następnym oknie zaznaczamy „LPR”, wpisujemy nazwę kolejki (nazwa nadana drukarce podczas udostępniania pod Windows XP) i koniecznie zaznaczamy opcję „Włączone zliczanie bajtów LPR”. Bez tego nie będzie działać.


Pora wybrać sterownik drukarki. Zaznaczamy jakiś sterownik postscriptowy dostępny w systemie. U mnie dobrym wyborem okazał się „HP Color LaserJet CP4005 PS Class Driver”.


Jeszcze jakaś sensowna nazwa drukarki i gotowe!


Teraz możemy wydrukować stronę testową, pamiętając, że w systemie Windows 10 trzeba w tym celu otworzyć „Właściwości drukarki”, a nie „Właściwości” (kolejne dziwactwo).

Wam też działa, prawda?

5. Drukarkę LPD/LPR można też udostępnić pod kontrolą Windows 10 (podobnie 7 i 8). Wprawdzie nie próbowałem w tym systemie konfigurować wirtualnej drukarki postscriptowej i nie wiem, czy w ogóle się da, ale jest wiele drukarek standardowo obsługujących PostScript czy chociażby PCL. Udostępnienie drukarki w ten sposób pozwoli nam drukować na niej nie tylko z poziomu systemów Linux/Unix, ale również spod Windows XP czy 98.

Otwieramy Panel sterowania, klikamy ikonę „Programy i funkcje”, a następnie link „Włącz lub wyłącz funkcje systemu Windows” (albo, co będzie bardziej w stylu Windows 10, wyszukujemy odpowiedni aplet Panela sterowania w wyszukiwarce) i włączamy dwie funkcje: „Monitor portu LPR” i „Usługa drukowania za pośrednictwem portu LPD”.


Potrzebne będzie połączenie z internetem, gdyż system pobiera niezbędne pliki z serwisu Windows Update.

Teraz we „Właściwościach drukarki” (a nie we „Właściwościach”!) włączamy udostępnianie i wpisujemy nazwę udziału, która staje się nazwą kolejki wydruku LPD.

 

Podobnie jak to miało miejsce pod Windows XP, udostępnianie można teraz wyłączyć. Ważne, żeby zachowała się wpisana nazwa udziału.


Pozostaje podłączyć drukarkę w docelowym systemie. Jak to zrobić w Linuksie napisałem powyżej (tylko trzeba odpowiedni sterownik wybrać, może jakiś generic PCL), a pod Windows XP – kto doczytał do tego miejsca, na pewno sobie poradzi. Powodzenia!

ś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?

wtorek, 13 czerwca 2017

Stare i nowe, czyli synchronizacja Pocket PC z Windows 10


Kiedyś dawno temu, przedstawiając swój sprzęt, pisałem o Pocket PC („Komputer na dłoni”). Urządzenia te nadal są u mnie w użyciu, ale w międzyczasie zrodził się problem: jak je synchronizować z komputerem stacjonarnym lub laptopem pracującym pod kontrolą Windows 10?

Temat może się wydawać dość egzotyczny: kto dzisiaj, w dobie tabletów i smartfonów, używa jeszcze Pocket PC (poza dinozaurami oczywiście)? Co jednak mają powiedzieć właściciele nawigacji samochodowych z systemem Windows CE, które do aktualizacji mapy wymagają połączenia z komputerem? Pomimo konkurencji ze strony smartfonów i małych tabletów takie urządzenia wciąż jeszcze są używane (wygodnie jest mieć oddzielne urządzenie do nawigacji), a problem ich również dotyczy (stary Windows Mobile to nieco zmieniona wersja Windows CE).

W czasach Windows 98, 2000 czy XP sprawa była prosta: do komunikacji z PC służył Microsoft ActiveSync, a każdy właściciel Pocket PC otrzymywał ze swoim urządzeniem specjalną wersję programu Microsoft Outlook 2002, aby nawet nie mając pełnej licencji na Office miał z czym synchronizować swoje kontakty, terminy i maile. Z punktu widzenia użytkownika to sprawa bardzo istotna: chodzi nie tylko o to, żeby mieć stale w kieszeni swoje notatki i kontakty, ale również o to, że wprowadzanie informacji bezpośrednio na urządzeniu jest niewygodne, w przypadku większej ilości danych znacznie łatwiej posłużyć się komputerem z „normalną” klawiaturą.

W systemie Windows Vista ActiveSync został zastąpiony przez Centrum obsługi urządzeń z systemem Windows Mobile. Odpowiednie pliki instalacyjne można pobrać bezpośrednio ze strony Microsoftu, w wersji 32-bitowej lub 64-bitowej, zależnie od posiadanego systemu. Oprogramowanie to działa również pod Windows 7, ale jeśli chodzi o synchronizację danych z Outlookiem, to mam mieszane doświadczenia. O ile w 32-bitowej wersji systemu udało mi się zainstalować Outlook 2002 i zsynchronizować dane (nie jestem pewny czy program działa całkowicie poprawnie, długo nie testowałem), to w wersji 64-bitowej synchronizacja nie jest możliwa: Centrum obsługi nie może zalogować się do Outlooka. Być może synchronizacja zadziała z którąś z komercyjnych wersji Microsoft Office (z najnowszą na pewno nie), ale nie mam czasu ani oprogramowania, aby to sprawdzić. Jeśli ktoś ma doświadczenia w tym zakresie, proszę o informację w komentarzu. Chętnie uzupełnię wpis lub zamieszczę linki do odpowiednich materiałów.
 
W przypadku Windowa 8 i 10 trick polega na tym, że Centrum obsługi musi być uruchamiane w trybie zgodności z Windows 7 (a nie Vista!), a więc po instalacji (uwaga: jeśli instalator będzie chciał zainstalować funkcje .NET Framework 3.5, należy się zgodzić) musimy to ustawić. Klikamy ikonkę menu startowego (Windows 10) lub odnajdujemy aplikację korzystając z funkcji „wyszukaj”, następnie klikamy prawym klawiszem myszy ikonę „Centrum obsługi urządzeń z systemem Windows Mobile”, z menu kontekstowego wybieramy „Więcej” i „Otwórz lokalizację pliku”. Następnie, znowu prawym klawiszem, klikamy ikonę odpowiedniego pliku, wybieramy „Właściwości” i na zakładce „Zgodność” zaznaczamy odpowiednie ustawienia.

Teraz po połączeniu Pocket PC z komputerem urządzenie powinno być wykryte, następnie instalują się sterowniki i uruchamia się automatycznie „Centrum obsługi”. Możemy skonfigurować synchronizację plików, zakładek do ulubionych witryn sieci Web (tylko po co, skoro dostępny na urządzeniu przenośnym Pocket Internet Explorer dzisiaj już prawie do niczego się nie nadaje), instalować, aktualizować i odinstalowywać programy na naszym kieszonkowym komputerku (to nam rozwiązuje problem z nawigacją), mamy swobodny dostęp do systemu plików urządzenia. Jest też, za pośrednictwem komputera stacjonarnego, połączenie z internetem (raczej do aktualizacji informacji drogowych w nawigacji niż przeglądania stron WWW).

No dobrze: a czego nie ma? Niestety nie ma synchronizacji danych z Outlookiem. Najnowszej wersji Centrum obsługi nie wykrywa, tak jakby program nie został zainstalowany. Można próbować ustawić Outlook jako domyślny program pocztowy, zgodnie z wyświetlonym komunikatem, ale najprawdopodobniej to nic nie da. Nie pomoże też zainstalowanie wersji Outlook 2002 dystrybuowanej z Pocket PC. Jeśli nawet program da się zainstalować, Centrum się z nim nie komunikuje.

Warto natomiast synchronizować dane z Thunderbirdem, a za jego pośrednictwem – na przykład z usługami chmurowymi Google. Jest to możliwe i synchronizacja taka działa w przypadku każdej wersji Windows, ale o tym następnym razem.

wtorek, 28 lutego 2017

Windows XP – powrót starego demona?


W zasadzie staram się nie pisać na tym blogu o systemie Windows XP, uważam bowiem, że wciąż jeszcze można znaleźć w internecie wystarczająco dużo materiałów, lepszych niż ja mógłbym stworzyć. Ostatnio jednak spotkałem się z problemem, który sprowokował mnie do uczynienia wyjątku.

Użytkownicy Windows XP (byli, lub ci, którzy jak ja używają tego systemu do dzisiaj) pamiętają zapewne taką sytuację: w niedługim czasie po uruchomieniu komputera wydajność systemu drastycznie spada, praktycznie nic nie da się zrobić, menedżer zadań pokazuje, że proces svhost.exe obciąża procesor do 100%. Problem był szeroko opisywany, tutaj wspomnę tylko że był związany z automatycznymi aktualizacjami systemu i został naprawiony przez Microsoft na krótko przed zakończeniem wsparcia dla Windows XP.

Ostatnio jednak na kilku maszynach z XP spotkałem się z podobnym zjawiskiem: słaba wydajność systemu, svhost.exe obciąża procesor w porywach do 50%. To wprawdzie nie 100%, ale wystarczy uruchomić jedną czy dwie aplikacje, aby system się „zatkał”. Czyżby stary demon powrócił? Wprawdzie wsparcie dla systemu zakończyło się i Microsoft nie publikuje już nowych poprawek, jednak serwery nadal działają i dotychczas opracowane aktualizacje są dostępne. Może coś się tam jednak na tych serwerach zmieniło?

Niestety w tej sprawie nie możemy już liczyć na Microsoft. Oni zakończyli wsparcie i mają prawo do tego, żeby nikt im Windowsem XP głowy nie zawracał (natomiast nie mają prawa wymuszać na użytkownikach przejście na nowy system, ale to już inny temat). Postanowiłem spróbować wyłączyć w systemie aktualizacje automatyczne, w końcu jeśli wszystkie poprawki zostały pobrane, to nowych i tak nie będzie.

Pierwsze co się narzuca, to wyłączenie aktualizacji automatycznych w panelu sterowania. Dodatkowo należy w ustawieniach centrum zabezpieczeń wyłączyć komunikaty związane z automatyczną aktualizacją. To jednak nie załatwia sprawy: usługa automatycznej aktualizacji nadal działa w tle i nadal próbuje komunikować się z serwerami Microsoftu. Należy całkowicie wyłączyć usługę automatycznej aktualizacji, jak to przedstawia ilustracja (Panel sterowania -> Narzędzia administracyjne -> Usługi, kliknąć prawym klawiszem na usłudze „Aktualizacje automatyczne” i wybrać „Właściwości”).

Opisane rozwiązanie to tylko sugestia, nie badałem szczegółowo zjawiska i nie mam możliwości ani czasu, żeby to zrobić. U mnie jednak opisane działania doprowadziły do przywrócenia sprawności systemu, a obciążenie procesora w stanie spoczynku (przy aktywnym programie antywirusowym) nie przekracza kilku procent.

Sztuczka okazała się również skuteczna w innym przypadku, kiedy menedżer zadań nie wykazywał wprawdzie znacznego obciążenia procesora przez svhost.exe (sięgało kilku procent), ale za to system był spowalniany przez intensywne operacje dyskowe spowodowane działaniami na pliku wymiany.

Podsumowując: Windows XP to całkiem wydajny system operacyjny, a jeśli nagle nastąpi spadek wydajności, to nie znaczy, że trzeba czym prędzej zmienić system (nowe wersje wcale nie są sprawniejsze, zwłaszcza na starszym sprzęcie), tylko że coś się źle dzieje. Jeśli w grę nie wchodzą jakieś wirusy czy trojany (to trzeba sprawdzić najpierw), czy jakieś nowo zainstalowane oprogramowanie (spróbujmy odinstalować), to może właśnie to, co opisałem powyżej.