nsi学习之 软件重复安装不可以改路径
!include "LogicLib.nsh"
; 安装程序初始定义常量
!define PRODUCT_NAME "HelloWorld"
!define PRODUCT_VERSION "1.01"
!define PRODUCT_PUBLISHER "大彬出版社"
!define PRODUCT_WEB_SITE "http://www.jiayun.club"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\计算器.exe"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
SetCompressor lzma
; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------
!include "MUI.nsh"
; MUI 预定义常量
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
; 欢迎页面
!insertmacro MUI_PAGE_WELCOME
; 许可协议页面
;!insertmacro MUI_PAGE_LICENSE "..\..\..\..\path\to\licence\YourSoftwareLicence.txt"
; 安装目录选择页面
!define MUI_PAGE_CUSTOMFUNCTION_SHOW installPathCheck
!insertmacro MUI_PAGE_DIRECTORY
; 安装过程页面
!insertmacro MUI_PAGE_INSTFILES
; 安装完成页面
!define MUI_FINISHPAGE_RUN "$INSTDIR\计算器.exe"
!insertmacro MUI_PAGE_FINISH
; 安装卸载过程页面
!insertmacro MUI_UNPAGE_INSTFILES
; 安装界面包含的语言设置
!insertmacro MUI_LANGUAGE "SimpChinese"
; 安装预释放文件
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
; ------ MUI 现代界面定义结束 ------
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "Setup.exe"
; 读取注册表中的值(1)
InstallDirRegKey HKLM "Software\HelloWorld" "installPath"
InstallDir "$PROGRAMFILES\HelloWorld安装位置"
ShowInstDetails show
ShowUnInstDetails show
DirText "安装向导将把 ${PRODUCT_NAME} 安装在下列文件夹,如果要安装到其他文件夹请单击 [浏览(B)] 进行选择。"
Section "MainSection" SEC01
; 把安装路径写进注册表(2)
WriteRegStr HKLM "Software\HelloWorld" "installPath" $INSTDIR
SetOutPath "$INSTDIR"
SetOverwrite ifnewer
File "计算器.exe"
CreateDirectory "$SMPROGRAMS\My application"
CreateShortCut "$SMPROGRAMS\My application\My application.lnk" "$INSTDIR\计算器.exe"
CreateShortCut "$DESKTOP\My application.lnk" "$INSTDIR\计算器.exe"
SectionEnd
Section -AdditionalIcons
WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
CreateShortCut "$SMPROGRAMS\My application\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
CreateShortCut "$SMPROGRAMS\My application\Uninstall.lnk" "$INSTDIR\uninst.exe"
SectionEnd
Section -Post
WriteUninstaller "$INSTDIR\uninst.exe"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\计算器.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\计算器.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
SectionEnd
/******************************
* 以下是安装程序的卸载部分 *
******************************/
Section Uninstall
; 删除注册表中的值(3)
DeleteRegKey /ifempty HKLM "Software\HelloWorld"
Delete "$INSTDIR\${PRODUCT_NAME}.url"
Delete "$INSTDIR\uninst.exe"
Delete "$INSTDIR\计算器.exe"
Delete "$SMPROGRAMS\My application\Uninstall.lnk"
Delete "$SMPROGRAMS\My application\Website.lnk"
Delete "$DESKTOP\My application.lnk"
Delete "$SMPROGRAMS\My application\My application.lnk"
RMDir "$SMPROGRAMS\My application"
RMDir "$INSTDIR"
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
SetAutoClose true
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
Function installPathCheck
StrCpy $0 ""
ReadRegStr $0 HKLM Software\HelloWorld "installPath"
StrCmp $0 "" +6
;禁用浏览按钮
FindWindow $0 "#32770" "" $HWNDPARENT
GetDlgItem $0 $0 1001
EnableWindow $0 0
;禁止编辑目录
FindWindow $0 "#32770" "" $HWNDPARENT
GetDlgItem $0 $0 1019
EnableWindow $0 0
StrCpy $0 ""
FunctionEnd
以上是脚本文件,逻辑需要添加的代码已经红色标出
本来希望定义个全局变量,在installPathCheck方法中为其赋值,InstallDir直接引用变量,结果不行。原因很多,我也不能断定
nsi学习之 软件重复安装不可以改路径相关推荐
- linux系统管理学习笔记之三----软件的安装
linux系统管理学习笔记之三----软件的安装 2009-12-29 19:10:02 标签:linux 系统管理 [推送到技术圈] 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 ...
- python编程需要什么软件-《》 学习python编程需要安装哪些软件?
python安装教程有没有?最好是视频的 廖雪峰的python教程这里有教程,还是不错的. 学Python要安装哪些软件? 一. 安装python 1. 从python下载相应的python安装包,打 ...
- 学习自旋电子学的笔记00:杂谈(闲话) OOMMF软件的安装
文章目录 前言 一.杂谈 二. OOMMF软件的安装 1.TK环境的安装 2.下载OOMMF资源包 总结 年年岁岁花相似,岁岁年年人不同.--刘希夷<代悲白头翁> 前言 时光飞逝,日月如梭 ...
- ubuntu系统vim常用命令学习以及ubuntu软件下载安装
文章目录 一.ubuntu系统vim常用命令学习 (一)进入进入vim编辑器的方式 (二)vi的三种工作方式 (三)退出vi的命令 (四)命令模式下的各种命令 1.光标移动命令 2.插入命令 3.删除 ...
- DSP(TMSF280049C)学习笔记1:软件的安装与新工程的建立
DSP(TMSF280049C)学习笔记1:软件的安装与新工程的建立 初次接触DSP(TMSF280049C)这款开发板,主要对学习的过程进行记录,因为是初次学习,可能有些地方存在错误,还请各位大神帮 ...
- Linux学习笔记4-三种不同类型的软件的安装(绿色软件、rpm软件、源代码软件)...
在Linux下软件分三种: 1.绿色软件:即不用安装直接就能用的软件 2.rpm安装包:以rpm结尾的可执行文件 3.源码文件:没有进行过编译和打包的文件,需要编译后再进行安装 一.绿色软件的安装 ...
- Linux学习笔记——软件安装
环境变量 当我们执行一个命令的时候,默认从当前路径开始查找.如果当前路径找不到对应的命令文件,从环境变量$PATH查找. $PATH的配置文件在/etc/profile window路径与路径之间用' ...
- Linux中你必须学习的软件安装工具yum(以及必须得安装的软件)
目录 1. Linux下的软件安装方式 2.什么是yum 3.如何使用yum安装 3.1 查看yum中可下载软件 3.2* yum安装相应软件 3.3 yum卸载相应软件 4 配置yum源 4.1 为 ...
- Linux安全运维学习⑤ ---- yum工具进行软件的安装与卸载 (与依赖关系列表理解)
需求:卸载vim编辑器工具 1.该软件的名称 rpm -qa | grep "vim" 一共发现了四个相关文件 2.卸载 rpm -e 卸载common 需要先卸载 enhance ...
最新文章
- php layui table,layui table 相关问题汇总
- 修改远程桌面连接端口
- 第一次搭建vue项目--安装vue-cli、初始化项目
- 发布一个实体类属性生成小工具,给开发加点料
- C++之抽象基类与纯虚函数
- bundlefusion论文阅读笔记
- Storm任务提交过程及目录树介绍
- socket编程五种模型
- 如何查找完全二叉树最后一层的最右边的结点
- torch运行错误libcudnn Unsupported HDF5 version: 1.10.2错误
- unity 插件uniwebview 内嵌H5游戏
- Hexo博客之速度优化
- 光继电器一体化控制实训系统
- 程序员工资高,到底程序员的工资有多高?你不了解的程序员!
- NDoc: How to Make Good Use of Your XML Comments?
- python携程怎么做数据同步_python协程中同步如何使用?
- Devops之制品库平台nexus实践
- zufe 2527问题 K: Jelly与狗头人的地下世界
- 目前最好用的云电脑排行有哪些?免费阿里云无影云电脑
- spring利用Druid实现sql监控界面
热门文章
- k8s系列08-负载均衡器之PureLB
- python检测屏幕亮点_使用Python和OpenCV检测图像中的多个亮点
- 职场办公居然不会打印?纸型、单双面及PPT打印设置,干货教程!
- 获取今天是今年的第几周
- windows故障转移群集和mysql_搭建Windows故障转移群集
- 功能安全标准ISO26262-1翻译
- 30、基于51单片机交通灯车流量管控数码管显示系统设计
- 从0开始搭建低代码平台系列(系统设计与规划)
- 解决方案|AttributeError: (module ‘scipy.sparse‘ has no attribute ‘coo_array‘)
- 瞩目!2019 Google Play Awards 提名名单揭晓!