微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从Windows上下文菜单启动Electron-app

如何解决如何从Windows上下文菜单启动Electron-app

我正在使用Windows桌面应用程序。这是一个 Electron 应用程序,并使用 electron-builder 创建应用程序包。电子生成器的 NSIS 配置用于创建应用程序的安装程序。

我已经对安装程序进行了编程,以将注册表项添加注册表中,以便在右键单击文件夹背景时可以从Windows上下文菜单中启动应用程序。

但是从Windows上下文菜单启动应用程序时,会发生JavaScript错误JavaScript Error image

但是,如果将安装目录的路径写入环境变量中,则可以从Windows上下文菜单成功启动应用程序(没有任何错误)。

我想从Windows上下文菜单中启动我的Electron-app,而无需写入环境变量。有没有办法做到这一点 ?预先感谢。

解决方法

应用程序不应依赖于当前目录与.exe所在的目录相同,这不是为什么存在当前目录概念的原因!

shell可以将当前目录设置为其他路径(上下文菜单,“打开方式”,“发送到”,open associated file等),open/save common dialogs,快捷方式(.lnk), Start:Run和来自cmd.exe的调用(call ..\myapp.exe等)。

理想情况下,您应该使用要加载文件的完整路径来修复应用程序。我认为Electron可以告诉您它自己的.exe文件的位置。

If you can't do that,您可以使用某种类型的启动器来强制当前目录。

批处理文件:

@echo off
setlocal ENABLEEXTENSIONS DISABLEDELAYEDEXPANSION
REM This will only work on Win2000 and later probably
cd /D "%~0\..\" 2>nul
pushd "%~0\..\"
"%~0\..\mybrokenapp.exe" %*

或NSIS应用:

OutFile applauncher.exe
RequestExecutionLevel user
SilentInstall silent
AutoCloseWindow true
!include "FileFunc.nsh"
Section
${GetParameters} $1
SetOutPath $EXEDIR
ExecWait '"$EXEDIR\mybrokenapp.exe" $1' $0
SetErrorLevel $0
Quit
SectionEnd

启动器更改当前目录的问题是it breaks callers that pass a relative path on the command line: applauncher.exe .\somefile.ext

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。