nisi 脚本示例
只是简单的copy文件和添加快捷方式,安装和卸载时对程序是否运行进行检测
;--------------------------------
;Include Modern UI
!include "MUI2.nsh"
;--------------------------------
;Interface Settings
!define MUI_ABORTWARNING
!define PRODUCT_UNINST_KEY "Software/Microsoft/Windwos/CurrentVersion/Uninstall/AppName"
!define SOURCE_DIR "G:/emulator"
;--------------------------------
;General
;Name and file
Name "AppName"
OutFile "AppNameSetup.exe"
;Default installation folder
InstallDir "C:\AppName"
Icon "${SOURCE_DIR}/App.ico"
;UninstallIcon "App.ico"
UninstallCaption "uninstall AppName"
;Get installation folder from registry if available
InstallDirRegKey HKCU "Software\AppName" ""
;Request application privileges for Windows Vista
RequestExecutionLevel admin
;--------------------------------
;Pages
!define MUI_ICON "${SOURCE_DIR}/App.ico"
!define MUI_UNICON "${SOURCE_DIR}/App.ico"
;!insertmacro MUI_PAGE_LICENSE "${NSISDIR}\Docs\Modern UI\License.txt"
;!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_UNPAGE_WELCOME
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_UNPAGE_FINISH
;--------------------------------
;Languages
!insertmacro MUI_LANGUAGE "SimpChinese"
;--------------------------------
;Installer Sections
Function .onInit
;检测程序是否运行
FindProcDLL::FindProc "AppName.exe"
Pop $R0
IntCmp $R0 1 0 no_run
MessageBox MB_ICONSTOP "安装程序检测到 AppName 正在运行,请关闭之后再进行安装!"
Quit
no_run:
FunctionEnd
Section ""
SetOutPath "$INSTDIR"
;ADD YOUR OWN FILES HERE...
File /r "*"
Delete "AppName.nsi"
Delete "AppSetup.exe"
;Store installation folder
WriteRegStr HKCU "Software\AppName" "AppName" "$INSTDIR\AppName.exe"
;Create uninstaller
WriteUninstaller "$INSTDIR\Uninstall.exe"
CreateShortCut "$DESKTOP\AppName.lnk" "$INSTDIR\AppName.exe"
CreateShortCut "$SMPROGRAMS\AppName.lnk" "$INSTDIR\AppName.exe"
CreateShortCut "$SMPROGRAMS\uninstall AppName.lnk" "$INSTDIR\Uninstall.exe"
;CreateShortCut "$QUICKLAUNCH\AppName.lnk" "$INSTDIR\AppName.exe"
SectionEnd
Section -Post
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\AppName" "DisplayIcon" "${SOURCE_DIR}/AppName.ico"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\AppName" "Publisher" "3g2win"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\AppName" "DisplayName" "AppName"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\AppName" "DisplayVersion " "1.0.0"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\AppName" "UninstallString" "$INSTDIR\Uninstall.exe"
SectionEnd
;--------------------------------
;Uninstaller Section
Function un.onInit
;检测程序是否运行
FindProcDLL::FindProc "AppName.exe"
Pop $R0
IntCmp $R0 1 0 no_run
MessageBox MB_ICONSTOP "卸载程序检测到 AppName正在运行,请关闭之后再卸载!"
Quit
no_run:
FunctionEnd
Section "Uninstall"
;ADD YOUR OWN FILES HERE...
Delete "$INSTDIR\Uninstall.exe"
RMDir /r "$INSTDIR"
Delete "$DESKTOP\AppName.lnk"
Delete "$SMPROGRAMS\AppName.lnk"
Delete "$SMPROGRAMS\uninstall AppName.lnk"
DeleteRegKey /ifempty HKCU "Software\AppName\AppName"
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\AppName"
;SetAutoClose true
SectionEnd
AppExample.nsi.rar http://files.cnblogs.com/grj1046/AppExample.nsi.rar
参考
NSIS:安装、卸载时检查程序是否正在运行 http://www.flighty.cn/html/bushu/20110402_115.html
NSIS 安装脚本(备忘)http://www.cnblogs.com/meteortent/archive/2013/06/10/3130770.html
[已解决] 卸载时注册表键无法删除,很奇怪 http://www.dreams8.com/thread-12800-1-1.html
nisi 脚本示例的更多相关文章
- MeteoInfoLab脚本示例:闪电位置图
这个脚本示例读取文本格式的闪电数据,读出每条闪电记录的经纬度和强度,在地图上绘制出每个闪电的位置,并用符号和颜色区分强度正负.数据格式如下:0 2009-06-06 00:01:16.6195722 ...
- MeteoInfoLab脚本示例:FY-3C全球火点HDF数据
FY-3C全球火点HDF数据包含一个FIRES二维变量,第一维是火点数,第二维是一些属性,其中第3.4列分别是火点的纬度和经度.下面的脚本示例读出所有火点经纬度并绘图.脚本程序: #Add data ...
- MeteoInfo脚本示例:GrADS to netCDF
这里给出一个将GrADS数据文件转为netCDF数据文件的脚本示例程序,其它格式数据转netCDF可以参考: #-------------------------------------------- ...
- MeteoInfoLab脚本示例:AMSR-E卫星数据投影
AMSR-E(http://nsidc.org/data/amsre/index.html)数据中的Land3数据是HDF-EOS4格式,投影是Cylindrical_Equal_Area.这里示例读 ...
- MeteoInfoLab脚本示例:创建netCDF文件(合并文件)
在MeteoInfoLab中增加了创建netCDF文件并写入数据的功能,这里利用合并多个netCDF文件为一个新的netCDF文件为例.1.创建一个可写入的netCDF文件对象(下面用ncfile表示 ...
- MeteoInfoLab脚本示例:Trajectory
示例读取HYSPLIT模式输出的气团轨迹数据文件,生成轨迹图层,并显示轨迹各节点的气压图.脚本程序: f = addfile_hytraj('D:/MyProgram/Distribution/jav ...
- MeteoInfoLab脚本示例:Hamawari-8 netCDF data
示例数据:ftp://ftp.bom.gov.au/anon/sample/catalogue/Satellite/IDE00220.201507140300.nc 该数据的分辨率很高(22000*2 ...
- MeteoInfoLab脚本示例:读取文本文件绘制散度图
MeteoInfoLab中读取文本文件数据的函数是asciiread,获取文本文件行.列数的函数是numasciirow和numasciicol,和NCL中函数名一致,但都是小写字母.本例中的示例数据 ...
- MeteoInfoLab脚本示例:站点数据绘制等值线
站点数据绘制等值线需要首先将站点数据插值为格点数据,MeteoInfo中提供了反距离权法(IDW)和cressman两个方法,其中IDW方法可以有插值半径的选项.这里示例读取一个MICAPS第一类数据 ...
随机推荐
- 彻底理解Javascript原型继承
彻底理解Javascript原型继承 之前写过一篇Javascript继承主题的文章,这篇文章作为一篇读书笔记,分析的不够深入. 本文试图进一步思考,争取彻底理解Javascript继承原理 实例成员 ...
- cocos2d-x2.2.3和android平台环境的搭建
准备工作:1.我只是将cocos2d-x移植到android平台,所以默认为大家已经将android平台搭建完成了(eclipse和android SDK已经配置好,java环境搭建好) 2.下载an ...
- 提高PHP编程效率的方法
用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册中说 ...
- Java Executor 框架
Java Executor 框架 Executor框架是指java5中引入的一系列并发库中与executor相关的功能类,包括Executor.Executors. ExecutorService.C ...
- apache2.4.4启用deflate压缩
今天在看<高性能php应用开发>这本书,说道如何启用mod_deflate: 启用如下模块: LoadModule deflate_module modules/mod_deflate.s ...
- 初识缓存以及ehcache初体验
1.缓存的意义 缓存机制就是将数据库中经常使用的数据取出放入内存中.程序调用时直接从内存中取,丌用每次使用 数据都訪问数据库,这样提高了效率. 2.缓存须要关注的问题 1) 缓存的更新 缓存中的数 ...
- Openfire开发配置,Openfire源码配置,OpenFire二次开发配置
1.下载源码:http://www.igniterealtime.org/downloads/source.jsp 2.把源码解压出的openfire_src目录放至eclipse workplace ...
- uva-11234 Expressions
Arithmetic expressions are usually written with the operators in between the two operands (which is ...
- IOS设计模式学习(11)中介者
1 前言 面向对象的设计鼓励把行为分散到不同对象中.这种分散可能导致对象之间的相互关联.在最糟糕的情况下,所有对象都彼此了解并相互操作.但是增加的相互关联又减少了获得的益处.增加的关联似的对象很难或不 ...
- Java中动态代理技术生成的类与原始类的区别
用动态代理的时候,对它新生成的类长什么样子感到好奇.有幸通过一些资料消除了心里的疑惑. 平时工作使用的Spring框架里面有一个AOP(面向切面)的机制,只知道它是把类重新生成了一遍,在切面上加上了后 ...