Cómo verificar si un progtwig está instalado en el sistema Windows

¿Cómo puedo consultar con Java si un progtwig está instalado en un sistema Windows, por ejemplo, para buscar Mozilla Firefox?

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 la ayuda de llamadas JNI 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 Java de terceros con la que puedes rastrear el registro de Windows: jRegistryKey .

Aquí hay un SSCCE con la 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 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, tiene la intención de tener una aplicación dependiente de la plataforma, también deberá tener en cuenta Linux / UNIX / Mac / Solaris / etc (en otras palabras, en cualquier lugar donde Java pueda ejecutar) formas de detectar si FF está instalado . De lo contrario, tendrá que distribuirlo como una aplicación solo para Windows y hacer un System#exit() junto con una advertencia cada vez que System.getProperty("os.name") no System.getProperty("os.name") Windows.

Lo siento, no sé cómo detectar en otras plataformas si FF está instalado o no, así que no esperes una respuesta mía para eso;)

No conozco ninguna API que te permita hacer esto. Espero que el método más general sea verificar las ubicaciones de los archivos.

Otros enfoques (como verificar el registro de Windows) dependen del sistema operativo.