在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 :(得分: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();