在windows中将自定义文件扩展名与java应用程序关联

在windows中将自定义文件扩展名与java应用程序关联,java,windows,file,Java,Windows,File,我想将几个文件扩展名“链接”到windows下的java应用程序。当用户双击扩展名为“linked”的文件时,我想打开我的应用程序,我需要知道启动应用程序的文件路径。如果部署应用程序。使用,可以在启动文件中声明对文件类型的兴趣。看到了吗 ..提示用户关联内容类型text/sleepytime的文件扩展名.zzz(只是一种不太可能与现有文件关联冲突的文件类型) 当用户双击一个.zzz文件时,它应该会在应用程序中打开。事实上,“提示”一词并不是全部。如果启动沙盒版本,将提示您关联文件类型。受信任的版

我想将几个文件扩展名“链接”到windows下的java应用程序。当用户双击扩展名为“linked”的文件时,我想打开我的应用程序,我需要知道启动应用程序的文件路径。

如果部署应用程序。使用,可以在启动文件中声明对文件类型的兴趣。看到了吗

..提示用户关联内容类型
text/sleepytime
的文件扩展名
.zzz
(只是一种不太可能与现有文件关联冲突的文件类型)

当用户双击一个
.zzz
文件时,它应该会在应用程序中打开。事实上,“提示”一词并不是全部。如果启动沙盒版本,将提示您关联文件类型。受信任的版本不会提示


要向流程添加更多用户控制,请查看1.6.0_18中引入的(我还没有该版本的演示)。您可以在与用户检查后在启动时运行它。

这必须在安装过程中完成。您打算如何让您的用户安装您的应用程序

在这个阶段,你必须意识到你只是让事情变得更加复杂。注册文件扩展名意味着干预注册表。如果用户不再需要您的应用程序,会发生什么情况?或者移动启动应用程序的文件

您必须选择一个安装创建者。关于这一点,这里有一个非常重要的问题:

然后你必须学习安装程序创建者的语言。以下是你所要求的在nsis中的实现方式。请记住,该脚本会处理诸如“如果用户卸载我的应用程序,并且我在安装时没有更改文件关联,那么我是否应该在卸载时删除这些文件关联?”之类的问题,因此它有点长。不管怎样,这就是:

也许可以在另一个安装程序创建者中以更简单的方式完成

但是,在本例中,您将nsis的注册函数指定为应用程序的start命令,然后将%1添加到windows文件关联的start命令中。所以你应该给它一个start命令

javaw -cp installpath\yourcode.jar package.name.MainClassName
然后事情就会解决了。当然,这需要一些实验,您必须非常确定如何从命令行启动应用程序


祝你好运

非常感谢你的回答。还有一件事很麻烦:如何知道到底是哪个文件启动了我的应用程序?我怎样才能在Java中读取这些数据呢?哦,看起来文件是用args发送到应用程序的。args[0]为“-open”,而args[1]包含启动应用程序的文件的路径。谢谢你的帮助:)@dario111cro不客气:)你选择了什么类型的发行版?你和nsis一起去了吗?