用java启动的.msi文件在几秒钟后关闭。
我正在尝试启动MySql服务器安装程序,它位于我的资源文件夹中,但几秒钟后就会终止。但是,如果我手动启动它,它将正常运行,直到结束。下面是我的代码用java启动的.msi文件在几秒钟后关闭。,java,mysql,windows-installer,Java,Mysql,Windows Installer,我正在尝试启动MySql服务器安装程序,它位于我的资源文件夹中,但几秒钟后就会终止。但是,如果我手动启动它,它将正常运行,直到结束。下面是我的代码 Thread t = new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub try {
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();
好的,这只是一个建议,让我们来谈谈你的情况,Windows操作系统有一定的安全限制,只允许管理员安装或删除任何应用程序 这就是为什么,我们看到一个promt窗口要求输入管理员密码(或者管理员权限为是/否类型,以防用户以管理员身份登录),promt屏幕是其安全性的核心,因为它不允许任何其他应用程序对其进行控制 如果您通过第三方进行远程桌面操作,您将永远看不到客户端机器promt屏幕(这是因为安全限制),因此在您的情况下,您的java应用程序是第三方应用程序,没有足够的权限继续操作 因此,它在几秒钟后关闭。
然而,您可以通过在windows服务控件中允许一次权限来启动和停止已安装的服务。所以我建议您只使用服务。好的,这只是一个建议,让我们来谈谈您的情况,Windows操作系统有一些安全限制,只允许管理员安装或删除任何应用程序 这就是为什么,我们看到一个promt窗口要求输入管理员密码(或者管理员权限为是/否类型,以防用户以管理员身份登录),promt屏幕是其安全性的核心,因为它不允许任何其他应用程序对其进行控制 如果您通过第三方进行远程桌面操作,您将永远看不到客户端机器promt屏幕(这是因为安全限制),因此在您的情况下,您的java应用程序是第三方应用程序,没有足够的权限继续操作 因此,它在几秒钟后关闭。
然而,您可以通过在windows服务控件中允许一次权限来启动和停止已安装的服务。所以我建议你只使用服务。你说的MySql服务器安装程序是什么意思,你应该安装一次服务器并在需要时使用它,所以你应该启动和停止它,你不应该每次都安装。我有一个安装文件,我想用Java自动启动,不管是MySQL还是其他应用程序。MySQL服务器安装程序是什么意思,你应该安装服务器一次,需要时使用它,所以你应该启动和停止它,你不应该每次都安装它。我有一个安装程序文件,我想用Java自动启动,不管是MySQL还是其他应用程序。谢谢@Manoj的建议,我已经改变了我的方法。谢谢你的建议,我已经改变了我的方法。Cheesno问题@IsaacChambers:)