¿Cómo puedo consultar con Java si un programa está instalado en un sistema Windows, por ejemplo, para buscar Mozilla Firefox?Cómo verificar si un programa está instalado en el sistema Windows
Respuesta
Supongo que estás hablando de Windows. Como Java tiene la intención de ser un lenguaje independiente de la plataforma y la forma de determinarlo difiere según la plataforma, no existe una API Java estándar para verificarlo. Sin embargo, puede hacerlo con ayuda de JNI llamadas en una DLL que rastrea el registro de Windows. A continuación, puede verificar si la clave de registro asociada con el software está presente en el registro. Hay una API de Java de terceros con la que puede rastrear el registro de Windows: jRegistryKey.
He aquí un SSCCE con ayuda de jRegistryKey:
package com.stackoverflow.q2439984;
import java.io.File;
import java.util.Iterator;
import ca.beq.util.win32.registry.RegistryKey;
import ca.beq.util.win32.registry.RootKey;
public class Test {
public static void main(String... args) throws Exception {
RegistryKey.initialize(Test.class.getResource("jRegistryKey.dll").getFile());
RegistryKey key = new RegistryKey(RootKey.HKLM, "Software\\Mozilla");
for (Iterator<RegistryKey> subkeys = key.subkeys(); subkeys.hasNext();) {
RegistryKey subkey = subkeys.next();
System.out.println(subkey.getName()); // You need to check here if there's anything which matches "Mozilla FireFox".
}
}
}
Si no obstante la intención de tener una aplicación platformindependent, entonces usted también tendrá que tener en cuenta el Linux/Unix/Mac/Solaris/etc (en otras palabras: en cualquier lugar donde Java pueda ejecutarse) formas de detectar si FF está instalado. De lo contrario, tendrá que distribuirlo como una aplicación solo de Windows y hacer un System#exit()
junto con una advertencia cada vez que System.getProperty("os.name")
no Windows.
Lo sentimos, no sé cómo detectar en otras plataformas si FF está instalado o no, así que no esperaba una respuesta de mí por eso;)
No hay una API que conozca que le permita hacer esto. Espero que el método más general sea verificar las ubicaciones de los archivos.
Otros enfoques (como comprobar el registro de Windows) dependen del sistema operativo.
- 1. ¿Cómo puedo verificar si un hotfix particular (actualización de Windows) está instalado en mi sistema?
- 2. Verificar si Solidworks está instalado?
- 3. ¿Cómo verificar si un controlador OLEDB está instalado en el sistema?
- 4. Cómo verificar con C# donde está instalado un programa
- 5. ¿Cómo puedo verificar si un módulo Perl está instalado?
- 6. Cómo verificar si un servicio de Windows está instalado en C#
- 7. Detectando si un programa ya está instalado con NSIS
- 8. ¿Cómo determinar si el proveedor de VFPOLEDB está instalado/registrado?
- 9. Determinar si el programa se está ejecutando en Windows Server
- 10. ¿Cómo comprobar si Suhosin está instalado?
- 11. ¿Cómo puedo verificar si el Android Market está instalado en el dispositivo de mi usuario?
- 12. ¿Cómo verifico si un MSI particular está instalado?
- 13. ¿Comprueba si el certificado de usuario final está instalado en el almacén de claves de Windows?
- 14. ¿Comprueba si IIS está instalado o no?
- 15. ¿Cómo puedo saber si SP1 está instalado en Windows Server 2008 R2 Standard?
- 16. Cómo verificar si un DataGridViewCheckBoxCell está marcado
- 17. Cómo comprobar si Facebook está instalado Android
- 18. ¿Cómo comprobar si está correctamente instalado mongodb
- 19. Compruebe si el controlador MongoDB PHP está instalado
- 20. Cómo detectar si numpy está instalado
- 21. ¿Cómo verificar si un objeto está definido?
- 22. Verificar/Verificar para ver si se ha instalado un Perfil de configuración en el iPhone
- 23. ¿Cómo verificar si el documento está listo?
- 24. ¿Cómo encontrar si MySQL está instalado en Red Hat?
- 25. PHP - ¿Cómo saber si X-Sendfile está disponible e instalado?
- 26. ¿Cómo verificar el paquete instalado en WiX 3.0?
- 27. ¿Cómo comprobar si php-fpm está instalado y ejecutándose correctamente?
- 28. ¿Cómo puedo verificar para ver si PEAR está instalado en mi servidor o no?
- 29. Cómo verificar/encontrar si un artículo está en un DEQUE
- 30. ¿Cómo comprobar si un programa está utilizando .NET?
1 para introducir jRegistryKey, gracias – stacker