原文 NSIS:卸载加密码示例

最近有几个同学问我关于卸载时加密码的问题,其实很简单,懂点基础就可以根据安装加密码那篇文章http://www.flighty.cn/html/bushu/20100928_99.html来改写一下了,现在我把这个发出来,希望能够帮助到大家,也希望大家能够常来帮我点点广告呵。

直接上代码:(如果编译失败可能是因为缺少插件,请下载NSIS集成增强版http://www.flighty.cn/html/soft/20100429_76.html)

001 /*
002 卸载加密码示例 by 少轻狂
004 */
005  
006 !define PRODUCT_NAME "卸载加密码示例"
007 !define PRODUCT_VERSION "1.0"
008 !define PRODUCT_PUBLISHER "My company, Inc."
009 !define PRODUCT_WEB_SITE "http://www.flighty.cn"
010 !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\AppMainExe.exe"
011 !define PRODUCT_UNINST_KEY"Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
012 !define PRODUCT_UNINST_ROOT_KEY "HKLM"
013  
014 SetCompressor lzma
015 SetFont "tahoma" 8
016 RequestExecutionLevel admin
017  
018 !include "MUI2.nsh"
019  
020 !define MUI_ABORTWARNING
021 !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
022 !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
023 ;卸载密码
024 !define Password "123"
025  
026 !insertmacro MUI_PAGE_WELCOME
027 !insertmacro MUI_PAGE_DIRECTORY
028 !insertmacro MUI_PAGE_INSTFILES
029 !insertmacro MUI_PAGE_FINISH
030  
031 ;卸载密码输入页面
032 UninstPage Custom un.PasswordPageShow un.PasswordPageLeave
033 !insertmacro MUI_UNPAGE_CONFIRM
034 !insertmacro MUI_UNPAGE_INSTFILES
035  
036 !insertmacro MUI_LANGUAGE "SimpChinese"
037  
038 Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
039 OutFile "Setup.exe"
040 InstallDir "$PROGRAMFILES\卸载加密码示例"
041 InstallDirRegKey HKLM "${PRODUCT_UNINST_KEY}" "UninstallString"
042 ShowInstDetails show
043 ShowUnInstDetails show
044  
045 Section "MainSection" SEC01
046   SetOutPath "$INSTDIR"
047   SetOverwrite ifnewer
048   CreateDirectory "$SMPROGRAMS\卸载加密码示例"
049 SectionEnd
050  
051 Section -AdditionalIcons
052   CreateDirectory "$SMPROGRAMS\卸载加密码示例"
053   CreateShortCut "$SMPROGRAMS\卸载加密码示例\Uninstall.lnk""$INSTDIR\uninst.exe"
054 SectionEnd
055  
056 Section -Post
057   WriteUninstaller "$INSTDIR\uninst.exe"
058   WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\AppMainExe.exe"
059   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}""DisplayName" "$(^Name)"
060   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}""UninstallString" "$INSTDIR\uninst.exe"
061   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}""DisplayIcon" "$INSTDIR\AppMainExe.exe"
062   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}""DisplayVersion" "${PRODUCT_VERSION}"
063   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}""URLInfoAbout" "${PRODUCT_WEB_SITE}"
064   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}""Publisher" "${PRODUCT_PUBLISHER}"
065 SectionEnd
066  
067 /******************************
068  *  以下是安装程序的卸载部分  *
069  ******************************/
070  
071 Section Uninstall
072   Delete "$INSTDIR\uninst.exe"
073  
074   Delete "$SMPROGRAMS\卸载加密码示例\Uninstall.lnk"
075  
076   RMDir "$SMPROGRAMS\卸载加密码示例"
077  
078   RMDir "$INSTDIR"
079  
080   DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
081   DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
082   SetAutoClose true
083 SectionEnd
084  
085 Function un.onUninstSuccess
086   HideWindow
087   MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地从您的计算机移除。"
088 FunctionEnd
089  
090 ;显示密码对话框
091 Function un.PasswordPageShow
092   !insertmacro MUI_HEADER_TEXT "输入密码" "卸载程序需要输入一个正确的密码以防止误操作。"
093   PassDialog::InitDialog /NOUNLOAD Password /HEADINGTEXT "少轻狂提示:卸载密码是123。" /GROUPTEXT "密码输入框"
094   Pop $R0
095   SendMessage $R1 ${EM_SETPASSWORDCHAR} 178 0
096   PassDialog::Show
097 FunctionEnd
098  
099 ;验证密码
100 Function un.PasswordPageLeave
101   ;从堆栈取出密码
102   Pop $R0
103   ;密码错误
104   StrCmp $R0 '${Password}' +3
105   MessageBox MB_OK|MB_ICONEXCLAMATION "密码输入错误!请输入正确的卸载密码!"
106   Abort
107 FunctionEnd

NSIS:卸载加密码示例的更多相关文章

  1. Linux为grub菜单加密码

    为grub菜单加密码 加入密码后,再次进入单用户或者给下次管理grub需要输入密码 加密操作 /sbin/grub-md5-crypt # 之后输入2次密码会生成加密后字符串 编辑grub加载文件 v ...

  2. centos单用户 救援 运行级别 yum,单用户模式,救援模式,inittab :启动级别 e2fsck wetty mingetty 物理终端 /dev/console 虚拟终端 /dev/tty(0,6) 模拟终端 /dev/pts/# grub-md5-crypt 给grub加密码 initrd 第二节课

    centos单用户 救援 运行级别  yum,单用户模式,救援模式,inittab :启动级别  e2fsck  wetty  mingetty  物理终端 /dev/console  虚拟终端 /d ...

  3. nsis安装包_示例脚本语法解析

    以下是代码及解析,其中有底色的部分为脚本内容. 注释.!define.变量.!include.常量 ; Script generated by the HM NIS Edit Script Wizar ...

  4. objectarx 卸载加载arx模块

    通常情况下,加载卸载arx模块是使用 APPLOAD命令 使用ObjectARX 代码操作,也非常简单,使用2个全局函数即可,参数为名字有扩展名 C++ int acedArxLoad( const ...

  5. Java、C#双语版配套AES加解密示例

      这年头找个正经能用的东西那是真难,网上一搜索一大堆,正经能用的没几个,得,最后还是得靠自己,正巧遇上需要AES加解密的地方了,而且还是Java和C#间的相互加解密操作,这里做个备忘 这里采用的加解 ...

  6. EasyUI ComboTree无限层级异步加载示例

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="EasuUIDemoTree.a ...

  7. 转载:Java、C#双语版配套AES加解密示例

    转载,原文出处 http://www.cnblogs.com/lzrabbit/p/3639503.html 这年头找个正经能用的东西那是真难,网上一搜索一大堆,正经能用的没几个,得,最后还是得靠自己 ...

  8. 简单易用的安装文件制作工具NSIS的使用demo示例

    安装文件制作工具NSIS 使用总结   在给客户开发客户端软件时,为避免技术人员亲自上门安装带来额外的成本损耗,通常我们都会自作一个安装包,以确保我们开发的程序的相关依赖资源.环境在客户端运行前能自动 ...

  9. NSIS卸载后无法删除开始菜单中的内容

    我们在安装程序时通常会使用createShortCut命令来创建一个快捷方式,如下,是在开始–>启动项 里创建run.bat的快捷方式. CreateShortCut "$SMPROG ...

随机推荐

  1. QQ旅程server分析01-网关server

    网关server网络进程: s1.连接网关管理器 s2.上报自身信息给网关管理器 s3.从网关管理器获取自己的管理信息 *s4.依照管理信息预分配好须要的资源 s5.网关server打开client监 ...

  2. 【原创】leetCodeOj --- Candy 解题报告

    题目地址: https://leetcode.com/problems/candy/ 题目内容: Candy Total Accepted: 43150 Total Submissions: 2038 ...

  3. [Windows Phone] 地图控制项的经纬度

    原文:[Windows Phone] 地图控制项的经纬度 前言 本文主要示范如何使用地图经纬度以及显示地标和行人街道,并透过卷轴控制地图缩放比例的功能. ? 实作 step1 建立专案. ? step ...

  4. UVA - 10118Free Candies(记忆化搜索)

    题目:UVA - 10118Free Candies(记忆化搜索) 题目大意:给你四堆糖果,每一个糖果都有颜色.每次你都仅仅能拿随意一堆最上面的糖果,放到自己的篮子里.假设有两个糖果颜色同样的话,就行 ...

  5. Android KitKat 4.4 Wifi移植AP模式和网络共享的调试日志

    Tethering技术在移动平台上已经运用的越来越广泛了.它能够把移动设备当做一个接入点,其它的设备能够通过Wi-Fi.USB或是Bluetooth等方式连接到此移动设备.在Android中能够将Wi ...

  6. Javascript中的__proto__、prototype、constructor

    今天重温了下Javacript,给大家带来一篇Javascript博文,相信对于Javacript有一定了解的人都听过prototype原型这个概念,今天我们深度的分析下prototype与__pro ...

  7. C# 几种方法来复制的阵列

    突然接触到,所以就写一下共享. 首先说明一下,数组是引用类型的,所以注意不要在复制时复制了地址而没有复制数值! 事实上在复制数组的时候.一定要用new在堆中开辟一块新的空间专门用于存放数组.这样才是有 ...

  8. Android的第二次增加SurfaceView基本使用

    本文来源于http://blog.csdn.net/hellogv/ ,引用必须注明出处. 上次介绍MediaPlayer的时候略微介绍了SurfaceView,SurfaceView因为能够直接从内 ...

  9. android生成apk包出现Unable to add &quot;XXX&quot; Zip add failed问题

    最近试图整合umeng至cocos2d-x围棋项目,一切好工作,准备生成apk当出现了大量的数据包 [2014-06-03 20:02:52 - MyApp] Unable to add 'G:\co ...

  10. hibernate的通配符比拼接sql到底好在哪?

    Hibernate对于刚接触的人来说,通配符只是提供了另一种组合sql的方式.接触的久了,熟悉之后,才能够真正理解通配符在Hibernate中起到的作用 主要作用有两点: 1,避免sql注入 hibe ...