Konfiguruję system, aby zapewnić aktualność oprogramowania Java w naszym biurze. Każdy ma wszystkie różne wersje Javy, wiele z nich jest starych i niepewnych, a niektóre pochodzą nawet z wersji 1.4. Mam serwer System Center Essentials, który może wypychać i dyskretnie uruchamiać plik .msi, i już przetestowałem, czy można zainstalować najnowszą Javę. Ale stare wersje (takie jak 1.4) nie są usuwane przez instalatora, więc muszę je odinstalować. Wszyscy korzystają z systemu Windows XP.
Zbiegiem okoliczności jest to, że Sun właśnie kupił Oracle, a Oracle zmieniło teraz wszystkie wystąpienia „Sun” na „Oracle” w Javie. Dlatego nie mogę się martwić odinstalowaniem najnowszej wersji oprogramowania Java, ponieważ mogę po prostu wyszukać i odinstalować wszystkie programy Sun Java.
Znalazłem następujący skrypt wsadowy na postu na forum, który wyglądał obiecująco:
@echo off & cls
Rem List all Installation subkeys from uninstall key.
echo Searching Registry for Java Installs
for /f %%I in ('reg query HKLM\SOFTWARE\microsoft\windows\currentversion\uninstall') do echo %%I | find "{" > nul && call :All-Installations %%I
echo Search Complete..
goto :EOF
:All-Installations
Rem Filter out all but the Sun Installations
for /f "tokens=2*" %%T in ('reg query %1 /v Publisher 2^> nul') do echo %%U | find "Sun" > nul && call :Sun-Installations %1
goto :EOF
:Sun-Installations
Rem Filter out all but the Sun-Java Installations. Note the tilda + n, which drops all the subkeys from the path
for /f "tokens=2*" %%T in ('reg query %1 /v DisplayName 2^> nul') do echo . Uninstalling - %%U: | find "Java" && call :Sun-Java-Installs %~n1
goto :EOF
:Sun-Java-Installs
Rem Run Uninstaller for the installation
MsiExec.exe /x%1 /qb
echo . Uninstall Complete, Resuming Search..
goto :EOF
Jednak po uruchomieniu skryptu otrzymuję następujące dane wyjściowe:
Searching Registry for Java Installs
'DEV_24x6' is not recognized as an internal or external command,
operable program or batch file.
'SUBSYS_542214F1' is not recognized as an internal or external command,
operable program or batch file.
A potem wydaje się, że się zawiesza i przytrzymuję Ctrl-C, aby go zatrzymać.
Czytając skrypt, nie rozumiem wszystkiego, ale nie wiem, dlaczego próbuje uruchamiać klucze rejestru jako programy. Co jest nie tak ze skryptem wsadowym? Jak mogę to naprawić, abym mógł jakoś zmienić go w MSI i wdrożyć go dla wszystkich, aby posprzątać to biuro?
Lub alternatywnie, czy możesz zasugerować lepsze rozwiązanie lub istniejący plik MSI, aby zrobić to, czego potrzebuję? Chcę się tylko upewnić, że wszystkie starsze wersje Javy są usuwane z komputerów wszystkich użytkowników, ponieważ słyszałem o exploitach, które powodują ładowanie stron internetowych przy użyciu starych wersji Javy i chcę ich unikać.
źródło
Odpowiedzi:
Używamy tego, co działa świetnie jako skrypt startowy:
źródło
Ta linia odinstaluje wszystkie wersje JAVA:
Produkt wmic, w którym „nazwa jak 'Java %% %%” ”wywołuje deinstalację / brak interakcji
źródło
Fragment: http://www.java.com/en/download/faq/remove_olderversions.xml
Znalazłem następujący VBScript, który teoretycznie właściwie usuwa wcześniejsze wersje Javy. Najlepiej czytać od dołu do góry , ponieważ inni dostosowali go do perfekcji:
http://www.appdeploy.com/messageboards/tm.asp?m=29809
źródło
Sprawdź to proste, ale bardzo przydatne polecenie:
skradziony stąd
źródło
Jest jakiś kod VBScript tutaj , że powinieneś być w stanie wdrożyć za pomocą Group Policy bez MSI.
źródło
Sprawdzona odpowiedź najczęściej głosowana ma pewne problemy. Identyfikatory CLSID serii 6.0 są niepoprawne na podstawie moich testów.
Oto identyfikatory CLSID, które działały dla każdej serii JRE. Zamień xx na żądane wersje, które chcesz usunąć. Proszę korzystać z /server//a/187552/172014
Zalecam również dodanie opcji / norestart po / q na wypadek, gdyby MSI JRE serii 1.4.2 chciały zrestartować komputer.
źródło
Nadal możesz to osiągnąć za pomocą skryptu Batch. Używam następującego skryptu;
Możesz dostosować / zmodyfikować sposób, w jaki chcesz dopasować do swoich potrzeb. ;-)
źródło
To zadziałało dla mnie. Odinstalowuje wszystkie wersje Javy (32-bitowe i 64-bitowe) przed najnowszą wersją (która jest w wersji 8.0.66 w momencie pisania).
źródło