gpt4 book ai didi

electron - 在 Electron 应用程序的安装过程中注册自定义协议(protocol)

转载 作者:行者123 更新时间:2023-12-02 21:56:19 28 4
gpt4 key购买 nike

您好,我是 Electron 新手,想知道如何在应用程序安装过程中为应用程序注册自定义协议(protocol)。

我正在使用 electro-builder 来构建应用程序。这是构建构建代码

"build": {
"appId": "com.test.testapp",
"productName": "testapp",
"asar": true,
"protocols": [{
"name": "testapp",
"schemes": [ "testapp" ]
}],
"nsis": {
"oneClick": false,
"perMachine": true,
"allowToChangeInstallationDirectory": true,
"runAfterFinish": false,
"createDesktopShortcut": true
},
"squirrelWindows": {
"msi": true
},
"directories": {
"output": "distribution"
}

我知道通过添加以下行可以注册自定义协议(protocol)

 app.setAsDefaultProtocolClient("testapp");

但只有当我至少第一次运行该应用程序时才会出现这种情况。

我不希望用户在安装后启动应用程序。

有没有一种方法可以让我在安装过程中使用 Electron 构建器注册自定义协议(protocol)

最佳答案

我对 Electron 和 electro-builder 还很陌生,但已经为 NSIS-target 解决了这个问题。首先,我应该注意到,据我所知,app.setAsDefaultProtocolClient 用于处理应用程序内部的自定义协议(protocol)。您需要使用 Electron-builder 本身注册此自定义协议(protocol)。

其次,我需要在 NSIS 和 squirrelWindows 之间进行选择。据我了解,NSIS 是更好的选择,因为 Squirrel 的支持较少并且存在一些问题。再说一遍,我不是专家,但我读过一些相关内容。所以 squirrelWindows 部分是多余的。您没有指定 win.target,默认情况下它是 "nsis"

NSIS 目标的自定义协议(protocol)注册存在问题。您可以在这里阅读更多信息:Protocol (scheme) for windows但有一个解决方法。您需要在 build 文件夹中创建一个名为 installer.nsh 的文件,其内容如下:

!macro customInstall
DetailPrint "Register evehq-ng URI Handler"
DeleteRegKey HKCR "evehq-ng"
WriteRegStr HKCR "evehq-ng" "" "URL:evehq-ng"
WriteRegStr HKCR "evehq-ng" "EveHQ NG SSO authentication Protocol" ""
WriteRegStr HKCR "evehq-ng\DefaultIcon" "" "$INSTDIR\${APP_EXECUTABLE_FILENAME}"
WriteRegStr HKCR "evehq-ng\shell" "" ""
WriteRegStr HKCR "evehq-ng\shell\Open" "" ""
WriteRegStr HKCR "evehq-ng\shell\Open\command" "" "$INSTDIR\${APP_EXECUTABLE_FILENAME} %1"
!macroend

evehq-ng 替换为您的协议(protocol)字符串,并将 EveHQ NG SSO 身份验证协议(protocol) 替换为您的协议(protocol)描述。

之后,您必须将 nsis.perMachine 设置为 true。

我还没有解决 Linux 的这个问题,但正在朝这个方向努力。您可以在我的概念验证项目中查看我的代码:EveHQ-NG proof of concepts application .

如果您愿意在 Linux 和 MacOS 上解决此问题,请在此处或 GitHub 上给我留言。

希望有帮助。

关于electron - 在 Electron 应用程序的安装过程中注册自定义协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45809064/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com