zoukankan      html  css  js  c++  java
  • NSIS 打包操作

    1.文档(案例)笔记:

    AddBy 2020-09-11

    具体学习可参考下列网址:

    可参考网址:http://blog.sina.com.cn/s/blog_6cd65f450101cr0p.html

    可参考网址:https://www.cnblogs.com/carlxb/p/12746523.html

    可参考网址:https://www.cnblogs.com/zzllily/articles/5445934.html

    ; Script generated by the HM NIS Edit Script Wizard.
    ; 可参考网址:http://blog.sina.com.cn/s/blog_6cd65f450101cr0p.html
    ;可参考网址:https://www.cnblogs.com/carlxb/p/12746523.html
    ;可参考网址:https://www.cnblogs.com/zzllily/articles/5445934.html
    
    ; 使用defined定义常量
    ;!define PRODUCT_NAME "ReadPassTrain" ;产品名称
    ;!define PRODUCT_VERSION "1.0"  ; 产品版本号
    ;!define PRODUCT_PUBLISHER "namejr"  ;  产品发布者
    ;!define PRODUCT_WEB_SITE ""  ; 网址
    ;!define PRODUCT_DIR_REGKEY "SoftwareMicrosoftWindowsCurrentVersionApp Paths	estapp.exe"  ; 添加注册表
    ;!define PRODUCT_REGKEY "Software	estapp"  ; 创建程序主键
    ;!define PRODUCT_UNINST_KEY "SoftwareMicrosoftWindowsCurrentVersionUninstall${PRODUCT_NAME}"  ;这里定义的变量,最后会显示在控制面板的添加/删除程序的列表里。
    ;!define PRODUCT_UNINST_ROOT_KEY "HKLM"  ; 卸载目录
    
    
    
    ; MUI 1.67 compatible ------
    ;!include "MUI.nsh"  ; 引用界面函数库
    
    ; MUI Settings
    ;!define MUI_ABORTWARNING  ;未安装完成是用户提示
    ;!define MUI_ICON "${NSISDIR}ContribGraphicsIconsmodern-install.ico"  // 定义安装图标
    ;!define MUI_UNICON "${NSISDIR}ContribGraphicsIconsmodern-install.ico"  // 卸载图标
    ;!define MUI_HEADERIMAGE  // 标题图标
    ;!define MUI_HEADERINAGE_RIGHT  // 标题图标所放的位置,_right表示右
    ;!define MUI_HEADERIMAGE_BITMAP "标题图片"  // 添加标题图片
    ;!define MUI_WELCOMEPAGE_TITLE "欢迎使用“产品”安装向导"  // 添加界面导向标题
    ;!define MUI_WELCOMEPAGE_TEXT "
    这个安装向导将指引你完成“产品”的安装进程。
    
    开始安装前,建议先关闭其他所有应用程序。
    
    $_CLICK"  // 添加界面导向文字
    
    
    ; 语言选择框
    ;!define MUI_LANGDLL_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}"
    ;!define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
    ;!define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language"
    ; Welcome page
    ;!insertmacro MUI_PAGE_WELCOME  // 显示导向界面欢迎信息
    ; Instfiles page(下一步)
    ;!define MUI_LICENSEPAGE_TEXT_TOP "阅读协议的其余部分,请按<PgDn>往下滚动页面。"
    ;!define MUI_LICENSEPAGE_TEXT_BOTTOM "如果同意协议中的条款,请选择“接受协议中的条款”并$_CLICK"
    ;!define MUI_LICENSEPAGE_RADIOBUTTONS #协议条款接受选择,也有别的协议接受方式,看个人爱好。
    ;!define MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_ACCEPT "接受协议中的条款"
    ;!define MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_DECLINE "不接受协议中的条款"
    ;!insertmacro MUI_PAGE_LICENSE "License.txt" //你的协议文件
    
    
    ;程序组件界面,用来选择要安装的程序组件
    ;!insertmacro MUI_PAGE_COMPONENTS
    ;程序的安装目录
    ;!insertmacro MUI_PAGE_DIRECTORY
    ;程序安装进程显示
    ;!insertmacro MUI_PAGE_INSTFILES
    ;  装完成界面
    ;!insertmacro MUI_PAGE_FINISH
    ;卸载欢迎界面
    ;!insertmacro MUI_UNPAGE_WELCOME
    ;卸载确认界面
    ;!insertmacro MUI_UNPAGE_CONFIRM
    ;  // 卸载进程显示
    ;!insertmacro MUI_UNPAGE_INSTFILES
    ; 卸载完成界面
    ;!insertmacro MUI_PAGE_FINISH
    ; 界面语言选择
    ;!insertmacro MUI_LANGUAGE "English"  // 英文
    ;!insertmacro MUI_LANGUAGE "SimpChinese"  // 中文简体
    ; MUI end ------
    
    
    ;Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"  ;  //标题栏显示的文字
    ;OutFile "Setup.exe"  // 输出的文件名称和类型
    ;InstallDir "$PROGRAMFILESReadPassTrain"  // 安装程序目录,默认是C:Programfiles
    ;
    ;InstallDirRegKey HKLM "${PRODUCT_UNINST_KEY}" "UninstallString";  对应 InstallDirRegKey HKLM "安装目录注册表" “注册表名”
    ;Icon "${NSISDIR}ContribGraphicsIconsmodern-install.ico"  // 对应本例子中的 Icon MUI_ICON
    ;  // 显示安装信息
    ;ShowInstDetails show
    ;DirText "安装程序将安装 $(^Name) 在下列文件夹。$
    $
    $
    $
    要安装在不同文件夹,单击 [浏览] 并选择其他文件夹。"
    
    ;初始化函数oninit(弹出语言选择框),卸载un.
    ;Function .onInit
    ;  !insertmacro MUI_LANGDLL_DISPLAY
    ;FunctionEnd
    
    ; 主程序
    Section "MainSection" SEC01
      ;SetDetailsPrint textonly #InstFiles界面进度条上面显示的文字
      ;DetailPrint "正在安装必须的程序组件..."
      ;SetDetailsPrint none
    
      SetOutPath "$INSTDIRAudio"  ;  // 存放的文件夹
      SetOverwrite ifnewer  ; // 文件覆盖属性,on/off表示打开或者关闭,ifnewer存在新版本强制覆盖;try可以覆盖就覆盖,不可以覆盖就不覆盖;ifdiff有变动就覆盖(更新或更旧)
      File "C:UsersNAMEJRDesktop打包文件内容ReadPTCodeWebAudiofailure.mp3"  ; /打包的文件路径
      SetOutPath "$INSTDIRCSS"  ; // 多个文件一起打包可重复循环
      File "C:UsersNAMEJRDesktop打包文件内容ReadPTCodeWebCSSCommon.css"  ;  可写成 File "新文件路径+新名称文件" "文件路径的文件"
    SectionEnd
    
    Section -Post
    SectionEnd

    EndBy 2020-09-11

    2.操作实例:

    ; Script generated by the HM NIS Edit Script Wizard.
    
    # 常量定义
    !define PRODUCT_NAME "TestPullBag"  # 产品名称
    !define PRODUCT_VERSION "1.0"  # 版本
    !define PRODUCT_PUBLISHER "namejr"  # 发布者
    !define PRODUCT_DIR_REGKEY "SoftwareMicrosoftWindowsCurrentVersionApp PathsWindowsFormsApp1.exe"  # 添加注册表
    !define PRODUCT_UNINST_KEY "SoftwareMicrosoftWindowsCurrentVersionUninstall${PRODUCT_NAME}"  # 定义删除主键列表
    !define PRODUCT_UNINST_ROOT_KEY "HKLM"  # 定义卸载目录
    !define PRODUCT_STARTMENU_REGVAL "NSIS:StartMenuDir"  # 定义开始菜单安装目录
    
    # 引用函数库
    !include "MUI.nsh"
    
    # 启动程序
    !define MUI_ABORTWARNING  # 安装提示(中途退出会弹出提示框)
    !define MUI_ICON "favicon.ico"  # 安装图标
    ;!define MUI_UNICON "${NSISDIR}ContribGraphicsIconsmodern-uninstall.ico"  # 卸载(更改)图标
    
    # 语言常量定义(目前没发现有什么用处,所以也没用过)
    ;!define MUI_LANGDLL_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}"
    ;!define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
    ;!define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language"
    
    ; Welcome page
    !insertmacro MUI_PAGE_WELCOME  # 启动欢迎界面(第一个页面)
    ; License page
    !insertmacro MUI_PAGE_LICENSE "License.txt"  # 自己定义的协议文本(第二个界面)
    ; Directory page
    !insertmacro MUI_PAGE_DIRECTORY  # 选择安装目录界面(第三个界面)
    ; 第四个界面(开始菜单设置)定义常量
    var ICONS_GROUP
    !define MUI_STARTMENUPAGE_NODISABLE  # 显示是否创建快捷方式选择框(不显示的话默认是创建的,即不显示是否创建快捷方式选择框)
    !define MUI_STARTMENUPAGE_DEFAULTFOLDER "TestPullBag"  # 开始菜单名称设置
    !define MUI_STARTMENUPAGE_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}"  # 注册表
    !define MUI_STARTMENUPAGE_REGISTRY_KEY "${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 "$INSTDIRWindowsFormsApp1.exe"  # 显示是否运行程序
    !insertmacro MUI_PAGE_FINISH  # 打开完成界面(第五个界面)
    
    ; Uninstaller pages
    !insertmacro MUI_UNPAGE_INSTFILES  # 卸载进程显示
    
    ; 安装过程语言设置
    ;!insertmacro MUI_LANGUAGE "English"
    !insertmacro MUI_LANGUAGE "SimpChinese"
    
    
    Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"  # 标题栏显示的程序信息
    OutFile "Setup.exe"  # 安装包名称
    InstallDir "$PROGRAMFILESTestPullBag"  # 安装程序目录名称
    InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""  # 安装目录注册表
    ShowInstDetails show  # 显示安装详情
    ShowUnInstDetails show  # 显示卸载详情
    
    # 开始函数
    ;Function .onInit
    ;  !insertmacro MUI_LANGDLL_DISPLAY  # 语言选择(目前没发现用处)
    ;FunctionEnd
    
    Section "MainSection" SEC01
      SetOutPath "$INSTDIRSourcesImages"
      SetOverwrite try
      File "FirstPushSourcesImages横屏.png"
      SetOutPath "$INSTDIRSourcesMusic"
      File "FirstPushSourcesMusic旧梦一场.wav"
      SetOutPath "$INSTDIR"
      File "FirstPushWindowsFormsApp1.exe"
      File "FirstPushWindowsFormsApp1.exe.config"
      File "FirstPushWindowsFormsApp1.pdb"
    
    ; Shortcuts(创建快捷菜单)
      !insertmacro MUI_STARTMENU_WRITE_BEGIN Application  # 开始
      CreateDirectory "$SMPROGRAMS$ICONS_GROUP"  # 创建
      CreateShortCut "$SMPROGRAMS$ICONS_GROUPTestPullBag.lnk" "$INSTDIRWindowsFormsApp1.exe"  # 开始菜单快捷方式
      CreateShortCut "$DESKTOPTestPullBag.lnk" "$INSTDIRWindowsFormsApp1.exe"  # 桌面快捷方式
      !insertmacro MUI_STARTMENU_WRITE_END  # 结束
    SectionEnd
    
    Section -AdditionalIcons
      !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
      CreateShortCut "$SMPROGRAMS$ICONS_GROUPUninstall.lnk" "$INSTDIRuninst.exe"  # 创建卸载快捷方式
      !insertmacro MUI_STARTMENU_WRITE_END
    SectionEnd
    
    Section -Post
      WriteUninstaller "$INSTDIRuninst.exe"  # 创建(写入)卸载程序
      # 将数据写入到卸载程序里面
      WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIRWindowsFormsApp1.exe"
      WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
      WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIRuninst.exe"
      WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIRWindowsFormsApp1.exe"
      WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
      WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
    SectionEnd
    
    # 卸载成功提示
    Function un.onUninstSuccess
      HideWindow
      MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地从你的计算机移除。"
    FunctionEnd
    
    # 卸载提示
    Function un.onInit
    !insertmacro MUI_UNGETLANGUAGE
      MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "你确实要完全移除 $(^Name) ,其及所有的组件?" IDYES +2
      Abort
    FunctionEnd
    
    # 卸载删除信息
    Section Uninstall
      !insertmacro MUI_STARTMENU_GETFOLDER "Application" $ICONS_GROUP
      Delete "$INSTDIRuninst.exe"
      Delete "$INSTDIRWindowsFormsApp1.pdb"
      Delete "$INSTDIRWindowsFormsApp1.exe.config"
      Delete "$INSTDIRWindowsFormsApp1.exe"
      Delete "$INSTDIRSourcesMusic旧梦一场.wav"
      Delete "$INSTDIRSourcesImages横屏.png"
    
      Delete "$SMPROGRAMS$ICONS_GROUPUninstall.lnk"
      Delete "$DESKTOPTestPullBag.lnk"
      Delete "$SMPROGRAMS$ICONS_GROUPTestPullBag.lnk"
    
      RMDir "$SMPROGRAMS$ICONS_GROUP"
      RMDir "$INSTDIRSourcesMusic"
      RMDir "$INSTDIRSourcesImages"
      RMDir "$INSTDIR"
    
      DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
      DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
      SetAutoClose true  # 是否自动关闭,false开启手动关闭
    SectionEnd
  • 相关阅读:
    MySQL教程(四)—— MySQL的登录与退出
    MySQL教程(三)—— MySQL的安装与配置
    django中使用POST方法报错 URL via POST, but the URL doesn't end in a slash
    django的html模板中获取字典的值
    使用pycharm手动搭建python语言django开发环境(五) 使用日志模块打日志
    使用pycharm手动搭建python语言django开发环境(四) django中buffer类型与str类型的联合使用
    python语言 buffer类型数据的使用 'ascii' codec can't decode byte 0xe5 问题的解决
    使用pycharm手动搭建python语言django开发环境(三) 使用django的apps应用 添加应用静态文件
    使用pycharm手动搭建python语言django开发环境
    使用pycharm手动搭建python语言django开发环境(一)
  • 原文地址:https://www.cnblogs.com/namejr/p/13663688.html
Copyright © 2011-2022 走看看