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



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

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

但是,当应用程序从Windows上下文菜单启动时,会发生JavaScript错误。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 '"$EXEDIRmybrokenapp.exe" $1' $0
SetErrorLevel $0
Quit
SectionEnd

更改当前目录的启动器的问题在于,它会打断在命令行上传递相对路径的调用程序:applauncher.exe .somefile.ext

最新更新