只是简单的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 脚本示例的更多相关文章

  1. MeteoInfoLab脚本示例:闪电位置图

    这个脚本示例读取文本格式的闪电数据,读出每条闪电记录的经纬度和强度,在地图上绘制出每个闪电的位置,并用符号和颜色区分强度正负.数据格式如下:0 2009-06-06 00:01:16.6195722 ...

  2. MeteoInfoLab脚本示例:FY-3C全球火点HDF数据

    FY-3C全球火点HDF数据包含一个FIRES二维变量,第一维是火点数,第二维是一些属性,其中第3.4列分别是火点的纬度和经度.下面的脚本示例读出所有火点经纬度并绘图.脚本程序: #Add data ...

  3. MeteoInfo脚本示例:GrADS to netCDF

    这里给出一个将GrADS数据文件转为netCDF数据文件的脚本示例程序,其它格式数据转netCDF可以参考: #-------------------------------------------- ...

  4. MeteoInfoLab脚本示例:AMSR-E卫星数据投影

    AMSR-E(http://nsidc.org/data/amsre/index.html)数据中的Land3数据是HDF-EOS4格式,投影是Cylindrical_Equal_Area.这里示例读 ...

  5. MeteoInfoLab脚本示例:创建netCDF文件(合并文件)

    在MeteoInfoLab中增加了创建netCDF文件并写入数据的功能,这里利用合并多个netCDF文件为一个新的netCDF文件为例.1.创建一个可写入的netCDF文件对象(下面用ncfile表示 ...

  6. MeteoInfoLab脚本示例:Trajectory

    示例读取HYSPLIT模式输出的气团轨迹数据文件,生成轨迹图层,并显示轨迹各节点的气压图.脚本程序: f = addfile_hytraj('D:/MyProgram/Distribution/jav ...

  7. MeteoInfoLab脚本示例:Hamawari-8 netCDF data

    示例数据:ftp://ftp.bom.gov.au/anon/sample/catalogue/Satellite/IDE00220.201507140300.nc 该数据的分辨率很高(22000*2 ...

  8. MeteoInfoLab脚本示例:读取文本文件绘制散度图

    MeteoInfoLab中读取文本文件数据的函数是asciiread,获取文本文件行.列数的函数是numasciirow和numasciicol,和NCL中函数名一致,但都是小写字母.本例中的示例数据 ...

  9. MeteoInfoLab脚本示例:站点数据绘制等值线

    站点数据绘制等值线需要首先将站点数据插值为格点数据,MeteoInfo中提供了反距离权法(IDW)和cressman两个方法,其中IDW方法可以有插值半径的选项.这里示例读取一个MICAPS第一类数据 ...

随机推荐

  1. Qt4.8在Windows下的三种编程环境搭建

    Qt4.8在Windows下的三种编程环境搭建 Qt的版本是按照不同的图形系统来划分的,目前分为四个版本:Win32版,适用于Windows平台:X11版,适合于使用了X系统的各种Linux和Unix ...

  2. Java 并发编程(三)为线程安全类中加入新的原子操作

    Java 类库中包括很多实用的"基础模块"类.通常,我们应该优先选择重用这些现有的类而不是创建新的类.:重用能减少开发工作量.开发风险(由于现有类都已经通过測试)以及维护成本.有时 ...

  3. [jQuery]地图浏览:如何实现图片的放大缩小和点击之后的位置居中

    HTML代码: <!DOCTYPE html> <html> <head> <script src="http://ajax.googleapis. ...

  4. JDBC连接数据库经验技巧(转)

    Java数据库连接(JDBC)由一组用 Java 编程语言编写的类和接口组成.JDBC 为工具/数据库开发人员提供了一个标准的 API,使他们能够用纯Java API 来编写数据库应用程序.然而各个开 ...

  5. BI事实上的和维表定义

    一个典型的例子是,逻辑业务相比立方体,产品尺寸.时间维度.位置尺寸,分别作为不同的轴.轴的交点是一个详细的事实.这一事实表是多维度的交叉点的一个表.维表是事实的分析的一种形式. 首先介绍下数据库结构中 ...

  6. JAVA 数据权限设计

    数据权限设计 前言 在各种系统中.要保证数据对象的安全性以及易操作性,使企业的各业务部门.职能部门可以方便并且高效的协同工作,那么一个好的数据权限管理设计就成为一个关键的问题.尽管企业中各个单元的工作 ...

  7. WPS2012交叉引用提示word比wps这种强烈的更新参考

                WPS2012交叉引用技巧,word比wps这点强更新參考文献 到时生成仅仅有有一条线,好像WPS不能够,word能够,假设谁知道能够补充.^_^ 1.写论文,參考文献的改动非 ...

  8. Coreseek:部门查询和增量索引代替实时索引

    1.行业调查 索引系统需要通过主查询来获取所有的文档信息,一个简单的实现是整个表的数据到内存,但是这可能会导致整个表被锁定,并且使其它操作被阻止(例如:在MyISAM格款式上INSERT操作).同时, ...

  9. 将 Android* x86 NDK 供 Eclipse* 而移植 NDK 演示示例应用程序

    目标 面向 Eclipse (ADT) 的 Android 插件如今支持基于 NDK 的应用开发. 其可自己主动生成项目和构件文件以及代码存根.并可集成到整个 Android 应用开发中(构建原生库. ...

  10. BackTrack5 (BT5)无线password破解教程WPA/WPA2-PSK无线password皴

    昨天公布了BackTrack5 (BT5)无线weppassword破解教程之minidwep-gtk破解法一文,对BT5下破解wep无线password的简单方法做了介绍,今天奶牛为朋友们介绍下怎样 ...