2017-02-21 3 views
2

アプリケーションをアンインストールできる方法はありますか。私は、アプリケーションがインストールされているかどうかを確認する必要があるアプリケーションを開発しています。インストールされている場合は、まずアプリケーションをアンインストールし、新しいバージョンをインストールする必要があります。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

ををアンインストールする方法

あなたはとにかくコマンドを実行する羽目になるので、物事をovercomplatingのように思えます。代わりにpowershellを使用します。 http://stackoverflow.com/questions/113542/how-can-i-uninstall-an-application-using-powershell – Tobb

+0

minigeekは2つのステップを実行する必要があると言いました...よく3つの実際に。 1)。最初に言及され実行されているアプリのアンインストーラがあるかどうかを確認します。 2)。レジストリを確認して削除しますが、レジストリエントリが作成されているかどうかを知る必要があります。これを破ると、マシン全体が破損する可能性があります。 3)。現在実行中のフォルダを削除します。 なぜこのようにする必要があるのか​​まだ分かりませんが、これは間違いなくWindowsでのみ機能します。 幸運。 –

+0

@QuintonDelpecheはい。未知のレジストリを削除することは潜在的に危険です。私はアンインストールするためのソリューションを追加しました(完全ではありませんが、まだありません)。もしどこか間違っていたら私を訂正してください。 – minigeek

答えて

0

私はアンインストールについて知らないかもしれませんが、誰かが知っているかもしれません。しかし、WindowsレジストリをクロールできるサードパーティのJava APIがあります。 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 
     } 
    } 

} 

他のOSのbashアクションが必要とされているためこれはWindowsのみです。このためにJavaを使用して(アンインストーラのパスを知っている場合のみ)

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

jRegistryKey.dllを32ビットとしてロードすることはできません...私は64ビットから32ビットへ私のjvmをダウングレードすることになっています – BleedCode

+0

@SRISHTIはい。あなたは32bitのJVMで移動する必要があります。 – minigeek

+0

@SRISHTIはあなたを助けましたか? – minigeek

関連する問題