2010-03-13 17 views

Respuesta

11

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;)

+1

1 para introducir jRegistryKey, gracias – stacker

0

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.

Cuestiones relacionadas