electron+vue项目打包时修改注册表功能

electron+vue项目打包时修改注册表功能

  1. 原因
    在使用electron做项目时,由于产品需要做一个放大镜功能。在查找了网上大部分类似需求后,发现大部分的放大镜都是对图片的放大,真正实现放大镜功能的功能并不多。(其实我自己也没想明白为什么去做放大镜,感觉实际中也并用不到。可能这就是和产品经理的矛盾?)但还是要做的,于是和产品经理沟通后,决定调用Windows系统自带的放大镜。(我们的产品也主要是在Windows系统的黑板上使用。)因此,这就涉及到了一系列问题,且看下面讲解。

  2. electron调用本地自带的.exe文件
    最开始的想法是使用win + ‘+’ 的快捷键打开放大镜。但没找到如何去用代码模拟调用键盘按键(是我太菜了)

    在此之后,又花费了一定时间后,使用修改注册表的方法来写一种类似协议的方法吧(在我看来是类似协议一样),来调用本地文件。
    首先是代码中的调用:

    <a href="Webshell:1123">放大镜</a>
    

    接着就是修改注册表,注册表文件:

    Windows Registry Editor Version 5.00
    [HKEY_CLASSES_ROOT\Webshell]
    @="URL:Webshell Protocol Handler"
    "URL Protocol"=""
    
    [HKEY_CLASSES_ROOT\Webshell\DefaultIcon]
    @="C:\\WINDOWS\\system32\\Magnify.exe"
    
    [HKEY_CLASSES_ROOT\Webshell\shell]
    
    [HKEY_CLASSES_ROOT\Webshell\shell\open]
    
    [HKEY_CLASSES_ROOT\Webshell\shell\open\command]
    @="\"C:\\WINDOWS\\system32\\Magnify.exe\" \"%1\""
    
    

    具体写法是,新建一个.txt文本文件,复制保存之后修改文件后缀为.reg(注册表脚本文件)
    然后执行之后就可以正常调用本地的放大镜了。(默认大家都不会去改变放大镜的地址吧,可能也没人用到过吧)

  3. 在这之后,勉强是能用了。但是总不能在每一台电脑上都去执行注册表脚本文件吧,这也太low了。吾辈人当然不可能这样放在这里(其实是在产品经理要求下),要去对齐进行优化。开始想法是写个脚本,在打包时去运行注册表脚本文件,简简单单。好的,小丑竟是我自己,问题又来了,脚本文件不会写啊(菜是本质啊)。然后就先放着去做其他项目了。不久之后,哈哈哈哈,意外之喜,发现electron打包时,竟然可以修改注册表文件。踏破铁鞋无觅处,得来全不费工夫。
    上网查找,嗯,发现只要在electron-builder配置nsis中加入include,并写一个.nsh文件就行了。如图:
    在这里插入图片描述

  4. 在以为问题即将解决时,发现,嗯?.nsh文件完全不会写啊,网上说的看起来又太累。在耗费九牛二虎之力之后,也不费努力,还是写出来了。过程不再赘述,直接上代码

    Section -Post
    WriteRegStr HKCR “Webshell” “” “URL:Webshell Protocol Handler”
    WriteRegStr HKCR “Webshell” “URL Protocol” “”
    WriteRegStr HKCR “Webshell\DefaultIcon” “” “C:\WINDOWS\system32\Magnify.exe”
    WriteRegStr HKCR “Webshell\shell” “” “”
    WriteRegStr HKCR “Webshell\shell\open” “” “”
    WriteRegStr HKCR “Webshell\shell\open\command” “” ‘“C:\WINDOWS\system32\Magnify.exe” -open “%1”’
    SectionEnd、
    参考博客NSIS 打包脚本基础

  5. 本来兴致勃勃认为做好的时候,发现打包好的产品在试用后,发现没有修改注册表。在对自己的相信后,觉得可能是权限的问题。因为,运行注册表脚本文件时,还会有权限询问,而按照产品,却没有询问。于是,以管理员身份按照,果然成功。
    但这样,貌似也不太合适。查找是否可以修改.nsh文件让所有用户,不止管理员也可以成功安装并修改注册表。发现HKCR必须是管理员权限,无需权限的HKCU和HKEY_LOCAL_MACHINE都无法打开软件。额,只能暂时搁置,寻找更好解决办法中…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值