NSIS 限制重复安装

来源:互联网 发布:java下载网页源代码 编辑:程序博客网 时间:2024/05/23 16:54

我做的个安装程序,因执行文件在安装目录\bin下,导致安装后,再次安装$INSTDIR目录每次多加一个\bin  ( $INSTDIR为安装程序里所指定的目录),所以我限制了程序在安装前必须卸载。

第一步:

Section -Post
  WriteRegDword HKLM "${PRODUCT_DIR_REGKEY}" "Installed" 1
SectionEnd

第二步:

Function .onInit
         ;禁止多次安装实例 start
         ReadRegDWORD $0 HKLM '${PRODUCT_DIR_REGKEY}' "Installed"
         IntCmp $0 +1 +4
         MessageBox MB_OK|MB_USERICON '$(^Name) 已安装在计算机中。如需重新安装,请卸载已有的安装。'
         Quit
         nop
         ;禁止多次安装实例 end
FunctionEnd

 

 

xp: 添加安装路径到path
ReadRegStr $0 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path"
WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path" "$0; $INSTDIR"
SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment"

win7下 执行失败!

 

为此我没有让用户选择安装目录,也就是 程序会安装到默认的目录。