Tôi đang thiết lập một hệ thống để cập nhật Java trong văn phòng của chúng tôi. Mọi người đều có tất cả các phiên bản Java khác nhau, nhiều phiên bản cũ và không an toàn, và một số có niên đại lên tới 1.4. Tôi có một máy chủ System Center Essentials có thể đẩy ra và âm thầm chạy tệp .msi và tôi đã kiểm tra xem nó có thể cài đặt Java mới nhất không. Nhưng các phiên bản cũ (chẳng hạn như 1.4) không bị xóa bởi trình cài đặt, vì vậy tôi cần gỡ cài đặt chúng. Mọi người đều đang chạy Windows XP.
Sự trùng hợp ngẫu nhiên là Sun vừa được Oracle mua và Oracle đã thay đổi tất cả các thể hiện của "Sun" thành "Oracle" trong Java. Vì vậy, tôi có thể thuận tiện không phải lo lắng về việc gỡ cài đặt Java mới nhất, bởi vì tôi chỉ có thể thực hiện tìm kiếm và gỡ cài đặt tất cả các chương trình Sun Java.
Tôi tìm thấy tập lệnh bó sau đây trên một bài đăng diễn đàn có vẻ đầy hứa hẹn:
@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
Tuy nhiên, khi tôi chạy tập lệnh, tôi nhận được kết quả sau:
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.
Và sau đó nó xuất hiện để treo và tôi ctrl-c để ngăn chặn nó.
Đọc qua kịch bản, tôi không hiểu tất cả mọi thứ, nhưng tôi không biết tại sao nó lại cố chạy các mẩu khóa đăng ký như các chương trình. Điều gì là sai với tập lệnh bó? Làm cách nào tôi có thể sửa nó, để tôi có thể chuyển sang một cách nào đó biến nó thành MSI và triển khai nó cho mọi người để dọn dẹp văn phòng này?
Hoặc cách khác, bạn có thể đề xuất một giải pháp tốt hơn hoặc tệp MSI hiện có để làm những gì tôi cần không? Tôi chỉ muốn đảm bảo loại bỏ tất cả các phiên bản Java cũ khỏi máy tính của mọi người, vì tôi đã nghe nói về việc khai thác khiến các trang web tải bằng các phiên bản Java cũ và tôi muốn tránh những phiên bản đó.