Saya sedang menyiapkan sistem untuk menjaga agar Java di kantor kami tetap terbaru. Setiap orang memiliki semua versi Jawa yang berbeda, banyak dari mereka tua dan tidak aman, dan beberapa berasal dari 1.4. Saya memiliki server System Center Essentials yang dapat mendorong dan menjalankan file .msi, dan saya sudah menguji bahwa ia dapat menginstal Java terbaru. Tetapi versi lama (seperti 1.4) tidak dihapus oleh penginstal, jadi saya harus mencopotnya. Setiap orang menjalankan Windows XP.
Kebetulan rapi adalah bahwa Sun baru saja dibeli oleh Oracle dan Oracle sekarang telah mengubah semua instance "Sun" menjadi "Oracle" di Jawa. Jadi, saya dapat dengan mudah tidak perlu khawatir tentang menghapus instalasi Java terbaru, karena saya hanya dapat melakukan pencarian dan menghapus semua program Sun Java.
Saya menemukan skrip batch berikut pada posting forum yang tampak menjanjikan:
@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
Namun, ketika saya menjalankan skrip, saya mendapatkan output berikut:
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.
Dan kemudian muncul hang dan saya ctrl-c untuk menghentikannya.
Membaca skrip, saya tidak mengerti segalanya, tapi saya tidak tahu mengapa ini mencoba menjalankan potongan kunci registri sebagai program. Apa yang salah dengan skrip batch? Bagaimana saya bisa memperbaikinya, sehingga saya bisa beralih ke entah bagaimana mengubahnya menjadi MSI dan menyebarkannya ke semua orang untuk membersihkan kantor ini?
Atau sebagai alternatif, dapatkah Anda menyarankan solusi yang lebih baik atau file MSI yang ada untuk melakukan apa yang saya butuhkan? Saya hanya ingin memastikan untuk mengeluarkan semua versi lama Java dari komputer semua orang, karena saya pernah mendengar tentang eksploit yang menyebabkan halaman web dimuat menggunakan Java versi lama dan saya ingin menghindarinya.
sumber
Jawaban:
Berikut ini adalah apa yang kami gunakan, berfungsi dengan baik sebagai skrip startup:
sumber
Baris ini akan menghapus semua versi JAWA:
produk wmic di mana "nama seperti 'Java %% %%'" panggil penghapusan / nointeraktif
sumber
Kutipan dari: http://www.java.com/en/download/faq/remove_olderversions.xml
Saya menemukan VBScript berikut yang, secara teori, dengan benar menghapus versi Java sebelumnya. Terbaik untuk dibaca dari bawah ke atas , karena orang lain telah mengubahnya dengan sempurna:
http://www.appdeploy.com/messageboards/tm.asp?m=29809
sumber
Periksa perintah sederhana namun sangat berguna ini:
dicuri dari sini
sumber
Ada beberapa kode vbscript di sini yang dapat Anda gunakan melalui Kebijakan Grup tanpa msi.
sumber
Jawaban terverifikasi terpilih teratas memiliki beberapa masalah dengannya. CLSIDs 6.0 series tidak benar berdasarkan pengujian saya.
Berikut adalah CLSID yang saya temukan berfungsi untuk setiap seri JRE. Ganti xx untuk versi yang diinginkan yang ingin Anda hapus. Silakan gunakan dengan /server//a/187552/172014
Saya sarankan menambahkan / norestart setelah / q juga hanya dalam kasus seri 1.4.2 JRE MSI ingin reboot.
sumber
Anda masih dapat menyelesaikan dengan menggunakan skrip Batch. Saya menggunakan skrip berikut;
Anda dapat menyesuaikan / memodifikasi cara yang Anda inginkan sesuai dengan kebutuhan Anda. ;-)
sumber
Ini berhasil untuk saya. Mencopot pemasangan semua versi Java (32-bit dan 64-bit) sebelum versi terbaru (yaitu v8.0.66 pada saat penulisan).
sumber