Java 7 począwszy od wersji oznaczonej numerem 7u10 a skończywszy na aktualnej 7u25 zawiera wbudowaną funkcję powiadamiania użytkownika, w przypadku stwierdzenia nieaktualności danej wersji lub pojawienia się nowych luk w zabezpieczeniach Javy. Użytkownik po napotkaniu strony zawierającej kod Javy (w przypadku nieaktualnej wersji) zostaje poinformowany o niewystarczającym poziomie bezpieczeństwa i proszony jest o aktualizację aktualnie zainstalowanej wersji (Rys.1.). 

Komunikat "Your Java verson is insecure" Java 7u21

Rys.1. Komunikat "Your Java verson is insecure" Java 7u21

Dostępne są tu następujace scenariusze:

Java Update (Aktualizuj) – przekierowuje przeglądarkę internetową do serwisu java.com w celu pobrania najnowszej wersji oprogramowania.

Block (Blokuj) – blokuje działanie aplikacji Javy w bieżącej sesji przeglądarki.

Later (Później) – zezwala na działanie aplikacji Javy (komunikat ten nie będzie ponownie wyświetlany przez 7 dni).

Do not ask again until the next update is available (Nie pytaj ponownie aż do pojawienia się nowszej wersji) – po zaznaczeniu tego pola, komunikat „Your Java version is insecure” nie będzie wyświetlany, aż do pojawienia się następnej aktualizacji Javy.

Funkcja kontrolująca aktualność danej wersji Javy, w pierwszej kolejności porównuje znacznik "Expiration Date" umieszczony w pliku "BuiltInProperties.class"  z aktualną datą. Plik "BuiltInProperties.class" jest skompresowany w pliku "deploy.jar" (do wypakowania pliku można użyć np. 7-Zipa).

Znacznik "Expiration Date" w pliku "BuiltInProperties.class"

Rys.2. Znacznik "Expiration Date" w pliku "BuiltInProperties.class"

Umiejscowienie plików:

deploy.jar – %ProgramFiles%\Java\jre7\lib\

BuiltInProperties.class – com\sun\deploy\config\  (po wypakowaiu z pliku "deploy.jar")

Po przekroczeniu daty umieszczonej w znaczniku "Expiration Date" (Rys.2.), aktywowana jest procedura wyświetlająca komunikat o nieaktualnej wersji Javy.

Możliwe scenariusze postępowania: (do testów możemy użyć następujący adres: http://www.java.com/en/download/installed.jsp?detect=jre&try=1)

1. Użytkownik (bez praw administracyjnych) wybiera "Update (Aktualizuj)". Po wybraniu tej opcji, użytkownik zostanie przeniesiony na stronę z aktualizacją Javy i poproszony o przeprowadzenie nowej instalacji.

Strona z aktualizacją Javy

Rys.3. Strona z aktualizacją Javy 

Po potwierdzeniu przystapienia do procesu instalacji "Agree and Start Download", wyświetlone zostaną jeszcze dwa komunikaty informujące o uruchomieniu instalacji Javy, po czym instalacja zostanie przerwana z powodu braku odpowiednich uprawnień do instalacji oprogramowania w systemie.

2. Użytkownik wybiera "Block (Blokuj)". Po wybraniu tej opcji, uruchamianie apletów Javy w przeglądarce zostanie zablokowane. 

Strona z zablokowaną możliwością uruchamiania apletów Javy

Rys.4. Strona z zablokowaną możliwością uruchamiania apletów Javy

3. Użytkownik wybiera "Later (Później)". Po wybraniu tej opcji, kod zawarty w aplecie Javy zostanie wykonany. Po upływie tygodnia użytkownik zostanie ponownie poinformowany o nieaktualnej wersji Javy.

trona z apletem Javy po wybraniu opcji "Later (Póżniej)"

Rys.5. Strona z apletem Javy po wybraniu opcji "Later (Póżniej)"

Rozwiązanie:

Spośród trzech powyżej opisanych scenariuszy postępowania najodpowiedniejszym jest zaznaczenie pola "Do not ask again until the next update is available (Nie pytaj ponownie aż do pojawienia się nowszej wersji)" oraz wybranie przycisku "Later (Później)". Całość możemy zautomatyzować poprzez dodanie następujących wpisów do rejestru

[HKEY_CURRENT_USER\Software\AppDataLow\Software\JavaSoft\DeploymentProperties]

"deployment.javaws.autodownload"="NEVER"

"deployment.expiration.decision.10.21.2"="later"

"deployment.expiration.decision.suppression.10.21.2"="true"

"deployment.version"="7.21"

"deployment.expired.version"="10.21.2"

Ustawienia w rejestrze po wybraniu opcji "Later (Póżniej)"

Rys.6. Wpisy rejestru po wybraniu opciji "Do not ask again until the next update is available" oraz przycisku "Later"

gdzie:

deployment.javaws.autodownload – flaga ustawiająca automatyczne ściąganie aktualizacji Javy (możliwe ustawienia: "ALWAYS", "PROMPT", "NEVER")

deployment.expiration.decision.x.x.x  flaga, pod którą zapisywany jest scenariusz postępowania w przypadku napotkania na nieaktualną wersję Javy (możliwe ustawienia: "update", "block", "later")

deployment.expiration.decision.suppression.x.x.x  flaga, pod którą zapisywany jest stan wyboru pola "Do not ask again until…" (możliwe ustawienia: "false", "true")

deployment.version – flaga, pod która zapisywana jest aktualna wersja Javy

deployment.expired.version – flaga, pod którą zapisywana jest aktualnie zainstalowana wersja Javy 

oraz modifikację pliku "deployment.properties", który znajdziemy w zależności od użytej konfiguracji:

– poziom użytkownika  (domyślnie):

Windows XP – "%APPDATA%\Sun\Java\Deployment\"

Windows 7 – "%USERPROFILE%\AppData\LocalLow\Sun\Java\Deployment\"

– poziom systemowy:

Windows XP/7 – "%WinDir%\Sun\Java\Deployment\"

Plik "deployment.properties" po wprowadzonych zmianach:

#deployment.properties

deployment.javaws.autodownload=NEVER

deployment.expiration.decision.10.21.2=later

deployment.expiration.decision.suppression.10.21.2=true

deployment.version=7.21

liczba "10.21.2" określa wersję Javy – "Java 7 Update 21".

Tak przygotowany plik "deployment.properties" oraz wpisy rejestru najlepiej instalować przy użyciu transformacj (.mst) lub skryptu.

 

Błąd apletu Javy "Java(TM) Platform SE binary has stopped working"

W wersji Javy przeznaczonej dla 32-bitowych systemów po instalacji pod Windows 7 występuje problem z wyświetlaniem apletu w panelu sterowania – "Java(TM) Platform SE binary has stopped working", zaprezentowany poniżej (Rys.6.)

Java - Bląd apletu

Rys.6. Błąd apletu Javy w panelu sterowania Windows

Co ciekawego ta sama wersja zainstalowana pod Windows XP lub Windows 7 (64-bit) funkcjonuje bezproblemowo. Rozwiązaniem w tym przypadku jest wprowadzenie dodatkowego klucza do rejestru, który przywraca pełną funkcjonalność apletowi Javy:

[HKEY_LOCAL_MACHINE\Software\JavaSoft\Auto Update]

"AUVersion"="2.1.9.5"

Wpis naprawiający błąd apletu Javy

Rys.7. Klucz rejestru przywracający pełną funkcjonalność apletu Javy w panelu sterowania Windows

 

Dlaczego po wybraniu aktualizacji Javy podczas odwiedzania stron zawierających kod Javy następuje automatyczne przekierowanie do serwisu Java.com?

Sytuacja ta może występować w przypadku, gdy użutkownik wybrał opcję "Update (Aktualizuj)" i instalacja nie została pomyślnie ukończona. Powodem może być brak wystarczjących uprawnień do instalacji oprogramowania w systemie, przerwanie instalacji przez użytkownika lub błąd instalacji.

 Rozwiązanie:

1. Należy usunąć następującą wartość rejestru "deployment.expiration.decision.x.x.x" w gałęzi rejestru "HKEY_CURRENT_USER\Software\AppDataLow\Software\JavaSoft\DeploymentProperties" 

a następnie uruchomić stronę z apletem Javy i wybrać opcję inną niż "Update (Aktualizuj)".

2. Drugą z możliwości jest przestawienie zegara systemowego o rok do przodu. Po przestawieniu zegara należy ponownie otworzyć stronę z apletem Javy. Spowoduje to ponowne wyświetlenie okienka proszącego o aktualizację aktualnie zainstalowanej wersji Javy oraz możliwość wyboru opcji innej niż "Update (Aktualizuj)".

Problem z automatycznym przekierowywaniem do serwisu "Java.com" przy jednoczesnym niewyświetlaniu komunikatu z informacją o aktualizacji ma być naprawiony wraz z wprowadzeniem następnych wersji Javy. 

Be Sociable, Share!