NSIS安装程序限制多个运行安装程序和禁止重复安装

参考文章: NSIS:禁止多次安装实例_weixin_30838873的博客-CSDN博客

写得不全,我总结一下

步骤:

1.定义变量

!define PRODUCT_NAME "产品名称"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\${PRODUCT_NAME}.exe"

2.在安装程序之前检查是否运行多个安装程序,是否已有安装该程序。

;在安装程序运行前的回调函数前实现
Function .onInit
;禁止多个安装程序实例
System::Call 'kernel32::CreateMutexA(i 0, i 0, t "JWBClient") i .r1 ?e'
Pop $R0
StrCmp $R0 0 +3
MessageBox MB_OK|MB_ICONEXCLAMATION "安装程序已经在运行。"
Abort

ReadRegStr $0 HKLM '${PRODUCT_DIR_REGKEY}' "Installed"
StrLen $1 $0
IntCmp $1 0 +3 +1 +1
MessageBox MB_OK|MB_USERICON '$(^Name) 已安装在计算机中。如需重新安装,请卸载已有的安装'
Quit
FunctionEnd

3.在Section -Post中添加注册表键值对

Section -Post
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_DIR_REGKEY}" "Installed" "1"
SectionEnd

4.在卸载成功Function中清空值,保证再次安装时能正常安装,一定是改为空字符串 不能改为0

Function un.onUninstSuccess
  
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_DIR_REGKEY}" "Installed" ""
  
FunctionEnd

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值