我做的个安装程序,因执行文件在安装目录\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下 执行失败!
为此我没有让用户选择安装目录,也就是 程序会安装到默认的目录。