标签:type electron 有用 shortcut detail dash 修改 编写 oca
一、使用reg文件测试
reg文件内容:
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\密存加密\command] @="\"D:\\application\\secretsave\\secretsave.exe\" \"%1\"\1" [HKEY_CLASSES_ROOT\*\shell\密存解密\command] @="\"D:\\application\\secretsave\\secretsave.exe\" \"%1\"\2"
HKEY_CLASSES_ROOT其实就是HKEY_LOCAL_MACHINE\SOFTWARE\Classes,包含了所有应用程序运行时必需的信息:
在文件和应用程序之间所有的扩展名和关联;
所有的驱动程序名称; 类的ID数字(所要存取项的名字用数字来代替);
用于应用程序和文件的图标;
在注册表中HKEY_CLASSES_ROOT是系统中控制所有数据文件的项。这个在Win95和Winnt中是相通的。HKEY_CLASSES_ROOT控制键包括了所有文件扩展和所有和执行文件相关的文件。它同样也决定了当一个文件被双击时起反应的相关应用程序。
右键菜单的开启
HKEY_CLASSES_ROOT\*\shell\密存加密\command意思是打开cmd
@="\"D:\\application\\secretsave\\secretsave.exe\" \"%1\"\1"这句话是cmd里面的命令,应用路径,最后面的1是参数
将req文件放在安装好的应用根目录下,右键编辑注册表,修改成功
二、对参数处理
在主进程main/index.js里面
app.on(‘ready‘, function () { createWindow() global.sharedObject = {prop1: process.argv} })
在render的vue文件里接收
mounted () { let args = remote.getGlobal(‘sharedObject‘).prop1 console.log(args) let types = [‘1‘,‘2‘] if (args.length >= 3 && types.includes(args[2])) { args[1] = args[1].replace(/\\/g, ‘/‘) this.getArgFile(args) } }
右键点击文件唤起应用时args打印结果:
["D:\application\secretsave\secretsave.exe", "D:\work\electron\AesTest.rar", "1"]
数组第二个值是文件路径,第三个值是注册表传递过来的参数
三、使用electron-builder里面的nsis对象,让应用在安装时写入注册表
1、package.json里面配置:
"nsis": { "oneClick": false, "perMachine": true, "allowElevation": true, "allowToChangeInstallationDirectory": true, "createDesktopShortcut": true, "runAfterFinish": true, "shortcutName": "无忧密存", "installerIcon": "./static/icon.ico", "uninstallerIcon": "./static/icon.ico", "include": "installer.nsh" },
关于include
和 script
到底选择哪一个 ?
在对个性化安装过程需求并不复杂,只是需要修改一下安装位置,卸载提示等等的简单操作建议使用include
配置,如果你需要炫酷的安装过程,建议使用script
进行完全自定义。
我们只是添加两个按钮,使用include就好
2、编写installer.nsh文件,放在build文件夹下
!macro customInstall WriteRegStr HKCR "CenDC" "URL Protocol" "" WriteRegStr HKCR "CenDC" "" "URL:CenDC Protocol Handler" WriteRegStr HKCR "*\shell\密存加密\command" "" ‘"$INSTDIR\secretsave.exe" "%1" "1"‘ WriteRegStr HKCR "*\shell\密存解密\command" "" ‘"$INSTDIR\secretsave.exe" "%1" "2"‘ !macroend !macro customUninstall DeleteRegKey HKCR "*\shell\密存加密" DeleteRegKey HKCR "*\shell\密存解密" !macroend
简单解释脚本的含义,具体了解详情请看下方参考资料:
!macro 是定义宏
customInstall会在文件安装后自动调用(electron-builder实现)
WriteRegStr 是写注册表 如果原来有会覆盖。
$INSTDIR 是所选的文件安装路径
HKCR
即是注册表目录HKEY_CLASSES_ROOT
的缩写。在写value
的时候如果要写多个参数,可以用单引号包起来。attr-name
不写即为默认
customUnInstall在卸载阶段将之前写的注册表删除,以免用户卸载了应用之后菜单还在
参考资料:Electron-vue开发实战7——命令行调用与系统级别右键菜单项的实现
electron-builder构建的安装包,安装时通过nsis脚本自动导入注册表
electron-vue项目修改注册表在系统右键菜单中添加功能
标签:type electron 有用 shortcut detail dash 修改 编写 oca
原文地址:https://www.cnblogs.com/phoebeyue/p/12927193.html