前提: 本文所述都是在window系统完成,仅供参考,如对您有所帮助,请关注❤️❤️❤️。

1. PC端注册自定义的伪协议(URL Scheme)

web想要唤醒本地exe,就需要用到URL Scheme协议:可以理解为用于实现浏览器跳转应用的协议。
本文使用electron-builder,使用nsis配置打包脚本,将自定义协议写入到windows下的注册表中。

# 协议脚本 installer.nsh
!macro customInstall
  DetailPrint "Register YOURNAME URI Handler"
  WriteRegStr HKCR "YOURNAME" "" "URL:VrPlatForm"
  WriteRegStr HKCR "YOURNAME" "URL Protocol" ""
  WriteRegStr HKCR "YOURNAME\shell" "" ""
  WriteRegStr HKCR "YOURNAME\shell\Open" "" ""
  WriteRegStr HKCR "YOURNAME\shell\Open\command" "" "$INSTDIR\${APP_EXECUTABLE_FILENAME} %1"
!macroend
!macro customUnInstall
  DeleteRegKey HKCR "YOURNAME"
!macroend
 

将此nsis脚本配置到electron的打包项中,安装的时候协议就会自动写入注册表了

// vue.config.js 
// 根据实际情况可自行调整
module.exports = {
	nsis: {
		 oneClick: false,
         perMachine: true,
         allowElevation: true,
         allowToChangeInstallationDirectory: true,
         // 是否在卸载时删除应用程序数据
         deleteAppDataOnUninstall: true,
         installerIcon: "./logo.ico",
         uninstallerIcon: "./logo.ico",
         installerHeaderIcon: "./logo.ico",
         createDesktopShortcut: true,
         createStartMenuShortcut: true,
         shortcutName: "YOUR NAME",
         include: "../installer.nsh"

👉👉👉更多NSIS设置参考文档👈👈👈

2. 启动客户端

// 直接在web页面内需要的地方以open url的方式,调用注册的协议名称即可
// 例:VRBOXVIT是你在installer.nsh脚本内设置的协议名称your name
window.location.href = "VRBOXVIT:?ut=xxx"
// 或者
window.location.href = "VRBOXVIT:url?ut=xxxxx"
// 上面第一种为缩写,协议名称后可以写完整url以及参数

3. 客户端接收参数并与渲染进程通讯

客户端在启动后,在主进程内接收参数,并发送给渲染进程,借以实现用户的自动登录流程

⁉️⁉️⁉️ 如何接受参数,并发送给渲染进程呢,请看下面 👇👇👇

// background.js vue-electron的的主进程
function createWindow() {
	win = new BrowserWindow({
        width: 1440,
        height: 820,
    // 主进程监听是否web唤醒  
    win.webContent.on('did-finish-load',() => {
        // 主动触发second-instance,并传入参数统一处理
        app.emit('second-instance', null, process.argv)
// 获取单实例锁: 防止启动多个客户端
const getTheLock = app.requestSingleInstanceLock();
if (!getTheLock) {
    // 如果获取失败,说明已经有实例在运行了,直接退出
    app.quit();
} else {
    // window唤醒-二次唤醒
    app.on('second-instance', (event, argv) => {
        // console.log(argv)
        // Windows 下通过协议URL启动时,URL会作为参数,所以需要在这个事件里处理
        if (process.platform === 'win32') {
				* to do 处理web传递过来的参数
				* do some things
				// 向渲染进程中的web-start-app 发送相关参数
                win.webContent.send('web-start-app', argv)
                if(win.isMinimized()) win.restore()
                if(win.isVisible()) {
                    win.focus()
                } else {
                    win.show()
                    win.setSkipTaskbar(false)
    });
// 在自己页面内监听 web-start-app即可
// vue component
window.ipcRenderer.on('web-start-app', (event, args) => {
	// do your do 
	// ...

😆😆😆至此,web唤醒exe应用,并实现用户免登录流程就已经完成了😆😆😆

通过自定义URL Protocol来调用应用程序。浏览器在解析到自定义URL Protocol之后,会寻找注册表,然后通过注册表启动相应的程序。这样就可以在WEB页面调到你的程序了。比如在浏览器地址栏输入“tencent://message/?uin=88888888&Site=JooIT.com&Menu=yes”就会出现一个QQ对话框。 1、新建.reg文件,并运行 Windows Registry Editor Version 5.00 [HKEY_C 网上有很多方法,大部分只能在ie上用。编写完reg 文件 然后双击安装,在运行html 进行测试即可。openExe.bat (具体调用exe的文件)通用方法(支持IE/火狐/谷歌)URL协议 来实现的。 web调用服务器的exe 内容精选换一换问题现象用户配置完成应用发布资源后,通过云堡垒机首次访问应用发布资源,不能正常访问。可能原因原因一:应用程序启动路径配置错误。原因二:配置应用程序非云堡垒机默认支持的应用程序,不支持调用。解决办法修改程序启动路径配置登录云堡垒机系统,在应用服务器详情页面,查看配置的应用程序启动路径。登录Windows应用服务器,查询应用安装路径,获取程序调用接口出错后,将不... web端如何唤醒本地应用——URL Protocol web端可以通过自定义URL Protocol来调用本地的应用程序。我们只需要通过一个链接如:<a href="tencent://">打开QQ</a>或者直接在浏览器中输tencent://(tencent://为QQ的自定义URL Protocol)就能够使得浏览器去寻找注册表并打开对应的本地应用程序。 关于上面提到的注册表和为什么通过自定义URL Protocol就可以调用本地的应用程序的介绍在网上已经有很多相关的博客了,我 1、exe创建注册表2、web启动exe,并传真userId3、exe取得服务器授权sig4、web取得推流地址: 'http://v.ju918.com/live/26185_21639.m3u8'从网页中通过自定义URL Protocol调用本地程序,需要将协议写到注册表中。浏览器在解析到自定义URL Protocol之后,寻找注册表,通过注册表启动相应的程序并传入参数。协议里面需要记录本地程... (平常前后端分离时可以使用,但项目打包成jar包后,使用的devtools依赖导致启动jar包失败)这是我的后台启动类,在里面加了个重启的方法。前端创建一个按钮,调用该api即可。前端methods方法。