1、IfFileExists

IfFileExists D:\SA\test\testdirectory\*.* 0 +1

判断testdirectory是否是一个目录,若是,则执行接下来的第一行代码,若不是,则执行下面的+2行代码。

IfFileExists $WINDIR\SysWOW64\msvcr100.dll 0 +2

判断$WINDIR\SysWOW64\msvcr100.dll文件是否存在,若存在,则执行接下来的第一行代码,若不存在,则执行下面的+3行代码。

重点:实测没有+1行存在

IfFileExists "$WINDIR\SysWOW64\msvcr100.dll" 0 +2
  MessageBox MB_OK "msvcr100.dll存在!"         #0
  MessageBox MB_OK "msvcr100.dll阿萨斯大大!" #+2
  MessageBox MB_OK "msvcr100.dll不存在!"      #+3

2、执行进程

Exec "$INSTDIR\${VS2010_x86}"

3、检测某个盘的剩余空间

StrCpy $R1 $sSetupPath 2  #前2个字符为盘符
${DriveSpace} $R1 "/D=F /S=M" $R2
${If} $R2 < 540
  StrCpy $R3 $R1 1
  MessageBox MB_OK  "{f 2}提示{/f}" "{f 2}$R3盘剩余空间不足,无法安装。{/f}"
  goto InstallAbort
${Else}
  #StrCpy $R3 $R1 1
  #MessageBox MB_OK "$R3盘可用空间为 $R2 M。"
${EndIf}

4、判断操作系统版本

!include "WinVer.nsh"

AtLeastWin<version> 检测是否高于指定版本
IsWin<version> 检测指定版本(唯一限定版本)
AtMostWin<version> 检测是否低于指定版本
<version> 允许的值:
95、98、ME、NT4、2000、XP、2003、Vista、2008、7、2008R2
例如:

${If} ${AtLeastWin7}
  MessageBox MB_OK "系统为win7或以上系统!"

${EndIf}

 
5、判断是32位系统,还是64位系统

!include "x64.nsh"

${If} ${RunningX64}
  MessageBox MB_OK "这是64位系统,在这写x64安装的东西"
${Else}
  MessageBox MB_OK "这是32位系统,在这写x86安装的东西"
${EndIf}

6、设置duilib中的控件文本

nsNiuniuSkin::SetControlAttribute "install_time" "text" "{f 9}xxxx{/f}"

7、获取当前系统时间

System::Alloc 16
System::Call "kernel32::GetLocalTime(isR0)"
System::Call "*$R0(&i2.R1,&i2.R2,&i2,&i2.R4)"
System::Free $R0
MessageBox MB_OK "$R1年$R2月$R4日"

更详细:

System::Alloc 16
System::Call kernel32::GetLocalTime(isR0)
System::Call *$R0(&i2.R1,&i2.R2,&i2.R3,&i2.R4,&i2.R5,&i2.R6,&i2.R7,&i2.R8)
System::Free $R0
MessageBox MB_OK "$R1年$R2月$R4日,星期$R3,$R5:$R6:$R7.$R8"

8、数学运算

#实现: ($R1-$R9)*365+($R2-$R8)*30+($R4-$R7)
System::Int64Op $R1 - $R9   #注意空格
Pop $R6
System::Int64Op $R6 * 365
Pop $R6

System::Int64Op $R2 - $R8
Pop $R5
System::Int64Op $R5 * 30
Pop $R5
System::Int64Op $R6 + $R5
Pop $R5

System::Int64Op $R4 - $R7
Pop $R6
System::Int64Op $R6 + $R5
Pop $R5

${If} $R5 == 0
StrCpy $R5 "1"   #最小为0
${EndIf}

NSIS笔记的更多相关文章

  1. NSIS学习笔记(转)

    转自:http://blog.csdn.net/lee353086/article/details/45919901 NSIS学习笔记Date:2015-05-20Author:kagulaEnv:V ...

  2. NSIS制作安装包笔记(一):NSIS介绍、使用NSIS默认向导脚本制作Windows安装包

    前言   做产品时,定制的自定义安装界面常有的,使用NSIS + Qt可以完美的定制基于QT的安装界面,先从纯NSIS开始,制作常规的安装包.   应用程序的发布方式   应用程序发布的时候,具备以下 ...

  3. NSIS 无边框移动问题总结笔记

    无边框移动 插件 WinProc WinCore.nsh [一定要有这个] 代码 ;事件 ;处理无边框移动 Function onGUICallback ${If} $MSG = ${WM_LBUTT ...

  4. git-简单流程(学习笔记)

    这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...

  5. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  6. SQL Server技术内幕笔记合集

    SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...

  7. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  8. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  9. NET Core-学习笔记(三)

    这里将要和大家分享的是学习总结第三篇:首先感慨一下这周跟随netcore官网学习是遇到的一些问题: a.官网的英文版教程使用的部分nuget包和我当时安装的最新包版本不一致,所以没法按照教材上给出的列 ...

随机推荐

  1. 浅谈Linux文件系统

    Linux 与其他类 UNIX 系统一样并不区分文件与目录:目录是记录了其他文件名的文件.使用命令 mkdir 创建目录时,若期望创建的目录的名称与现有的文件名(或目录名)重复,则会创建失败. Lin ...

  2. [转][linux]简单的linux下的tcp/udp

    转自:https://blog.csdn.net/cabing2005/article/details/53068880 详细函数以及参数解释请看原链接. windows下的tcp/udp参考:htt ...

  3. lambda表达式与方法重载问题

    笔者之前在学习Java8新特性的时候,最吸引我的就是lambda表达式,它无疑为Java函数编程提供了强有力的支持.lambda表达式的使用方法很简单,下面给出最简单的用法. // Interface ...

  4. tstringlist详细用法

    TStringList 类是在Delphi使用最厂的一个对像,我们这里一起来看看 TStringList 的详细用法. 先把要讨论的几个属性列出来:1.CommaText2.Delimiter &am ...

  5. 错误不能中断(不许因错误或异常而产生阻断性Bug)

    错误不能终断(不许因错误或异常而产生阻断性Bug),当遇到错误或异常时,要处理掉,并且给予合理提示(比如:XXX失败,请重试)

  6. java开学第一周测试代码

    Account.java /* 信1705-3 20173612  陈阳阳 */package ATM; public class Account { private String accountID ...

  7. session一二事

    Session即回话,指一种持续性的.双向的连接.Session和Cookie在本质上没有什么区别,都是针对HTTP协议的局限性而提出的一种保持客户端和服务器间保持会话连接状态的机制. Session ...

  8. vue的优点

    vue-router 单页面 虚拟DOM https://www.cnblogs.com/oldboyooxx/p/9186482.html

  9. spring boot(十二)打包部署

    有很多网友会时不时的问我,spring boot项目如何测试,如何部署,在生产中有什么好的部署方案吗?这篇文章就来介绍一下spring boot 如何开发.调试.打包到最后的投产上线. 开发阶段 单元 ...

  10. 【JS】【3】标签显示几秒后自动隐藏

    $("#XXX").show().delay(2000).hide(0); 2000,0:可选,速度,(毫秒:"slow":"fast") ...