सभी सन जावा संस्करणों की स्थापना रद्द करने के लिए फ़ाइल बैच?


11

मैं हमारे कार्यालय में आज तक जावा रखने के लिए एक प्रणाली स्थापित कर रहा हूं। सभी के पास जावा के सभी अलग-अलग संस्करण हैं, उनमें से कई पुराने और असुरक्षित हैं, और कुछ वापस 1.4 के रूप में डेटिंग करते हैं। मेरे पास एक सिस्टम सेंटर एसेंशियल सर्वर है जो पुश आउट कर सकता है और चुपचाप एक .msi फ़ाइल चला सकता है, और मैंने पहले ही परीक्षण कर लिया है कि यह नवीनतम जावा को स्थापित कर सकता है। लेकिन पुराने संस्करणों (जैसे 1.4) को इंस्टॉलर द्वारा हटाया नहीं जाता है, इसलिए मुझे उन्हें अनइंस्टॉल करने की आवश्यकता है। हर कोई विंडोज़ एक्सपी चला रहा है।

साफ-सुथरा संयोग है कि ओरेकल द्वारा खरीदे गए सूर्य और ओरेकल ने अब जावा में "सन" के सभी उदाहरणों को "ओरेकल" में बदल दिया है। इसलिए, मुझे आसानी से नवीनतम जावा को अनइंस्टॉल करने के बारे में चिंता करने की ज़रूरत नहीं है, क्योंकि मैं सिर्फ एक खोज कर सकता हूं और सभी सन जावा कार्यक्रमों की स्थापना रद्द कर सकता हूं ।

मैं एक मंच पोस्ट पर निम्नलिखित बैच स्क्रिप्ट पाया जो आशाजनक लग रहा था:

@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

हालाँकि, जब मैं स्क्रिप्ट चलाता हूं, तो मुझे निम्न आउटपुट मिलते हैं:

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.

और फिर यह लटका हुआ प्रतीत होता है और मैं इसे रोकने के लिए ctrl-c करता हूं।

स्क्रिप्ट के माध्यम से पढ़ना, मुझे सब कुछ समझ में नहीं आता है, लेकिन मुझे नहीं पता कि यह कार्यक्रमों के रूप में रजिस्ट्री कुंजी के टुकड़े चलाने की कोशिश क्यों कर रहा है। बैच स्क्रिप्ट में क्या गलत है? मैं इसे कैसे ठीक कर सकता हूं, ताकि मैं किसी तरह इसे एमएसआई में बदल सकूं और इस कार्यालय को साफ करने के लिए सभी को तैनात कर सकूं।

या वैकल्पिक रूप से, क्या आप एक बेहतर समाधान या मौजूदा एमएसआई फ़ाइल का सुझाव दे सकते हैं जो मुझे चाहिए? मैं सिर्फ सभी के कंप्यूटर के जावा के सभी पुराने संस्करणों को प्राप्त करना सुनिश्चित करना चाहता हूं, क्योंकि मैंने उन कारनामों के बारे में सुना है जिनके कारण वेब पेज जावा के पुराने संस्करणों का उपयोग कर लोड होते हैं और मैं उन से बचना चाहता हूं।


जिज्ञासा से बाहर आप ऐसा क्यों करना चाहते हैं। जावा संस्करण असंगति ने मुझे दर्द का कोई अंत नहीं दिया है (एचपी मैं आपको देख रहा हूं)। अगर कुछ भी मुझे
जिम बी

3
सुरक्षा प्राथमिक चिंता होगी। जेवीएम के आउटडेटेड संस्करणों का हाल के हमलों में बहुत लोकप्रिय शोषण किया गया है। यहां तक ​​कि विंडोज 7 मशीनों को भी प्रभावित किया गया था।
जोशुआ

1
सुरक्षा के लिए बिल्कुल। मेरे पास पिछले कुछ घंटों में नवीनतम जावा को कार्यालय में सफलतापूर्वक तैनात किया गया है, लेकिन वे पुराने संस्करण अभी भी बने हुए हैं। मैंने उन कारनामों के बारे में सुना है जो जावा के एक पुराने संस्करण का उपयोग करने में सक्षम थे जो स्पाइवेयर स्थापित करने के लिए एक मशीन में स्थापित थे, लेकिन निष्क्रिय थे, और मैं कंप्यूटर पर केवल नवीनतम जावा होने से किसी भी तरह से बचना चाहता हूं।
विकेट

यहाँ एक और तरीका है जो मैंने अभी पाया: ivan.dretvic.com/2011/02/…
क्रेग रिंगर

जवाबों:


6

निम्नलिखित वह है जो हम उपयोग करते हैं, एक स्टार्टअप स्क्रिप्ट के रूप में महान काम करता है:

on error resume next

dim WshShell
dim RegKey
dim ScriptVerKey

Set WshShell = CreateObject("WScript.Shell")

'checks to see if registry key exists, if it does, the cleanup runs.
RegKey = "HKLM\SOFTWARE\EDU\Cleanup\"
ScriptVerKey = WshShell.RegRead(RegKey & "JAVAOldVer")

if ScriptVerKey <> "1" Then 
  Cleanup()
 Else 
  WScript.Quit
End If

Sub Cleanup()

' Uninstall Java 1.4.1.01
WshShell.Run "msiexec /x {1666FA7C-CB5F-11D6-A78C-00B0D079AF64} /q",1,True
' Uninstall Java 1.4.2.04
WshShell.Run "msiexec /x {7148F0A8-6813-11D6-A77B-00B0D0142040} /q",1,True
' Uninstall Java 5.0.2
WshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0150020} /q",1,True
' Uninstall Java 5.0.4
WshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0150040} /q",1,True
' Uninstall Java 5.0.5
WshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0150050} /q",1,True
' Uninstall Java 5.0.6
WshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0150060} /q",1,True
' Uninstall Java 5.0.7
WshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0150070} /q",1,True
' Uninstall Java 5.0.10
WshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0150100} /q",1,True
' Uninstall Java 5.0.11
WshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0150110} /q",1,True
' Uninstall Java 5.0.12
'WshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0150120} /q",1,True
' Uninstall Java 6.0.0
WshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0160000} /q",1,True
' Uninstall Java 6.0.1
WshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0160010} /q",1,True
' Uninstall Java 6.0.2
WshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0160020} /q",1,True
' Uninstall Java 6.0.5
WshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0160050} /q",1,True
' Uninstall Java 6.0.30 (020608)
WshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0160030} /q",1,True


'regkey below stops the script from running again
WshShell.RegWrite "HKLM\Software\EDU\", "Default"
WshShell.RegWrite "HKLM\Software\EDU\Cleanup\", "Default"
WshShell.RegWrite "HKLM\Software\EDU\Cleanup\JAVAOldVer", 1, "REG_SZ"

End Sub

एक दम बढ़िया! मैंने अभी तक पुराने जावा संस्करणों को साफ नहीं किया है, इसलिए मुझे लगता है कि मैं इसे अपने स्टार्टअप स्क्रिप्ट में एकीकृत करूंगा। साझा करने के लिए धन्यवाद!
Ricket

8

यह पंक्ति JAVA के सभी संस्करणों की स्थापना रद्द करेगी:

विकी उत्पाद जहां "नाम जैसे 'जावा %% %%'" कॉल अनइंस्टॉल / nointeractive है


धन्यवाद। यह मेरे सिस्टम पर अच्छा काम करता है। इसने मेरे जावा 7 के साथ ही मेरे जावा 8 संस्करणों को भी इस एकल कमांड के साथ हटा दिया।
माइकल एस।

धन्यवाद! यह सभी पुराने जावा संस्करणों को हटाने के लिए सबसे अच्छा cmd है। बस यह सुनिश्चित करने की आवश्यकता है कि इसे व्यवस्थापक विशेषाधिकार के साथ चलाया जाए।
पेट्रीक

1

से अंश: http://www.java.com/en/download/faq/remove_olderversions.xml

समय के साथ, आपने उपलब्ध जावा सामग्री को चलाने के लिए जावा के कई संस्करण स्थापित किए होंगे। अतीत में, प्रत्येक जावा अपडेट आपके सिस्टम पर अलग-अलग निर्देशिकाओं में स्थापित किया गया था। हालांकि, जावा अपडेट अब एक ही डायरेक्टरी में इंस्टॉल हो गए हैं।

क्या मुझे जावा के पुराने संस्करणों को हटा देना चाहिए? हम अत्यधिक अनुशंसा करते हैं कि उपयोगकर्ता आपके सिस्टम से जावा के सभी पुराने संस्करणों को हटा दें। अपने सिस्टम पर जावा के पुराने और असमर्थित संस्करणों को रखना एक गंभीर सुरक्षा जोखिम प्रस्तुत करता है। अपने सिस्टम से जावा के पुराने संस्करणों को हटाने से यह सुनिश्चित होता है कि जावा एप्लिकेशन आपके सिस्टम पर सुरक्षा और प्रदर्शन में सुधार के साथ चलेगा।

मुझे निम्नलिखित VBScript मिली, जो सिद्धांत रूप में, जावा के पूर्व संस्करणों को ठीक से हटाती है। बॉटम-अप से पढ़ने के लिए सबसे अच्छा है , क्योंकि अन्य लोगों ने इसे पूर्णता के लिए बदल दिया है:

http://www.appdeploy.com/messageboards/tm.asp?m=29809


"बॉटम-अप से पढ़ने के लिए सबसे अच्छा" - इस मामले में आपको सबसे अच्छी स्क्रिप्ट को यहां कॉपी करना चाहिए
जेकॉलम

1

इस सरल, लेकिन बहुत उपयोगी कमांड की जाँच करें:

wmic product where "name like 'Java(TM) 6%%'" call uninstall /nointeractive

यहाँ से चोरी हो गई


0

यहां कुछ vbscript कोड हैं जिन्हें आपको msi के बिना ग्रुप पॉलिसी के माध्यम से तैनात करने में सक्षम होना चाहिए।


0

शीर्ष मतदान सत्यापित उत्तर में इसके साथ कुछ मुद्दे हैं। मेरे परीक्षण के आधार पर 6.0 श्रृंखला सीएलएसआईडी गलत हैं।

यहाँ मैं प्रत्येक JRE श्रृंखला के लिए काम करने के लिए पाया गया CLSIDs हैं। इच्छित संस्करणों के लिए xx बदलें, जिसे आप निकालना चाहते हैं। कृपया /server//a/187552/172014 के साथ उपयोग करें

4.2_xx
{7148F0A8-6813-11D6-A77B-00B0D0142xx0}

5.0_xx
{3248F0A8-6813-11D6-A77B-00B0D0150xx0}

6.0_xx
{26A24AE4-039D-4CA4-87B4-2F832160xxF0}

7.0_xx
{26A24AE4-039D-4CA4-87B4-2F832170xxF0}

मैं / q के बाद / q जोड़ने की सलाह देता हूं / क्यू के साथ-साथ केवल 1.4.2 श्रृंखला में JRE MSI एक रिबूट चाहता हूं।

msiexec /x <insert_CLSID_here> /q /norestart

0

आप अभी भी बैच स्क्रिप्ट का उपयोग करके पूरा कर सकते हैं। मैं निम्नलिखित स्क्रिप्ट का उपयोग करता हूं;

@ECHO OFF
REM #######################################################
REM AUTHOR: HeyVooN
REM BLOG: http://blog.teksoporte.es
REM DATE CREATED: 09/04/2015
REM Deploy Java to your Enterprise
REM This script is optimised for 32 and 64 Bit versions of Java to be installed on either 32 or 64 bit
REM operating systems. It can easily accommodate 64 bit versions of Java.
REM This script removes all previous versions of Java installed prior to (re)install any version.
REM #######################################################

REM #######################################################
REM SECTION 1 - CLEAN UP PC BEFORE INSTALLING JAVA (This section is not mandatory)
REM #######################################################
ECHO -------------------------------------------------------
ECHO STOP PROCESSES
ECHO -------------------------------------------------------
REM Assuming that processes using Java are stopped before uninstalling existing versions of Java
REM Common processes using Java: firefox.exe, iexplore.exe, chrome.exe, jusched.exe, jucheck.exe, java.exe, javacpl.exe

sc config "UI0Detect" start= disabled
sc stop UI0Detect
taskkill /F /IM jusched.exe /T
taskkill /F /IM jucheck.exe /T
taskkill /F /IM java.exe /T

ECHO -------------------------------------------------------
ECHO UNISTALL ANY PREVIOUS VERSIONS OF JAVA 32 Bit
ECHO -------------------------------------------------------
SET jver="Java 7"
SET regVar32=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
SET myCMD=REG QUERY %regVar32% /s /f %jver%
FOR /f " usebackq delims={} tokens=2" %%i IN (`%myCMD%`) DO (
 ECHO Uninstall Key: {%%i}
 ECHO Condition: %uinstallState%
 START /WAIT MSIEXEC /x {%%i} /qn /norestart
  )

ECHO -------------------------------------------------------
ECHO UNISTALL ANY PREVIOUS VERSIONS OF JAVA 64 Bit
ECHO -------------------------------------------------------
SET jver="Java 7"
SET regVar64=HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\
SET myCMD=REG QUERY %regVar64% /s /f %jver%
FOR /f " usebackq delims={} tokens=2" %%i IN (`%myCMD%`) DO (
 ECHO Uninstall Key: {%%i}
 ECHO Condition: %uinstallState%
 START /WAIT MSIEXEC /x {%%i} /qn /norestart
  )

ECHO -------------------------------------------------------
ECHO CLEANING REGISTRY
ECHO -------------------------------------------------------
REM Removing known problem registry keys. I use the below line to SET the variable of which reg.exe to use depending on OS architecture.
REM Additional registry removal strings can be added here.
@If Defined ProgramFiles(x86) (SET "Reg32Path=%SystemRoot%\SysWOW64\reg.exe") Else (SET "Reg32Path=%SystemRoot%\System32\reg.exe")
REM %Reg32Path% DELETE HKLM\SOFTWARE\JavaSoft /va /f
%Reg32Path% DELETE "HKLM\SOFTWARE\JavaSoft\Auto Update" /va /f
%Reg32Path% DELETE "HKLM\SOFTWARE\JavaSoft\Java Update" /va /f

ECHO -------------------------------------------------------
ECHO DELETE START MENU ITEMS
ECHO -------------------------------------------------------
RD /s /q "%ProgramData%\Microsoft\Windows\Start Menu\Programs\Java"
PAUSE
EXIT /B 0

आप अपनी आवश्यकताओं के अनुरूप उस तरीके को अनुकूलित / संशोधित कर सकते हैं। ;-)


यदि आप एक सिस्टम एडमिनिस्ट्रेटर हैं, तो इसे बिना किसी चेतावनी के न चलाएं। जावा-वाइड-फोर्स की हत्या कुछ लोगों को परेशान करने वाली है - उदाहरण के लिए मैं हर दिन ग्रहण का उपयोग करता हूं, और कुछ लोग OpenOffice / LibreOffice का उपयोग करते हैं। मैं केवल इस बात का उल्लेख करता हूं क्योंकि मेरा प्रश्न (पांच साल पहले) मुझे चुपचाप एक स्क्रिप्ट को तैनात करने का तरीका ढूंढ रहा था जो सभी के कंप्यूटर पर चलेगा और जावा के पुराने संस्करणों की स्थापना रद्द करेगा। तो स्पष्ट रूप से यह अच्छा नहीं होगा, या मैं कम से कम टास्कलाइन लाइनों को हटा दूंगा।
Ricket

0

इसने मेरे लिए काम किया। यह नवीनतम संस्करण (जो लेखन के समय v8.0.66 है) से पहले जावा (32-बिट और 64-बिट) के सभी संस्करणों को पुनर्स्थापित करता है।

wmic product where "name like 'Java%%' and version < '8.0.66'" call uninstall
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.