如何从Windows上下文菜单启动Electron应用程序

如何从Windows上下文菜单启动Electron应用程序,electron,nsis,electron-builder,Electron,Nsis,Electron Builder,我正在使用Windows桌面应用程序。它是一个Electron应用程序,使用Electron builder创建应用程序包NSIS使用electron builder的配置创建应用程序的安装程序 我已经将安装程序编程为向注册表添加键,这样当右键单击文件夹背景时,应用程序可以从Windows上下文菜单启动 但当应用程序从Windows上下文菜单启动时,会发生JavaScript错误 但是,当安装目录的路径写入环境变量时,应用程序可以从Windows上下文菜单成功启动(没有任何错误) 我想从Wind

我正在使用Windows桌面应用程序。它是一个Electron应用程序,使用Electron builder创建应用程序包NSIS使用electron builder的配置创建应用程序的安装程序

我已经将安装程序编程为向注册表添加键,这样当右键单击文件夹背景时,应用程序可以从Windows上下文菜单启动

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

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


我想从Windows上下文菜单启动我的Electron应用程序,而不写入环境变量。有办法吗?提前感谢。

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

当前目录可以通过shell(上下文菜单、“打开方式”、“发送到”等)、快捷方式(.lnk)和cmd.exe调用(
call..\myapp.exe
等)设置为其他路径

理想情况下,您应该使用加载文件的完整路径来修复应用程序。我假设Electron能够告诉你它自己的.exe所在的位置

,您可以使用某种启动器强制当前目录

批处理文件:

@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

更改当前目录的启动器的问题在于。

不要使用相对目录paths@Anders你能解释一下你的答案吗?我没有在安装程序脚本中使用相对路径将键添加到注册表。我是这方面的初学者。如果我误解了您的答案,请道歉。安装程序中没有,应用程序中没有。Explorer可能会将应用程序的工作目录设置为用户单击的路径。@Anders谢谢。经过一些调试,发现JavaScript错误是由于您提到的原因造成的。然而,应用程序依赖于相对路径,必须从安装目录运行。是否可以更改使用electron启动进程的可执行文件的工作目录?提前谢谢