Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从swing代码中获取任何应用程序的根安装目录?_Java_Swing_Deployment_Auto Update - Fatal编程技术网

Java 如何从swing代码中获取任何应用程序的根安装目录?

Java 如何从swing代码中获取任何应用程序的根安装目录?,java,swing,deployment,auto-update,Java,Swing,Deployment,Auto Update,我正在为一个应用程序设计补丁安装程序。安装程序的第一页(欢迎页之后)要求提供已安装应用程序的根目录,并提供一个浏览按钮供用户选择根目录。但是,为了简化过程,我希望安装程序能够智能地找到根安装程序目录,并在文本字段中将其设置为默认目录,而不是将其保留为空(正如我在许多安装程序中看到的那样)。实现同样目标的最佳方式是什么 private JButton getBrowseButton(JPanel panel) { final JButton browseBtn = new JButton(

我正在为一个应用程序设计补丁安装程序。安装程序的第一页(欢迎页之后)要求提供已安装应用程序的根目录,并提供一个浏览按钮供用户选择根目录。但是,为了简化过程,我希望安装程序能够智能地找到根安装程序目录,并在文本字段中将其设置为默认目录,而不是将其保留为空(正如我在许多安装程序中看到的那样)。实现同样目标的最佳方式是什么

private JButton getBrowseButton(JPanel panel) {
    final JButton browseBtn = new JButton(rm.getMessage("button.browse"));
    browseBtn.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent ae) {

            JFileChooser jfChooser = new JFileChooser(); 
            jfChooser.setCurrentDirectory(new java.io.File("."));
            jfChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
            jfChooser.setAcceptAllFileFilterUsed(false);
            guiUtil.removeFilesOfTypeFromJFileChooser(jfChooser);     
            jfChooser.showOpenDialog(panel);
       }
    });
    return browseBtn;
}
我曾想过使用环境变量,但应用程序没有设置任何环境变量,我只能
System.getenv(stringpath)
直接获取


如果您有任何帮助,我们将不胜感激。

撇开这一点不谈,您自己尝试实现这一点可能不是一个好主意(请参见问题注释)

这不可能适用于所有应用程序,因为安装目录是一种约定,而不是要求。相反,有必要在每个应用程序/每个平台的基础上实现这一点。这里有一些想法

  • 将安装目录路径连接到用于启动应用程序的包装器脚本中,并将其作为系统属性、命令行参数或环境变量传递
  • 将安装目录路径存储在应用程序配置文件中
  • 从包装器脚本的位置推断安装目录路径
  • 从类路径推断安装目录路径
  • 将安装目录路径存储在Windows注册表或类似文件中

“我正在为一个应用程序设计一个补丁安装程序。”这是内置的。那么你的“补丁安装程序”到底是什么呢它相对于主应用程序放置在何处?你的安装目录和应用程序工作目录不一样吗?我想说的是,你基本上没有提供足够的信息来回答你的问题。补丁安装程序就像一个可执行的桌面应用程序。只要启动它,安装程序就会启动。此外,此修补程序安装程序将升级客户端计算机上已安装的应用程序的当前版本。(如已安装版本的升级)。而且,由于它可以在线下载,它的位置可能在任何地方,这取决于客户端下载它的位置。例如,如果我的应用程序位于C:\\MyApp中,而修补程序安装程序exe位于C:\\Downloads中,则在安装过程中,修补程序安装程序exe应将C:\\MyApp检测为根安装目录。“修补程序安装程序将类似于可执行的桌面应用程序。”关于JWS的页面中提到了like“JWS提供了许多吸引人的功能,包括但不限于。。自动更新(包括延迟下载和更新的编程控制)。。“。这正是JWS构建的目的。它其余的大部分功能都是附加的。谢谢。我计划从现在开始使用Windows注册表,因为类路径中没有opdate,而且应用程序配置文件也将位于应用程序中,因此无法定位。让我们看看注册表是如何工作的。“…应用程序配置文件也将位于应用程序中,因此无法定位”。假设应用程序可以找到自己的配置文件,这应该不是问题。但是,嘿,这只是一种选择。