NSIS 打包ActiveX一键安装包

1.环境

         安装NSIS以及NIS edit,向导生成初步的nsi打包文件

2.个性化配置

       1.安装包版本                  

                   将以下写入  !insertmacro MUI_LANGUAGE "SimpChinese" ,后面可以做exe 文件版本,2052中文 ID 是 2052(exe右键详细信息语言)。 

                     VIProductVersion 1.0.0.1
                     VIAddVersionKey /LANG=2052 "ProductName" "bActiveX"
                     VIAddVersionKey /LANG=2052 "Comments" "ActiveX"
                     VIAddVersionKey /LANG=2052 "CompanyName" "ActiveX"
                     VIAddVersionKey /LANG=2052 "LegalTrademarks" "Test Application is a trademark of Fake company"
                     VIAddVersionKey /LANG=2052 "LegalCopyright" "ActiveX"
                     VIAddVersionKey /LANG=2052 "FileDescription" "ActiveX"
                    VIAddVersionKey /LANG=2052 "FileVersion" "1.0.0.1"
                     VIAddVersionKey ProductVersion "1.0.0.1" ;产品版本

         2.注册于卸载ocx

                    RegDLL "$INSTDIR\xxxxxx.ocx"   ;注册

                    UnRegDLL "$INSTDIR\xxxxxocx"  ;  卸载

                    注册需要Section "MainSection" SEC01 段file加载文件完成的最后写入;

                    卸载在  Section Uninstall   一开始写入 先卸载再删除文件

          3.安装检测ocx在使用或是否注册成功

                    检测是否在使用,需要加入 Function .onInit 事件,即安装前调用事件,注意事件需要加在 SectionEnd 之后  

                       Function .onInit
                              ; 先删除,在判断文件在不在 如果在占用 就一直存在,这个只能判断默认路径下是否使用,如果不想可以先检测卸载再安装;

                                 Delete "$INSTDIR\HvActiveX.ocx"
                                 IfFileExists $INSTDIR\HvActiveX.ocx 0 +3
                                             MessageBox MB_ICONQUESTION|MB_OK "检测到浏览器控件在启动,请先关闭浏览器" IDYES +2
                                  Abort

                          FunctionEnd

                     ;检测是否注册成功,使用Function .onInstSuccess 安装完成事件

                    ;定义注册表主键 注册表路径 
                      !define HKEY_CLASSES_ROOT           0x80000000
                      !define HKEY_CURRENT_USER           0x80000001
                      !define HKEY_LOCAL_MACHINE          0x80000002
                      !define HKEY_USERS                  0x80000003

                     ;安装程序完成后后台运行
                     Function .onInstSuccess
                                ; 为键的句柄创建一个缓存
                                System::Call "*(i 0) i .R0"
                                ;将要检测的键放入内存中, 这个可以在注册成功后的电脑注册表上搜索 UUID 查到 路径 提取CLSID前一个路径:如 ACTIVEX.ActiveXCtrl.1\\CLSID  一般是工程下的ocx名称以及 工程内名称
                                 Push "xxxxx.xxxx\\CLSID"
                                ;调用API进行检查,返回值在$R1中
                                 system::call 'Advapi32::RegOpenKey(i ${HKEY_CLASSES_ROOT}, t s, i R0) .iR1'
                                ;关闭该键的句柄
                                system::call 'Advapi32::RegCloseKey(i R0)'
                               ;释放内存
                                system::free
                               ;返回值:
                               ;0代表键存在
                               ;2代表键不存在
                               ;其它值表示出错
                               ${If} $R1 == 0
                                      ;Messagebox mb_ok "Key Exists!"
                               ${ElseIf} $R1 == 2
                                Messagebox mb_ok "注册失败"
                               ${Else}
                               Messagebox mb_ok "注册失败"
                               ${EndIf}
                                    Pop $R1
                                    Pop $R0
                                   Quit
                     FunctionEnd

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值