`

NSIS定义常量

    博客分类:
  • NSIS
 
阅读更多
NSIS定义常量

${PRODUCT_NAME}; 安装程序初始定义常量
!define PRODUCT_NAME "软件名"
!define PRODUCT_VERSION "1.0"
!define PRODUCT_WEB_SITE "http://www.google.com"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\${PRODUCT_NAME}.exe"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
!define PRODUCT_STARTMENU_REGVAL "NSIS:StartMenuDir"

SetCompressor /SOLID lzma
SetCompressorDictSize 32

; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------
!include "MUI.nsh"

; MUI 预定义常量
!define MUI_ABORTWARNING ;当用户要关闭安装程序时, 显示一个警告消息框
!define MUI_UNABORTWARNING ;当用户要关闭卸载程序时, 显示一个警告消息框
!define MUI_ICON "install.ico" ;安装程序图标
!define MUI_UNICON "uninst.ico" ;卸载程序图标
!define MUI_FINISHPAGE_NOAUTOCLOSE ;不自动跳到完成页面, 允许用户检查安装记录
!define MUI_UNFINISHPAGE_NOAUTOCLOSE ;不自动跳到完成页面, 允许用户检查卸载记录
!define MUI_WELCOMEFINISHPAGE_BITMAP "welcome.bmp" ;用于欢迎页面和完成页面的位图(推荐尺寸: 164x314 象素).
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "welcome.bmp" ;用于卸载页面的位图(推荐尺寸: 164x314 象素).
!define MUI_COMPONENTSPAGE_SMALLDESC ;较小的页面底部的描述区域
!define MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_INFO "鼠标移到组件上可查看相应说明" ;当没有选择区段时, 显示于描述框中的文本

; 欢迎页面
!insertmacro MUI_PAGE_WELCOME
; 组件选择页面
!insertmacro MUI_PAGE_COMPONENTS
; 安装目录选择页面
!insertmacro MUI_PAGE_DIRECTORY
; 开始菜单设置页面
var ICONS_GROUP
!define MUI_STARTMENUPAGE_NODISABLE
!define MUI_STARTMENUPAGE_DEFAULTFOLDER "PRODUCTNAME"!defineMUISTARTMENUPAGEREGISTRYROOT"{PRODUCT_NAME}" !define?MUI_STARTMENUPAGE_REGISTRY_ROOT?"{PRODUCT_UNINST_ROOT_KEY}"
!define MUI_STARTMENUPAGE_REGISTRY_KEY "PRODUCTUNINSTKEY"!defineMUISTARTMENUPAGEREGISTRYVALUENAME"{PRODUCT_UNINST_KEY}" !define?MUI_STARTMENUPAGE_REGISTRY_VALUENAME?"{PRODUCT_STARTMENU_REGVAL}"
!insertmacro MUI_PAGE_STARTMENU Application $ICONS_GROUP
; 安装过程页面
!insertmacro MUI_PAGE_INSTFILES
; 安装完成页面
!define MUI_FINISHPAGE_RUN "$INSTDIR\${PRODUCT_NAME}.exe"
!define MUI_FINISHPAGE_RUN_NOTCHECKED ;默认不选中 '运行程序' 复选框
!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\Readme.txt"
!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED ;默认不选中 '自述文件' 复选框
!define MUI_FINISHPAGE_LINK "【欢迎访问作者主页】"
!define MUI_FINISHPAGE_LINK_LOCATION "${PRODUCT_WEB_SITE}"
!insertmacro MUI_PAGE_FINISH

; 安装卸载过程页面
!insertmacro MUI_UNPAGE_INSTFILES

; 安装界面包含的语言设置
!insertmacro MUI_LANGUAGE "SimpChinese"
!insertmacro MUI_LANGUAGE "English"

; 安装预释放文件
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
; ------ MUI 现代界面定义结束 ------


Name "PRODUCTNAME{PRODUCT_NAME}?{PRODUCT_VERSION}"
OutFile "Setup.exe"
InstallDir "PROGRAMFILES$PRODUCTNAME"InstallDirRegKeyHKLM"PROGRAMFILES\${PRODUCT_NAME}" InstallDirRegKey?HKLM?"{PRODUCT_UNINST_KEY}" "UninstallString"
ShowInstDetails hide ;设置是否显示安装详细信息
ShowUnInstDetails hide
BrandingText "作者:"

Section "!主程序" SEC01
SectionIn RO ;必选组件灰色
  SetOutPath "$INSTDIR"
  SetOverwrite on
  File "Readme.txt"

; 创建开始菜单快捷方式
  !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
  CreateShortCut "DESKTOP$PRODUCTNAME.lnk""DESKTOP\${PRODUCT_NAME}.lnk"?"INSTDIR\PRODUCTNAME.exe"CreateDirectory"{PRODUCT_NAME}.exe" ??CreateDirectory?"SMPROGRAMS\ICONSGROUP"CreateShortCut"ICONS_GROUP" ??CreateShortCut?"SMPROGRAMS\ICONSGROUP$PRODUCTNAME.lnk""ICONS_GROUP\${PRODUCT_NAME}.lnk"?"INSTDIR\${PRODUCT_NAME}.exe"
  !insertmacro MUI_STARTMENU_WRITE_END
SectionEnd

; 安装.NET Framework
Section "Microsoft .NET Framework 2.0" SEC02
  File "DotNet.exe"
  ExecWait '"DotNet.exe" /q:a /c:"install.exe /q"'
SectionEnd

Section -AdditionalIcons
  !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
  WriteIniStr "INSTDIR$PRODUCTNAME.url""InternetShortcut""URL""INSTDIR\${PRODUCT_NAME}.url"?"InternetShortcut"?"URL"?"{PRODUCT_WEB_SITE}"
  CreateShortCut "SMPROGRAMS$ICONSGROUP\欢迎访问作者主页.lnk""SMPROGRAMS\$ICONS_GROUP\欢迎访问作者主页.lnk"?"INSTDIR\PRODUCTNAME.url"CreateShortCut"{PRODUCT_NAME}.url" ??CreateShortCut?"SMPROGRAMS\ICONSGROUP\卸载.lnk""ICONS_GROUP\卸载.lnk"?"INSTDIR\uninst.exe"
  !insertmacro MUI_STARTMENU_WRITE_END
SectionEnd

Section -Post
  WriteUninstaller "INSTDIR\uninst.exe"WriteRegStrHKLM"INSTDIR\uninst.exe" ??WriteRegStr?HKLM?"{PRODUCT_DIR_REGKEY}" "" "$INSTDIR\PRODUCTNAME.exe"WriteRegStr{PRODUCT_NAME}.exe" ??WriteRegStr?{PRODUCT_UNINST_ROOT_KEY} "PRODUCTUNINSTKEY""DisplayName""{PRODUCT_UNINST_KEY}"?"DisplayName"?"(^Name)"
  WriteRegStr PRODUCTUNINSTROOTKEY"{PRODUCT_UNINST_ROOT_KEY}?"{PRODUCT_UNINST_KEY}" "UninstallString" "INSTDIR\uninst.exe"WriteRegStrINSTDIR\uninst.exe" ??WriteRegStr?{PRODUCT_UNINST_ROOT_KEY} "PRODUCTUNINSTKEY""DisplayIcon""{PRODUCT_UNINST_KEY}"?"DisplayIcon"?"INSTDIR\PRODUCTNAME.exe"WriteRegStr{PRODUCT_NAME}.exe" ??WriteRegStr?{PRODUCT_UNINST_ROOT_KEY} "PRODUCTUNINSTKEY""DisplayVersion""{PRODUCT_UNINST_KEY}"?"DisplayVersion"?"{PRODUCT_VERSION}"
  WriteRegStr PRODUCTUNINSTROOTKEY"{PRODUCT_UNINST_ROOT_KEY}?"{PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
SectionEnd

#-- 根据 NSIS 脚本编辑规则,所有 Function 区段必须放置在 Section 区段之后编写,以避免安装程序出现未可预知的问题。--#

; 区段组件描述
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
  !insertmacro MUI_DESCRIPTION_TEXT SEC01"必备组件"!insertmacroMUIDESCRIPTIONTEXT{SEC01}?"必备组件" ??!insertmacro?MUI_DESCRIPTION_TEXT?{SEC02} "运行主程序必需的框架,如果确认已经安装,则不必勾选"
!insertmacro MUI_FUNCTION_DESCRIPTION_END

/******************************
*  以下是安装程序的卸载部分  *
******************************/

Section Uninstall
  !insertmacro MUI_STARTMENU_GETFOLDER "Application" ICONSGROUPDelete"ICONS_GROUP ??Delete?"INSTDIR\uninst.exe"

  Delete "$DESKTOP\${PRODUCT_NAME}.lnk"
 
  SetShellVarContext current ;当前用户开始菜单
  Delete "SMPROGRAMS$ICONSGROUP\卸载.lnk"Delete"SMPROGRAMS\$ICONS_GROUP\卸载.lnk" ??Delete?"SMPROGRAMS\ICONSGROUP$PRODUCTNAME.lnk"Delete"ICONS_GROUP\${PRODUCT_NAME}.lnk" ??Delete?"SMPROGRAMS\ICONSGROUP\欢迎访问作者主页.lnk"RMDir/r"ICONS_GROUP\欢迎访问作者主页.lnk" ??RMDir?/r?"SMPROGRAMS\$ICONS_GROUP"
    SetShellVarContext all ;全部用户开始菜单
  Delete "SMPROGRAMS$ICONSGROUP\卸载.lnk"Delete"SMPROGRAMS\$ICONS_GROUP\卸载.lnk" ??Delete?"SMPROGRAMS\ICONSGROUP$PRODUCTNAME.lnk"Delete"ICONS_GROUP\${PRODUCT_NAME}.lnk" ??Delete?"SMPROGRAMS\ICONSGROUP\欢迎访问作者主页.lnk"RMDir/r"ICONS_GROUP\欢迎访问作者主页.lnk" ?? ??RMDir?/r?"SMPROGRAMS\ICONSGROUP"RMDir/r"ICONS_GROUP"  ??RMDir?/r?"INSTDIR"

  DeleteRegKey PRODUCTUNINSTROOTKEY"{PRODUCT_UNINST_ROOT_KEY}?"{PRODUCT_UNINST_KEY}"
  DeleteRegKey HKLM "{PRODUCT_DIR_REGKEY}"   SetAutoClose false SectionEnd  #-- 根据 NSIS 脚本编辑规则,所有 Function 区段必须放置在 Section 区段之后编写,以避免安装程序出现未可预知的问题。--#  Function un.onInit   MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "您确实要完全移除{PRODUCT_DIR_REGKEY}" ??SetAutoClose?false SectionEnd  #--?根据?NSIS?脚本编辑规则,所有?Function?区段必须放置在?Section?区段之后编写,以避免安装程序出现未可预知的问题。--#  Function?un.onInit ??MessageBox?MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2?"您确实要完全移除?(^Name) ,及其所有的组件?" IDYES +2
  Abort
FunctionEnd

Function un.onUninstSuccess
  HideWindow
  MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地从您的计算机移除。"
FunctionEnd
分享到:
评论

相关推荐

    NSIS使用教程档.zip_nsis

    1. **基础语法**:如何定义安装界面、安装步骤,以及如何使用变量和常量。 2. **命令和函数**:学习如何使用内置的命令,例如`File`用于添加文件,`Section`用于定义安装组件,`RegDLL`用于注册动态链接库等。 3. ...

    NSIS用户手册中文版

    2. **变量与常量**:NSIS支持定义变量和常量,如`StrCpy`用于字符串赋值,`IntCmp`进行整数比较。 3. **函数与插件**:NSIS内置一些函数,如`SetOutPath`设置输出路径,同时有丰富的插件库扩展其功能,如`File`插件...

    nsis 操作文档

    提供的NSIS.chm文件是一个完整的NSIS帮助文档,包含了所有NSIS命令、函数和常量的详细说明,以及实例代码。通过这个文档,你可以快速查找并学习NSIS的相关知识。 总之,NSIS是一个强大的安装制作工具,其灵活性和...

    NSIS中文手册.zip

    2. **变量和常量**:NSIS支持变量和常量的使用,变量可以存储运行时的信息,常量在编译时就确定其值。例如,`$INSTDIR`是一个内置变量,表示安装目录。 3. **用户界面**:NSIS可以创建自定义的安装界面,通过`Page`...

    NSIS打包类

    3. **变量与常量**:NSIS支持全局变量和局部变量,以及预定义的常量,如`INSTDIR`表示安装目录,`OUTDIR`表示输出目录,这些常量在脚本中被广泛使用。 4. **用户界面定制**:NSIS提供了一系列内置的用户界面元素,...

    NSIS用户手册(中文版)

    预定义 ${__FILE__} ${__LINE__} ${__DATE__} ${__TIME__} ${__TIMESTAMP__} 范围预定义 ${__GLOBAL__} ${__SECTION__} ${__FUNCTION__} ${__PAGEEX__} ${__UNINSTALL__} 读取环境变量 $%envVarName% ...

    NSIS+Duilib仿QQ安装包

    4. **include**:通常在编程项目中,`include`目录存放头文件,这些头文件包含了函数声明、常量定义等,是编译时需要引用的部分。在这里,它们可能包含了NSIS脚本和Duilib的头文件,供脚本编写者在构建安装程序时...

    NSIS Users Manual NSIS用户手册

    **脚本文件**:包含了NSIS脚本的编写规则,如变量定义、标签、跳转指令等。 **脚本结构**:讲解了如何组织脚本逻辑,包括安装属性、页面处理、节定义等内容。 - **安装属性**:用于设置安装程序的基础信息,如版本...

    NSIS体验

    2. **定义**:设置全局变量、常量或函数,用于脚本中多次使用的值。 3. **页面**:定义安装过程中用户看到的交互界面,如许可协议、目标路径选择等。 4. **段落**:定义安装的具体步骤,每个段落代表一组相关文件的...

    NSIS基础教程

    - **指令与函数**:NSIS支持一系列内置指令和函数,如`Section`用于定义安装项,`SetOutPath`指定输出路径,`File`添加文件到安装包等。 - **变量与常量**:变量用于存储动态数据,常量则为固定值,如`INSTDIR`...

    nsis 入门教程

    define `定义常量、` !include `引入其他脚本或头文件开始,接着是` OutFile `指定生成的安装包文件名。 2. **安装部分**:使用` Section `-`SectionEnd `定义安装过程,每个` Section `代表一个独立的安装步骤,...

    NSIS PLUGIN

    - **Include** 目录通常包含头文件(.h文件),这些文件定义了插件提供的函数和常量,供NSIS脚本使用。开发者在编写NSIS脚本时,需要引用这些头文件来声明和使用插件功能。 - **Plugins** 目录是NSIS插件的实际存放...

    NSIS用户手册中文.rar

    - **编译参数**:如 `/Vn` 静默编译,`/D` 定义预处理器常量。 通过阅读"NSIS用户手册中文.chm",开发者可以学习到如何编写NSIS脚本,创建专业级别的安装程序,满足各种复杂的部署需求。无论是初学者还是经验丰富...

    nsis学习笔记

    常量则是预定义的值,如`INSTDIR`表示安装目录。 二、安装过程 1. 页面定制:通过`Page`指令创建安装过程中显示的对话框,例如`Page InstFiles`显示文件安装进度,`Page Custom`可实现自定义逻辑。 2. 文件操作:...

    NSIS图文教程集锦 - 轻狂志 - 20130518

    - **变量与常量**:NSIS支持全局和局部变量,以及预定义的系统常量,用于存储和传递数据。 - **语法**:NSIS使用类似C语言的语法,易于理解和学习。 2. **安装界面**: - **自定义页面**:NSIS允许创建自定义...

    nsis:nsis脚本

    2. **变量与常量**: - `StrCpy`:复制字符串到变量。 - `IntCmp` 和 `IntOp`:进行条件判断和算术运算。 - `SetOutPath`:设置输出路径,即安装文件的目标位置。 - `File` 和 `RMDir`:添加文件到安装包和删除...

    intellij-nsis:IntelliJ IDEA 的 NSIS 语法高亮插件

    1. **语法高亮**:插件为NSIS关键字、函数和常量提供颜色区分,使得代码更易于阅读和理解。这对于减少错误和提高代码质量至关重要,特别是在处理大型脚本时。 2. **代码完成**:类似于Java和其他编程语言,插件提供...

    Hide The Windows

    1. **Shared.h**:这是一个头文件,通常包含程序中多个源文件共享的函数声明或常量定义。在这个项目中,它可能包含了与隐藏和显示窗口相关的函数原型,以及可能使用的数据结构定义。 2. **HideThatWindow!.sln**:...

    DDC++-开源

    `HubFrame` 可能是客户端界面的一个关键组件,而 `StringDefs` 可能包含了程序中的字符串定义和常量。 4. `Doxyfile`:这是一个 Doxygen 配置文件,用于自动生成项目文档。这表明项目遵循良好的编程实践,重视代码的...

    wxBar-开源

    1. **FuncDefs.h**:这是一个头文件,通常包含函数声明和一些常量定义,用于在C++项目中组织和共享函数接口。在wxBar的上下文中,它可能包含了启动栏功能的关键函数定义。 2. **wxBar.nsi**:这是一个NSIS...

Global site tag (gtag.js) - Google Analytics