杉宫竹苑工作室

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2083|回复: 0

NSIS:在注册表中记录安装路径以便重装或升级时读取

[复制链接]
发表于 2015-2-3 22:18:50 | 显示全部楼层 |阅读模式

正式会员享受无限制浏览网站功能和高速网盘下载,赶快加入本站吧!

您需要 登录 才可以下载或查看,没有账号?立即注册

x

在NSIS中,这个功能是非常有用的,可以避免用户把程序安装到多个位置的尴尬。

第1步:在“安装目录选择页面”前面加入以下代码:

  1. !define MUI_PAGE_CUSTOMFUNCTION_show Pageshow
复制代码

第2步:读取注册表中关于安装路径的键值,如果没有,就使用默认路径。

  1. InstallDirRegKey HKCU “Software\eBook Workshop” “”
复制代码


第3步:在主区段中把安装路径写入注册表。
  1. WriteRegStr HKCU “Software\eBook Workshop” “” $INSTDIR
复制代码


第4步:在卸载区段删除注册表中安装路径的键值。
  1. DeleteRegKey /ifempty HKCU “Software\eBook Workshop”
复制代码

第5步:判断如果安装过,禁止修改安装路径。
  1. Function Pageshow
  2.   ReadRegStr $0 HKCU "Software\eBook Workshop" ""
  3.   ${If} $0 == ""
  4.   ${Else}
  5.   ;禁用浏览按钮
  6.   FindWindow $0 "#32770" "" $HWNDPARENT
  7.   GetDlgItem $0 $0 1001
  8.   EnableWindow $0 0
  9.   ;禁用编辑的目录
  10.   FindWindow $0 "#32770" "" $HWNDPARENT
  11.   GetDlgItem $0 $0 1019
  12.   EnableWindow $0 0
  13.   FindWindow $0 "#32770" "" $HWNDPARENT
  14.   GetDlgItem $0 $0 1006
  15.   SendMessage $0 ${WM_SETTEXT} 0 "STR:您已经安装过 ${PRODUCT_NAME} ,现在进行的覆盖安装不能更改安装目录,如果您需要更改安装目录,请先卸载已经安装的版本之后再运行此安装程序!"
  16.   ${EndIf}
  17. FunctionEnd
复制代码


轻狂注:以上代码中的eBook Workshop要替换为你软件的名称或特定标识文字。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SgzyStudio

GMT+8, 2024-5-16 04:41 , Processed in 0.117061 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表