मैं हमारे कार्यालय में आज तक जावा रखने के लिए एक प्रणाली स्थापित कर रहा हूं। सभी के पास जावा के सभी अलग-अलग संस्करण हैं, उनमें से कई पुराने और असुरक्षित हैं, और कुछ वापस 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 करता हूं।
स्क्रिप्ट के माध्यम से पढ़ना, मुझे सब कुछ समझ में नहीं आता है, लेकिन मुझे नहीं पता कि यह कार्यक्रमों के रूप में रजिस्ट्री कुंजी के टुकड़े चलाने की कोशिश क्यों कर रहा है। बैच स्क्रिप्ट में क्या गलत है? मैं इसे कैसे ठीक कर सकता हूं, ताकि मैं किसी तरह इसे एमएसआई में बदल सकूं और इस कार्यालय को साफ करने के लिए सभी को तैनात कर सकूं।
या वैकल्पिक रूप से, क्या आप एक बेहतर समाधान या मौजूदा एमएसआई फ़ाइल का सुझाव दे सकते हैं जो मुझे चाहिए? मैं सिर्फ सभी के कंप्यूटर के जावा के सभी पुराने संस्करणों को प्राप्त करना सुनिश्चित करना चाहता हूं, क्योंकि मैंने उन कारनामों के बारे में सुना है जिनके कारण वेब पेज जावा के पुराने संस्करणों का उपयोग कर लोड होते हैं और मैं उन से बचना चाहता हूं।