NSIS检查安装位置是否为空

时间:2018-06-13 06:34:07

标签: nsis

如何添加有关显示安装位置的覆盖对话框的功能。

如果用户已安装该软件,并且他正在尝试在同一位置重新安装该软件,那么我想显示是否需要覆盖的信息?

我使用了以下功能,但在打开位置页面之前正在调用。

Function .onVerifyInstDirIfFileExists "$INSTDIR\temp.xls" PathGood
PathGood:
    MessageBox MB_OKCANCEL "Do you want to overwrite the location with new installer ?" IDOK lbl_ok IDCANCEL lbl_cancel
    lbl_ok:

    lbl_cancel:
    Quit
FunctionEnd 

1 个答案:

答案 0 :(得分:1)

.onVerifyInstDir用于禁用“下一步”按钮,它不应显示UI:

  

每次用户更改安装目录时都会调用此代码,因此不应该对MessageBox等做任何疯狂的事情。如果此函数调用Abort,则$ INSTDIR中的安装路径将被视为无效。

如果要显示消息,则必须使用页面保留回调:

!include LogicLib.nsh

Function MyDirLeave
${If} ${FileExists} "$INSTDIR\temp.xls"
    MessageBox MB_OKCANCEL "Do you want to overwrite the location with new installer?" IDOK +2
    Abort ; Stay on the current page
${EndIf}
FunctionEnd

Page Directory "" "" MyDirLeave
Page InstFiles