Después de siglos sin escribir nada, pongo una mini solución a un problema que tuve recientemente y no encontré documentación al respecto salvo pequeños tips que decían mucho y a la vez nada y por supuesto ninguno funcionaba.

Si bien puede que no sea la mejor solución, es la única que encontré, al parecer no podemos ejecutar directamente los .msi como haríamos con un ejecutable normal, así que lo que hago es pedirle a cmd que lo ejecute por mí:

 

 try  {
         Runtime.getRuntime().exec("cmd.exe /K start ejecutable.msi");
      }

 catch (Exception e) { e.printStackTrace(); }

 

Pues no creo que haya mucho que explicar, ejecutamos cmd y le damos directamente la instrucción de ejecutar el archivo .msi. Por favor, tener en cuenta que deberán especificar la ruta correcta hacia el archivo o no funcionará. Desde luego, el manejo de la excepción queda a su criterio y puede hacer lo que desee.