通過特定協議拉起 electron 應用

在 Android 通過 sheme 協議可以拉起其他應用。
electron 應用也可以通過類似特定協議被拉起。
在同時有 web、客戶端的應用里,可以通過這種方式在 web 拉起客戶端。

支持拉起客戶端

  const PROTOCOL = 'xxx'if (process.defaultApp) {// 這里是開發環境,有啟動參數if (process.argv.length >= 2) {app.setAsDefaultProtocolClient(PROTOCOL, process.execPath, [path.resolve(process.argv[1])]);}} else {app.setAsDefaultProtocolClient(PROTOCOL);}

這里注冊啟動協議得程序運行一次才生效,體驗不好。有沒有在安裝時就生效的實現?同時在卸載時就取消注冊?

mac

在electron-builder.yml加配置,xxx是協議名

# 注冊客戶端啟動協議,適用于mac
protocols:- name: ' xxx'schemes: - 'xxx'

windows

在electron-builder.yml的 build 目錄增加installer.nsh文件,比如electron-builder.yml是

directories:buildResources: build

就增加build/installer.nsh

!define PROTOCOL_NAME "xxx"
!macro customInstallDeleteRegKey HKCU "${PROTOCOL_NAME}"WriteRegStr HKCU "${PROTOCOL_NAME}" "" "URL:${PROTOCOL_NAME}"WriteRegStr HKCU "${PROTOCOL_NAME}" "URL Protocol" ""WriteRegStr HKCU "${PROTOCOL_NAME}\shell" "" ""WriteRegStr HKCU "${PROTOCOL_NAME}\shell\Open" "" ""WriteRegStr HKCU "${PROTOCOL_NAME}\shell\Open\command" "" "$INSTDIR\${APP_EXECUTABLE_FILENAME} %1"
!macroend!macro customUnInstallDeleteRegKey HKCU "${PROTOCOL_NAME}"
!macroend

除此之外

還要記得本地開發時仍需要注冊,不然調試不生效,但程序退出后記得取消注冊

app.removeAsDefaultProtocolClient(PROTOCOL, process.execPath, [path.resolve(process.argv[1])]);

處理二次啟動時的參數

拉起后希望能處理傳參,比如在瀏覽器通過 xxx://open?a=1拉起,希望能獲取到 open,a=1這些參數。由于 mac默認單例和electron實現的原因,在 mac 和 windows 下有些不一樣。

mac

  // 處理請求參數app.on('open-url', (_, url) => {dialog.showErrorBox('Welcome Back from open-url', `You arrived from: ${url}`);handleUrl(url);});

windows

  app.on('second-instance', (_, commandLine) => {const url = commandLine[commandLine.length - 1]dialog.showErrorBox('Welcome Back 111', `You arrived from: ${url}`);if(url) handleUrl(url);});

處理首次啟動時的參數

  if (process.argv.length > 1) {const url = process.argv.find(arg => arg.startsWith(`${PROTOCOL}://`));if (url) handleUrl(url, {fromInit: true});}

參考鏈接

https://www.electronjs.org/docs/latest/tutorial/launch-app-from-url-in-another-app
https://xuxin123.com/electron/url-scheme/

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/76271.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/76271.shtml
英文地址,請注明出處:http://en.pswp.cn/web/76271.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

算法備案的審核標準是什么?

隨著《互聯網信息服務算法推薦管理規定》等法規的出臺,算法備案成為了強制性備案,是產品合規上線的必要條件之一。本篇內容將從企業視角出發,分析算法備案的常見問題,意在對有備案需求的小伙伴們有所幫助。 一、誰需要做算法備案…

回顧與動機 - 為什么我們需要 Transformer

在接下來的旅程中,我們將一起探索深度學習領域最重要、最具影響力的模型架構之一——Transformer。從它的基本原理出發,逐步深入,最終能夠親手實現一個文本生成模型。 本系列教程假設你已經具備一定的深度學習基礎,了解神經網絡、損失函數、優化器等基本概念,并且熟悉 Py…

探索 Higress:下一代云原生 API 網關

引言 在云原生時代,API 網關作為連接客戶端與后端服務的橋梁,扮演著至關重要的角色。Higress 是一款由阿里巴巴開發的先進云原生 API 網關,基于開源的 Istio 和 Envoy 構建。它通過將流量網關、微服務網關和安全網關三者高度集成&#xff0c…

Spring Boot 整合 DeepSeek 實現AI對話 (保姆及教程)

文章目錄 文章目錄 前言 一、創建 spring boot 工程 二、申請key 三、修改配置文件 application.properties 四、編寫控制器(controller) 五、運行調試 前言 提示:隨著人工智能的不斷發展,ai這門技術也越來越重要,很多…

前端資源加載失敗后重試加載(CSS,JS等引用資源)

前端資源加載失敗后的重試 .前端引用資源時出現了資源加載失敗(這里針對的是路徑引用異常或者url解析錯誤時) 解決這個問題首先要明確一下幾個步驟 1.什么情況或者什么時候重試 2.如何重試 3.重試過程中的邊界處理 這里引入里三個測試腳本,分別加載里三個不同的腳…

無刷電機槽數相同、轉子極數不同的核心區別

一、基礎原理差異 無刷電機的核心參數: 槽數(定子槽數,記為 ( Z )):定子鐵芯上的繞組槽數量,決定繞組布局。極數(轉子磁極數,記為 ( 2p )):轉子上的永磁體磁極對數(總極數為 ( 2p ),如 ( p=4 ) 表示 8 極)。核心關系:槽極配合(( Z/2p ))決定電機電磁結構,相同…

6.Rust+Axum:打造高效 WebSocket 實時通信聊天室

摘要 本文詳細介紹 RustAxum 在 WebSocket 實時通信開發中的應用,包括雙向通信、狀態管理等,實踐構建聊天室應用。 一、引言 在當今的 Web 應用開發中,實時通信變得越來越重要。WebSocket 作為一種在單個 TCP 連接上進行全雙工通信的協議&…

clickhouse數據導出導入

clickhouse數據導出導入 CSV格式導出為csv格式導入為csv格式 JSON格式導出為json格式導入為json格式 SQL格式導出為SQL CSV格式 導出為csv格式 # 不帶表頭 clickhouse-client -h 127.0.0.1 --database"db" --query"select * from db.test_table FORMAT CSV&qu…

人臉掃描黑科技:多相機人臉掃描設備,打造你的專屬數字分身

隨著科技的迅猛發展,人臉掃描這個詞已經并不陌生,通過人臉掃描設備制作超寫實人臉可以為影視制作打造逼真角色、提升游戲沉浸感,還能助力教育機構等領域生產數字人以豐富教學資源,還在安防、身份識別等領域發揮關鍵作用&#xff0…

學習型組織與系統思考

真正的學習型組織不是只關注個人的學習,而是關注整個系統的學習。—彼得圣吉 在這兩年里,越來越多的企業開始詢問是否可以將系統思考的內容內化給自己的內訓師,進而在公司內部進行教學。我非常理解企業這樣做的動機,畢竟內部講師…

gl-matrix 庫簡介

gl-matrix 庫簡介 gl-matrix 是一個高性能的 JavaScript 矩陣和向量庫,專門為 WebGL 和其他 3D 圖形應用設計。它提供了處理 2D、3D 和 4D 向量以及矩陣運算的高效方法。 主要特性 高性能:經過高度優化,執行速度快輕量級:體積小…

大語言模型的訓練、微調及壓縮技術

The rock can talk — not interesting. The rock can read — that’s interesting. (石頭能說話,不稀奇。稀奇的是石頭能讀懂。) ----硅谷知名創業孵化器 YC 的總裁 Gar Tan 目錄 1. 什么是大語言模型? 2. 語言建模&#xff…

那些能夠直接編譯到 WebAssembly 的 Rust Crates

一、為什么有的 Crate “跑不起來”? 在最常見的 瀏覽器環境 中,Wasm 沙盒本身缺少操作系統功能和標準 C 運行時支持。以下幾類依賴若出現在 crate 中,就很可能導致編譯或運行時出錯: C / 系統庫綁定 瀏覽器環境沒有 libc、dlope…

Ext系列?件系統

Ext系列?件系統 1. 理解硬件1.1 磁盤的物理結構1.2 磁盤的存儲結構1.3 磁盤的邏輯結構理解過程實際過程 1.4 CHS&&LBA地址 2. 引入文件系統塊分區innode 3. Ext2文件系統3.1 宏觀認識3.2 block group3.3 塊組內部3.3.1 GDT(Group Descriptor Table&#xf…

元宇宙概念興起,B 端數字孿生迎來哪些新機遇?

在科技飛速發展的當下,元宇宙概念如同一顆璀璨新星,迅速吸引了全球的目光。隨著元宇宙的興起,與之緊密相關的 B 端數字孿生技術也迎來了前所未有的發展機遇。元宇宙與 B 端數字孿生的融合,正悄然改變著多個行業的運作模式&#xf…

從數字化到智能化,百度 SRE 數智免疫系統的演進和實踐

1. 為什么 SRE 需要數智免疫系統? 2022 年 10 月,在 Gartner 公布的 2023 年十大戰略技術趨勢中提到了「數字免疫系統」的概念,旨在通過結合數據驅動的一系列手段來提高系統的彈性和穩定性。 在過去 2 年的時間里,百度基于該…

4月18日復盤

4月18日復盤 一、深度學習概述 ? 傳統機器學習算法依賴人工設計特征、提取特征,而深度學習依賴算法自動提取特征。深度學習模仿人類大腦的運行方式,從大量數據中學習特征,這也是深度學習被看做黑盒子、可解釋性差的原因。 ? 隨著算力的提…

C++每日訓練 Day 17:構建響應式加載動畫與異步數據處理

📘 本篇目標是:在 GUI 信號機制基礎上,構建一個完整的“點擊按鈕 → 顯示加載動畫 → 異步加載數據 → 顯示結果”的響應式界面流程。通過協程掛起/恢復機制,實現清晰的異步邏輯,避免回調地獄。 🔁 回顧 Da…

PyTorch深度學習框架60天進階學習計劃 - 第45天:神經架構搜索(二)

PyTorch深度學習框架60天進階學習計劃 - 第45天:神經架構搜索(二) 第二部分:權重共享策略的計算效率優化 8. 權重共享的理論基礎 權重共享策略的理論基礎來自于多任務學習(Multi-Task Learning, MTL)和遷移學習(Transfer Learn…

深入理解分布式緩存 以及Redis 實現緩存更新通知方案

一、分布式緩存簡介 1. 什么是分布式緩存 分布式緩存:指將應用系統和緩存組件進行分離的緩存機制,這樣多個應用系統就可以共享一套緩存數據了,它的特點是共享緩存服務和可集群部署,為緩存系統提供了高可用的運行環境&#xff0c…