【问题标题】:Double click on specific file type doesn't open properly双击特定文件类型无法正确打开
【发布时间】:2014-03-09 08:27:48
【问题描述】:

我目前正在开发一个纯 E4 RCP 应用程序,并且我已经使用 NSIS 制作了一个 .exe 安装程序。我还关联了某个文件扩展名,以便通过我的应用程序双击打开。使用以下 NSIS 脚本完成文件关联: WriteRegStr HKCR ".myext" "" "MyAPP.project" WriteRegStr HKCR "MyAPP.project" "" \ "MyAPP project file" WriteRegStr HKCR "MyAPP.project\DefaultIcon" "" \ "$INSTDIR\MyAPP.ico" WriteRegStr HKCR "MyAPP.project\shell\open\command" "" \ '"$INSTDIR\MyAPP.exe" "%1"' Call RefreshShellIcons

如果我双击 .myext 文件,应用程序无法正常启动(值得一提的是,我已经在我的代码中处理了此事件的解释)我的意思是看起来有些东西已经崩溃了。奇怪的是,如果 .myext 文件与我的应用程序的 .exe 文件位于同一目录中,或者如果我拖放到桌面上创建的快捷方式上,则应用程序就像一个魅力。我认为我做错了使用 NSIS 脚本的文件类型关联。任何帮助将不胜感激。谢谢你。

【问题讨论】:

  • 我们需要更多关于“它崩溃了”的细节!工作空间.metadata 目录中的.log 文件或应用程序安装目录中的configuration 目录中是否写入了任何内容?
  • 是的,在配置编辑器中,在 .log 文件中有一个 org.osgi.framework.BundleException 表示它无法激活捆绑包。但这不会再出现如果我将项目拖放到快捷方式上。它还说它找不到我的 lifeCycle 课程。

标签: swt nsis rcp e4


【解决方案1】:

在我看来,您的应用程序依赖于当前/工作目录与应用程序目录相同。

即使您可以修复文件类型注册,也可能在其他地方您无法控制工作目录,例如用户创建的新快捷方式和“打开方式”等其他生成点。

由于这些问题,应用程序不应依赖于工作目录...

【讨论】:

  • 您能给我一个关于如何使应用程序不依赖于工作目录的想法吗?这些更改将在用于生成安装程序的 NSIS 脚本中进行吗?并感谢您的回答。
  • 不,它与 NSIS 无关,必​​须在您的应用程序中进行更改。如果可能,您可以尝试尽早使用应用程序目录调用 SetCurrentDirectory,但最好的解决方案是确保您使用完整路径加载所有 dll 和其他依赖项...
猜你喜欢
  • 2013-04-25
  • 1970-01-01
  • 2018-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-04
  • 2011-01-01
相关资源
最近更新 更多