请把轻狂志网址 www.flighty.cn 加入收藏夹,其他俱为假冒,谨防被骗!赞助请点 这里!找东东请用右边的搜索 ===>
05 2013-09

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

作者:少轻狂 | 发布:2010-11-21 | 更新:2013-09-05 | 分类:部署 | Disposition | 热度:

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

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

!define MUI_PAGE_CUSTOMFUNCTION_show Pageshow


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


InstallDirRegKey HKCU “Software\eBook Workshop” “”

第3步:在主区段中把安装路径写入注册表。

WriteRegStr HKCU “Software\eBook Workshop” “” $INSTDIR

第4步:在卸载区段删除注册表中安装路径的键值。

DeleteRegKey /ifempty HKCU “Software\eBook Workshop”

第5步:判断如果安装过,禁止修改安装路径。

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要替换为你软件的名称或特定标识文字。