2017-02-21 24 views
2

Есть ли какой-либо способ в java, с помощью которого мы можем удалить приложение. Я разрабатываю приложение, используя которое мне нужно проверить, установлено ли приложение или нет. Если он установлен, сначала мне нужно удалить приложение и установить его более новую версию.Удалить приложение с помощью java

Если он не установлен, обратитесь непосредственно к установке. код, что я написал это:

String v = "C:\\Program Files\\InstalledFile"; 
    File file = new File(v); 
    if(file.exists()==true) 
    { 
     System.out.print("file exist"); 
     FileUtils.deleteDirectory(file); 
     System.out.print("deleted"); 
     Runtime run = Runtime.getRuntime(); 
     String msifile = "EP.msi"; 
     String para="rundll32 SHELL32.DLL,ShellExec_RunDLL msiexec /qb /i C:\\Setup\\EP.msi REBOOT=ReallySuppress"; 
     run.exec(para); 
    } 
    else 
     System.out.print("file won't exist"); 

В этом коде я удалить папку для удаления, но это не решение, так как приложения все еще существуют.

+0

Использование Java для этого, кажется, как overcomplating вещи, так как вы будете наматывать работающие команды в любом случае. Вместо этого будет использовать powershell. http://stackoverflow.com/questions/113542/how-can-i-uninstall-an-application-using-powershell – Tobb

+0

Как упоминалось выше, вы должны сделать два шага ... ну 3 на самом деле. 1). Проверьте, есть ли деинсталлятор для упомянутого приложения и его запуск в первую очередь. 2). Проверьте реестр и удалите их, но вам нужно будет знать, какие записи реестра созданы, и если вы сломаете это, вы можете сломать всю машину. 3). Удалите папку, как вы сейчас делаете. Все еще не знаете, зачем вам это нужно, и это определенно будет работать только для Windows. Удачи. –

+0

@QuintonDelpeche Да. Удаление неизвестного реестра потенциально опасно. Я добавил решение для удаления (не идеально, но все же оно). Исправьте меня, если я ошибаюсь где-то, пожалуйста, – minigeek

ответ

0

Я не знаю о деинсталляции (общий метод), возможно, кто-то знает. Но есть сторонний API-интерфейс Java, с помощью которого вы можете сканировать реестр Windows. Каждое приложение, установленное в Windows, зарегистрировано в реестре. Вы можете проверить это там. Вот пример кода для firefox

Проверить: установлено ли определенное программное обеспечение или нет?

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()); //look here for "Mozilla FireFox".here will be your body of uninstallation with some conditions 
     } 
    } 

} 

Это только для Windows, для других действий ОС Баш требуется.

Как удалить (только если вы знаете путь деинсталлятор)

Process p = new ProcessBuilder("C:\\Program Files\\Mozilla Firefox\\uninstall.exe"); 
p.start(); 
+0

jRegistryKey.dll не может быть загружен, так как он 32-битный ... так что я предполагаю, чтобы понизить мой jvm от 64 бит до 32 бит – BleedCode

+0

@SRISHTI да. Вам придется двигаться на 32-битном jvm. – minigeek

+0

@SRISHTI это вам помогло? – minigeek