zoukankan      html  css  js  c++  java
  • NSIS笔记

    1、IfFileExists 

    IfFileExists D:SA est estdirectory*.* 0 +1

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

    IfFileExists $WINDIRSysWOW64msvcr100.dll 0 +2

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

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

    IfFileExists "$WINDIRSysWOW64msvcr100.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}

  • 相关阅读:
    C# 获取存储过程 返回的参数Output
    Blog数据库设计之Tags表设计
    FLASH 加载进度 JS代码
    Asp.net清除数据缓存及页面缓存
    access数据库用sql语句添加字段,修改字段,删除字段,类型转换
    获取资源文件
    C# 如何获取当前项目运行路径的父目录?
    深入理解 __doPostBack
    LookUpEdit How update binding source immediately after selection?
    C#动态加载DLL
  • 原文地址:https://www.cnblogs.com/pjl1119/p/6853686.html
Copyright © 2011-2022 走看看