使用nsis美化安装向导后,安装时实现浏览器自定义协议打开
1. electron官方提供api,支持向注册表中写入协议,可通过浏览器打开
app.setAsDefaultProtocolClient('open-electron')
问题:1. 因为该方法时在主进程中调用,安装完成之后必须运行一次程序才可写入注册表
2. 卸载时不会主动删除注册表内容
2. 通过nsis脚本写入
(1)不使用自定安装向导时,只需要根据electron-builder中的配置以及自己添加自定nsis脚本即可实现
// vue.config.js
pluginOptions: {
electronBuilder: {
builderOptions: {
productName: buildConfig.productName,
appId: buildConfig.appId,
win: {
icon: 'public/logo/electron-case.ico',
target: 'nsis',
},
nsis: {
oneClick: false,
perMachine: true, // 是否为该计算机上所有用户安装该软件(相当于是否拥有管理员权限)
allowElevation: true,
allowToChangeInstallationDirectory: true,
createDesktopShortcut: true,
createStartMenuShortcut: true,
include: './url_open_regedit.nsh',
},
},
},
}
// url_ibsaas_regedit.nsh - 根目录下创建该文件,写入以下内容
!macro customInstall
DetailPrint "Register open_electron URI Handler"
DeleteRegKey HKCR "open_electron"
WriteRegStr HKCR "open_electron" "" "URL:open_electron"
WriteRegStr HKCR "open_electron" "URL Protocol" ""
WriteRegStr HKCR "open_electron\shell" "" ""
WriteRegStr HKCR "open_electron\shell\Open" "" ""
WriteRegStr HKCR "open_electron\shell\Open\command" "" "$INSTDIR\${APP_EXECUTABLE_FILENAME} %1"
!macroend # 卸载时执行
!macro customUnInstall
DeleteRegKey HKCR "open_electron"
!macroend
(2)使用nsis安装向导时,本身就是将绿色免安装版进行二次打包压缩实现,所以不会执行该安装时的逻辑,所以这个时候必须在nsis安装向导中下功夫
安装向导点击安装时,会执行到OnBtnInstall函数(ui_setup.nsh脚本中的方法),将写入注册表的代码写入该函数中,实现安装时写入windows注册表
DeleteRegKey HKCR "open_electron"
WriteRegStr HKCR "open_electron" "" "URL:open_electron"
WriteRegStr HKCR "open_electron" "URL Protocol" ""
WriteRegStr HKCR "open_electron\shell" "" ""
WriteRegStr HKCR "open_electron\shell\Open" "" ""
WriteRegStr HKCR "open_electron\shell\Open\command" "" "$INSTDIR\${EXE_NAME} %1"
为了提升用户体验,在卸载软件的时候,把写入的注册表删除,所以找到在onUninstall执行卸载的函数,在卸载函数中写入删除注册表代码:
DeleteRegKey HKCR "open_electron"
亲测有效!
使用nsis美化安装向导后,安装时实现浏览器自定义协议打开的更多相关文章
- oracle12安装软件后安装数据库,然后需要自己配置监听
oracle12安装软件后安装数据库,然后需要自己配置监听 没想到你是这样的oracle12: 不能同时安装软件和数据库,分别安装之后,\NETWORD\ADMIN\下面竟然没有listener.or ...
- Linux安装swoole拓展 (一键安装lnmp后安装可用完美)
一键安装lnmp后安装可用完美 swoole(一键安装完lnmp重启下,之前出现502一直解决不了,不清楚啥情况) 找到对应php版本,在lnmp文件夹的src 1.安装swoole cd /usr/ ...
- 安装myeclipse10后破解时发现没有common文件夹
今天重新安装了myeclipse10软件,然后在破解的时候发现安装目录下没有common,这是因为以前安装过myeclipse,卸载时没有完全清除,再次安装时,myeclipse会自动找到以前安装的c ...
- centos 6.X minimal 系列最小化安装完成后,安装mono和jexus过程小记录
在使用虚拟机安装minimal版centos运行mono+jexus的时候,遇到了一些坑,记录一下,比如虚拟机访问不了网络,没wget命令没开放80端口,等等小问题,其他网上教程已经有mono+jex ...
- 安装oracle后登录时出现 ERROR: ORA-01031 insufficient privileges
运行环境:在自己笔记本电脑(win10)上安装测试 操作系统版本:64位win8.1 Oracle版本:64位 oracle 11g 安装oracle 成功后//以管理员身份登录oracle 在cmd ...
- linux使用npm成功安装命令后,执行时却报找不到命令的问题
# 使用npm安装serve命令 ~$ npm install serve --global 安装成功 # 可是执行命令会报错 ~$ serve -v bash: serve: command not ...
- deepin安装Mariadb后,登录时出现ERROR 1045 (28000): Access denied for user 'root'@'localhost'
安装Mariadb的时候设置了root密码,但是登录的时候出现了这样的提示 这里记录下我的处理方法.我是用的如果重置root密码的套路. 首先,在/etc/mysql/mariadb.conf.d/5 ...
- 关于使用npm成功安装命令后,执行时却报找不到命令的问题
# 使用npm安装newman命令 ~$ npm install newman --global ... /root/node-v6.9.1-linux-x64/bin/newman -> /r ...
- 安装Jenkins后 启动时失败的问题解决
命令行执行,java -jar jenkins.war,报错 ------------------------------- SEVERE: Container startup failed java ...
- SQL Server 2008 修改安装路径后安装出错的解决方法
1.安装时如果修改安装路径后报错 例如想把“C:\Program Files\Microsoft SQL Server” 修改为“D:\Program Files\Microsoft SQL Serv ...
随机推荐
- Taro 弹窗阻止小程序滑动穿透(亲测有效) tabbar数据缓存不更新 入口场景值不同
v3.0 推出后反馈最多的问题之一,就是在 touchmove 事件回调中调用 e.stopPropagation() 并不能阻止滑动穿透. 这是因为 Taro 3 的事件冒泡机制是单独在小程序逻辑层 ...
- 7种实现web实时消息推送的方案
做了一个小破站,现在要实现一个站内信web消息推送的功能,对,就是下图这个小红点,一个很常用的功能. 不过他还没想好用什么方式做,这里我帮他整理了一下几种方案,并简单做了实现. 什么是消息推送(pus ...
- Spring入门之spring 概述(01)
1.1 spring 概述 1.1.1 spring 是什么 Spring 是分层的 Java SE/EE 应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control ...
- Linux 使用Postfix与Dovecot部署邮件系统
电子邮件系统 电子邮件系统基于邮件协议来完成电子邮件的传输,常见的邮件协议有下面这些. 简单邮件传输协议(Simple Mail Transfer Protocol,SMTP):用于发送和中转发出的电 ...
- eureka注册中心增加登录认证
https://www.cnblogs.com/gxloong/p/12364523.html 开启Eureka注册中心认证 1.目的描述 Eureka自带了一个Web的管理页面,方便我们查询注册 ...
- jquery 判断字符串长度
function titleLength(str) { var strLength = 0; var list = str.split(""); for (var i = 0; i ...
- 10 soundJs 初体验
最近想做一个h5的小游戏所以用上了soundjs. 还在开发中 http://www.hetenglife.com/mouse/game.html 刚刚把控制做完. 首先是要导入这个文件 <s ...
- Ubuntu linux下gcc、g++不同版本的安装和切换
讲解linux下gcc.g++不同版本的安装和切换 Ubuntu 18.04预装GCC版本为7.3,但有时在编译是需要用的不同gcc版本,下面介绍,如何安装不同的gcc 和g++,并设置根据不同的需要 ...
- PTA1002 写出这个数 (20 分)
1002 写出这个数 (20 分) 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这里保证 n 小于 1 ...
- 获取客户端ip,请求头伪造ip,解决办法
可以在请求头加入 X-Forwarder-For 来伪造访问的ip地址 //Nginx支持X-Forwarded-For 配置 proxy_set_header X-Forwarded-For $pr ...