NSIS:在注册表中记录安装路径以便重装或升级时读取
文章转自王牌软件
站长推荐:NSetup一键部署软件
一键式完成美化安装包制作,自动增量升级,数据统计,数字签名。应对各种复杂场景,脚本模块化拆分,常规复杂的脚本代码,图形化设置。无需专业的研发经验,轻松完成项目部署。(www.nsetup.cn)
只回答业务咨询
站长推荐:NSetup一键部署软件
一键式完成美化安装包制作,自动增量升级,数据统计,数字签名。应对各种复杂场景,脚本模块化拆分,常规复杂的脚本代码,图形化设置。无需专业的研发经验,轻松完成项目部署。(www.nsetup.cn)
在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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Function Pageshow ReadRegStr $0 HKCU "Software\eBook Workshop" "" ${If} $0 == "" ${Else} ;禁用浏览按钮 FindWindow $0 "#32770" "" $HWNDPARENT GetDlgItem $0 $0 1001 EnableWindow $0 0 ;禁用编辑的目录 FindWindow $0 "#32770" "" $HWNDPARENT GetDlgItem $0 $0 1019 EnableWindow $0 0 FindWindow $0 "#32770" "" $HWNDPARENT GetDlgItem $0 $0 1006 SendMessage $0 ${WM_SETTEXT} 0 "STR:您已经安装过 ${PRODUCT_NAME} ,现在进行的覆盖安装不能更改安装目录,如果您需要更改安装目录,请先卸载已经安装的版本之后再运行此安装程序!" ${EndIf} FunctionEnd |
轻狂注:以上代码中的eBook Workshop要替换为你软件的名称或特定标识文字。
学习日记,兼职软件设计,软件修改,毕业设计。
本文出自 学习日记,转载时请注明出处及相应链接。
本文永久链接: https://www.softwareace.cn/?p=1020