2017-08-08 176 views
1

我试图启动MySql服务器安装程序,它位于我的资源文件夹中,但几秒钟后终止。但是,如果我手动启动它,它会运行良好,直到结束。以下是我的代码。。用java启动的.msi文件在几秒钟后关闭。

Thread t = new Thread(new Runnable() { 

      @Override 
      public void run() { 
       // TODO Auto-generated method stub 
       try { 
        ClassLoader classloader = Thread.currentThread().getContextClassLoader(); 
        String fileUrl = classloader.getResource("mysql.msi").getFile(); 
        Runtime rf = Runtime.getRuntime(); 
        Process pf = rf.exec("msiexec /i \"\\" + fileUrl + "\""); 
       } catch (Exception e) { 
        // System.out.println(e.toString()); // not necessary 
        e.printStackTrace(); 
       } 

      } 
     }); 
     t.start(); 
+0

你是什么意思的MySql服务器安装程序,你应该安装一次服务器,并在需要时使用它,所以你应该启动和停止它,你不应该每次都安装它。 –

+0

我有一个我想用Java自动启动的安装程序文件,不要紧,如果它是MySQL或其他应用程序。 – IsaacK

回答

0

好吧,这只是一个建议,让来到你的情况下,Windows操作系统有一定的一系列安全限制,即只允许安装或删除任何应用程序管理员。

这就是为什么我们看到一个询问管理员密码的Promt窗口(或管理员的权限为YES/NO类型,以防用户以管理员身份登录),并且promt屏幕是其安全性的核心,因为它不允许任何其他应用程序对其进行控制。

如果你通过第三方做远程桌面,你永远不会看到客户端机器promt屏幕(这是因为安全限制),所以在你的情况下,你的java应用程序是第三方应用程序,它没有足够的允许进一步继续操作。

因此它会在几秒钟后关闭。

你可以通过在Windows服务控制中允许一次权限来启动和停止已经安装的服务。所以我建议你只使用服务。

+0

感谢@Manoj的建议,我改变了我的方法。干杯 – IsaacK

+0

没问题@IsaacChambers :) –