Java'yı ofisimizde güncel tutmak için bir sistem kuruyorum. Herkes Java'nın farklı sürümlerine sahiptir, birçoğu eski ve güvensizdir ve bazıları 1.4'e kadar uzanmaktadır. Dışarı itip sessizce bir .msi dosyasını çalıştırabilen bir System Center Essentials sunucum var ve zaten en son Java'yı yükleyebildiğini test ettim. Ancak eski sürümler (1.4 gibi) yükleyici tarafından kaldırılmaz, bu yüzden kaldırmam gerekir. Herkes Windows XP çalıştırıyor.
Temiz tesadüf, Sun'ın Oracle tarafından yeni satın alınması ve Oracle'ın artık "Sun" ın tüm örneklerini Java'daki "Oracle" olarak değiştirmesidir. Bu nedenle, en son Java'yı kaldırma konusunda endişelenmem gerekmiyor, çünkü sadece bir arama yapabilir ve tüm Sun Java programlarını kaldırabilirim .
Ben umut verici görünüyordu bir forum sonrası aşağıdaki toplu komut bulundu :
@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
Ancak, komut dosyasını çalıştırdığımda, aşağıdaki çıktıyı alıyorum:
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.
Ve sonra asmak gibi görünüyor ve ben durdurmak için ctrl-c.
Senaryoyu okurken, her şeyi anlamıyorum, ama neden program olarak kayıt defteri anahtarlarının parçalarını çalıştırmaya çalıştığını bilmiyorum. Toplu komut dosyasında sorun nedir? Nasıl düzeltebilirim, böylece bir şekilde MSI'ya dönüştürüp bu ofisi temizlemek için herkese dağıtabilirim?
Ya da alternatif olarak, ihtiyacım olanı yapmak için daha iyi bir çözüm veya mevcut bir MSI dosyası önerebilir misiniz? Web sayfalarının Java'nın eski sürümlerini kullanarak yüklenmesine neden olan istismarları duyduğumdan ve bunlardan kaçınmak istediğimden, Java'nın tüm eski sürümlerini herkesin bilgisayarlarından çıkardığınızdan emin olmak istiyorum.