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都无法打开软件。额,只能暂时搁置,寻找更好解决办法中…

electron+vue项目打包时修改注册表功能相关推荐

  1. vue项目打包后修改接口地址

    vue项目打包后修改接口地址 我们在做vue项目时,总会遇到开发时用的测试地址和项目上线时用到的接口地址不同,再就是项目上线后,后期需要更改接口地址的情况.然而,如果没有一个配置文件,后期更换起来就只 ...

  2. vue项目打包后 修改配置

    前言 在使用vue.js开发前端项目时,再结合webpack搞起各种依赖.各种插件进行开发,无疑给前端开发带来了很多便捷,就在解决跨域这个问题上,相信众多用vue.js的前端同僚们同我一样尝到了甜头, ...

  3. vue项目打包及修改路径

    打包命令:cnpm run build 路径修改:1.config-->index.js 2.找到paths的最后行,把原来的"/"改为"./"

  4. vue项目打包:修改dist文件名

    vue.config.js // 输出文件目录(默认dist)outputDir: 'web', const path = require('path')const resolve = dir =&g ...

  5. 开发Windows Mobile和Wince(Windows Embedded CE)的部署项目(Deploy Project)时,如何修改注册表...

    由于fele问我一个问题:在进行Windows Mobile部署项目的开发,也就是打安装包,如何修改注册表?我把自己的经验blog下来. 1.打开Deploy项目的注册表编辑器,如下图 2.根据需求修 ...

  6. vue修改入口文件名字_webpack打包vue项目,可修改配置文件

    问题: vue项目打包完成后,如需改变配置文件中的信息,比如域名修改(如下图config.js),是不可能在配置文件中直接更改的,因为配置文件是前端写死的,这时只能手动更改项目中的配置,然后重新打包n ...

  7. vue项目打包后生成一个配置文件可以修改打包后的服务器api地址

    vue项目打包后生成一个配置文件可以修改打包后的服务器api地址 问题描述:vue项目打包上线之后,如果要改服务器api地址,只能在源码更改然后重新打包发布,为了解决这个问题,我们可以在static增 ...

  8. vue.js项目打包时出错找不到main.js

    vue.js项目打包时出错找不到main.js 打包时设置了开发环境和生产环境的入口文件分别是 配置打包文件vue.config.js(没有的话新增) module.exports = {chainW ...

  9. vue项目打包优化策略

    vue项目打包优化策略 使用vue-cli部署生产包时,发现资源包很大,打包后的vendor.js达到了1.4M,这已经很大了,而且会影响到首屏加载.那么,怎么优化呢? 1.组件按需加载 这是首先可以 ...

最新文章

  1. 【CV实践】图像检索从入门到进阶
  2. C语言结构体自动初始化实现,C语言中结构体(struct)的几种初始化方法
  3. 特征重要度(feature importance)如何获取、排序、可视化、以及可视化阈值设置?
  4. 深度学习模型保存_解读计算机视觉的深度学习模型
  5. 安全观之我见(三):省银之道在预防
  6. LOJ #6280. 数列分块入门 4-分块(区间加法、区间求和)
  7. SAP 电商云 Spartacus UI production build 时遇到和 orderCore 相关的错误
  8. rsync同步服务配置手记
  9. 程序员求职面试三部曲之二:提高面试的成功率
  10. 受JAAS保护的JAX-RS端点
  11. 教你玩转CSS 属性选择器
  12. ASP.NET Core管道深度剖析(3):管道是如何处理HTTP请求的?
  13. Comparable和Comparator区别是什么?差点吃屎
  14. 计算机学院运动会通讯稿,2021大学运动会通讯稿篇
  15. 汇编指令中英文释义 ASCII码字符表
  16. JPM Coin三部曲 (上) :深入理解摩根幣的運作
  17. 华为防火墙管理员角色和级别详解
  18. 《Java语言程序设计》✍基础知识整理
  19. Ubuntu阿里源镜像
  20. 黑苹果10.14.5安装WebDriver驱动nvidia独立显卡

热门文章

  1. Centos6.5安装oracle 11G
  2. 活动倒计时范例(日期倒计时例子)
  3. 内部收益率与机会成本
  4. Android的java基本知识总结【入门篇】
  5. 擎创技术流 | ClickHouse实用工具—ckman教程(9)
  6. 2023吉林大学药学专业考研复习经验分享
  7. Windows android studio配置ADB环境变量
  8. [公告]本博客已迁移到 tpu01yzx.me
  9. vue完美模拟pc版快手实现短视频,含短视频详情播放
  10. 记一次mysql报错:The user specified as a definer (‘mysql.infoschema‘@‘localhost‘) does not exists