2017-02-21 1 views
2

응용 프로그램을 제거 할 수있는 방법이 있습니까? 응용 프로그램이 설치되어 있는지 확인해야하는 응용 프로그램을 개발 중입니다. 설치되어있는 경우 먼저 응용 프로그램을 제거하고 최신 버전을 설치해야합니다.자바를 사용하여 응용 프로그램을 제거하십시오

설치되지 않은 경우 직접 설치하십시오. 이 코드에서

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

을 제거하는 방법

는 overcomplating 것처럼 보인다. 대신 powershell을 사용합니다. http://stackoverflow.com/questions/113542/how-can-i-uninstall-an-application-using-powershell – Tobb

+0

minigeek 언급 한대로 두 단계를 수행해야 할 것입니다 ... 물론 3 실제로. 1). 언급 된 앱의 제거 프로그램이 있는지 먼저 확인하고 실행합니다. 2). 레지스트리를 확인하고 제거하십시오 그러나 당신은 어떤 레지스트리 항목이 만들어지고 당신이 이것을 깨면 전체 기계를 깰 수 있는지 알아야 할 것입니다. 3). 현재 폴더를 제거하십시오. 왜 이런 식으로해야하는지 확실하지 않으며 이는 Windows에서만 작동합니다. 행운을 비네. –

+0

@QuintonDelpeche 예. 알 수없는 레지스트리 제거는 잠재적으로 위험합니다. 제거 할 솔루션을 추가했습니다 (완벽하지는 않지만 아직 해결되지 않았습니다). 어딘가에 잘못하면 나를 바로 잡으십시오. – minigeek

답변

0

제거 (제네릭 메소드)에 대해 잘 모르는 사람이 있을지 모르지만 누군가 Windows 레지스트리를 크롤링 할 수있는 제 3 자 Java API가 있습니다. Windows에 설치된 모든 응용 프로그램은 레지스트리에 등록됩니다. 거기에서 확인할 수 있습니다. 파이어 폭스에 대한 샘플 코드는 다음과 같습니다

특정 소프트웨어가 설치되어 있는지 확인합니다.

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 
     } 
    } 

} 

이은 다른 운영 체제의 bash는 행동에 대한 윈도우 필요합니다. 당신은 어쨌든 실행 명령을 바람 때문에 이것에 대한 자바 사용 (당신이 제거 프로그램의 경로를 알고있는 경우에만)

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

jRegistryKey.dll은 32 비트이므로로드 할 수 없습니다 ... 64 비트에서 32 비트로 내 jvm을 다운 그레이드한다고 가정합니다. – BleedCode

+0

@SRISHTI 예. 32 비트 버전으로 이동해야합니다. – minigeek

+0

@SRISHTI가 도움이 되었습니까? – minigeek

관련 문제