;--------------------------------
;Include Modern UI
!include "MUI2.nsh"
;-------------上面这段是包含头文件的语法
;General
//这个节是关于常规的设置,一般是宏定义的具体定义
;Name and file
Name "Modern UI Test" ; 这个是安装软件的名字,会出现在安装setup的title上.
OutFile "Basic.exe" ;编译后的输出文件名为Basic.exe,一般我们是用setup.exe
;Default installation folder //这个软件的默认安装目录,当然可以改的,一般我们是安装到$PROGRAMFILES,具体的含义参考帮助里面的
InstallDir "$LOCALAPPDATA\Modern UI Test"
;Get installation folder from registry if available //这个是在注册表里面建立的文件夹的名字,一般是软件公司的名字。
InstallDirRegKey HKCU "Software\Modern UI Test" ""
;Request application privileges for Windows Vista //vista 权限的相关,我也没搞明白。呵呵
RequestExecutionLevel user
;--------------------------------
;Interface Settings
!define MUI_ABORTWARNING
;--------------------------------
;Pages
//注意,下面的很重要。每一行代表一个安装页面,即,协议界面,组件界面,选择安装到文件夹界面,执行安装。
!insertmacro MUI_PAGE_LICENSE "${NSISDIR}\Docs\Modern UI\License.txt" //后面的文件及时要显示的协议的内容。
; !insertmacro MUI_PAGE_COMPONENTS //要安装的组件界面,一般是选择那些安装那些不安装的,我们只有一个,所以不需要这个界面
!insertmacro MUI_PAGE_DIRECTORY //选择安装的目录,是C盘PROGRAM FILES 还是其他地方
!insertmacro MUI_PAGE_INSTFILES // 真实执行安装的情况
!insertmacro MUI_UNPAGE_CONFIRM //卸载的确认操作。
!insertmacro MUI_UNPAGE_INSTFILES //真正执行卸载的情况
;--------------------------------//根语言有关的,我们不去管它
;Languages
!insertmacro MUI_LANGUAGE "English"
;--------------------------------
;Installer Sections//安装要做的事情都在下面的section里面
Section "Dummy Section" SecDummy //对应于组件中的Dummy Section的具体执行动作。每个section 对于与一个组件
SetOutPath "$INSTDIR" //设置安装的最终目录,这样对于一些操作可以不设定默认的目录。如:File命令
;ADD YOUR OWN FILES HERE...
//这里可以增加自己的操作,比如注册组件,拷贝文件FILE
;Store installation folder
WriteRegStr HKCU "Software\Modern UI Test" "" $INSTDIR //写注册表信息
;Create uninstaller
WriteUninstaller "$INSTDIR\Uninstall.exe" //创建卸载的注册表信息,可以在安装卸载里面看到
SectionEnd
;Uninstaller Section //卸载要做的事情
Section "Uninstall" //卸载的节,同理跟安装的差不多,基本是安装的反操作。
;ADD YOUR OWN FILES HERE...
Delete "$INSTDIR\Uninstall.exe" //删除卸载程序本身,其实这里有一个细节,写作程序是先把自己拷贝到临时目录,然后运行位于临时目录的程序。
RMDir "$INSTDIR" //删除程序的文件夹
DeleteRegKey /ifempty HKCU "Software\Modern UI Test"//删除注册表相关的东西
DeleteRegKey "$INSTDIR\Uninstall.exe"
SectionEnd