使用java卸载应用程序

时间:2017-02-21 08:26:10

标签: java file uninstall

在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");

在此代码中,我将删除卸载文件夹,但由于应用程序仍然存在,因此不是解决方案。

1 个答案:

答案 0 :(得分:0)

我不知道卸载(通用方法)可能有人知道。但是有一个第三方Java API,您可以使用它来抓取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();