Javaを最新の状態に保つためのシステムをセットアップしています。誰もがJavaのすべての異なるバージョンを持っています。その多くは古くて安全ではなく、1.4までさかのぼるバージョンもあります。.msiファイルをプッシュしてサイレントモードで実行できるSystem Center Essentialsサーバーがあり、最新のJavaをインストールできることを既にテストしました。ただし、古いバージョン(1.4など)はインストーラーによって削除されないため、アンインストールする必要があります。全員がWindows XPを実行しています。
偶然の一致は、SunがOracleに買収されたばかりで、OracleがJavaで「Sun」のすべてのインスタンスを「Oracle」に変更したことです。そのため、すべてのSun Javaプログラムを検索してアンインストールするだけでよいため、最新のJavaのアンインストールについて心配する必要はありません。
有望そうなフォーラムの投稿で次のバッチスクリプトを見つけました。
@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.
そして、それはハングしているように見えます。
スクリプトを読んで、すべてを理解しているわけではありませんが、レジストリキーの一部をプログラムとして実行しようとしている理由はわかりません。バッチスクリプトの何が問題になっていますか?どうすれば修正できますか。何らかの方法でMSIに変換し、全員に展開してこのオフィスをクリーンアップできるようにするにはどうすればよいですか。
または、必要なことを行うためのより良いソリューションまたは既存のMSIファイルを提案できますか?古いバージョンのJavaを使用してWebページをロードするエクスプロイトについて聞いたことがあり、それらを回避したいので、すべての古いバージョンのJavaをすべてのコンピューターから確実に削除したいだけです。