参考
官方文档
计算机 - - - 浏览器网页打开本地exe程序,网页打开微信,网页打开迅雷
注意
避免在 URI 中使用空格、引号或反斜杠
添加网页启动软件的功能
!include "MUI2.nsh"#使用现代UI
Unicode true #使用Unicode
RequestExecutionLevel admin
!define EXENAME "exe name" #定义常量 exe名称
!define SHORTCUT "快捷方式名称" #定义桌面快捷方式的中文名称
!define PROTOCOL "protocol name" #URI名称
Name "${EXENAME}" #安装程序的title
OutFile "${EXENAME}_Setup.exe" #安装程序的名称
InstallDir "$Desktop\${EXENAME}" #默认安装路径为桌面\exe名称
#使用现代UI
!define MUI_ABORTWARNING
!define MUI_WELCOMEFINISHPAGE_BITMAP ${NSISDIR}\Contrib\Graphics\Wizard\orange.bmp
!define MUI_UNWELCOMEFINISHPAGE_BITMAP ${NSISDIR}\Contrib\Graphics\Wizard\orange-uninstall.bmp
!insertmacro MUI_PAGE_WELCOME #欢迎界面
!insertmacro MUI_PAGE_DIRECTORY #设置安装路径
!insertmacro MUI_PAGE_INSTFILES #显示安装细节
!insertmacro MUI_PAGE_FINISH #安装完成
!insertmacro MUI_UNPAGE_WELCOME
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_UNPAGE_FINISH
!insertmacro MUI_LANGUAGE "SimpChinese"#安装界面为中文
Section
SetOutPath $INSTDIR #安装程序生成后的位置
File *.exe #打包exe文件
File *.dll
File /r MonoBleedingEdge
File /r "${EXENAME}_Data"
WriteUninstaller $INSTDIR\Uninstall.exe #生成卸载程序
CreateDirectory "$SMPROGRAMS\${EXENAME}" #开始程序文件夹内创建文件夹
CreateShortcut "$DESKTOP\${SHORTCUT}.lnk" "$INSTDIR\${EXENAME}.exe" #桌面生成快捷方式 关联exe文件
CreateShortcut "$SMPROGRAMS\${EXENAME}\${EXENAME}.lnk" "$INSTDIR\${EXENAME}.exe" #开始菜单 创建快捷方式
CreateShortcut "$SMPROGRAMS\${EXENAME}\Uninstall.lnk" "$INSTDIR\Uninstall.exe" #开始菜单 创建删除exe的快捷方式
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${EXENAME}" "DisplayName" "${EXENAME}" #控制面板显示程序名称
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${EXENAME}" "UninstallString" "$INSTDIR\Uninstall.exe" #设置卸载程序关联的文件
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${EXENAME}" "DisplayIcon" "$INSTDIR\${EXENAME}.exe" #控制面板显示程序图标
WriteRegStr HKCR "${PROTOCOL}" "" "URL:${EXENAME} Protocol" #创建URI协议的根键
WriteRegStr HKCR "${PROTOCOL}" "URL Protocol" ""
WriteRegStr HKCR "${PROTOCOL}\shell\open\command" "" '"$INSTDIR\${EXENAME}.exe" "%1"' #创建协议的命令处理程序
SectionEnd
Section "Uninstall" #卸载程序的作用
RMDIR /r $INSTDIR #移除安装文件内所有内容
RMDIR /r "$SMPROGRAMS\${EXENAME}" #移除开始菜单\程序名内所有内容
Delete "$DESKTOP\${SHORTCUT}.lnk" #移除桌面快捷方式
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${EXENAME}" #移除注册表内容
DeleteRegKey HKCR "${PROTOCOL}" #移除注册表内容
SectionEnd
测试
测试文件目录
uri名称为:Test.Self
使用Nsis打包,安装打包软件。
网页启动测试
创建一个html文件,填写代码;html拖入网页,点击即可启动软件。
href中指定启动的URL,注意后方URL后方要添加冒号。例如 href=“steam:” 启动steam软件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<a href="Test.Self:">打开TestApp</a>
</body>
</html>