【发布时间】:2011-12-09 12:18:29
【问题描述】:
到目前为止,我已经弄清楚了如何通过读取注册表项并测试目录是否存在来检测我以前安装的软件。 (两者都在 NSIS 帮助文件中有详细记录)。如果以前安装了应用程序,现在我想强制用户指定不同的目录。 (不想自己强制卸载,因为以前的版本只是删除所有内容,包括保存的数据)。
据我所知,MUI2.nsh 中有预定义的模板,用于许可证、安装文件夹、进度指示器等。 如何在安装流程的这个阶段添加验证?
更新 - 尝试了 Paul 的解决方案,但它不起作用。 在脚本的顶部,我声明了
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE validateDirectory
!insertmacro MUI_PAGE_DIRECTORY
引用这个函数:
Function validateDirectory
ReadRegStr $R0 HKLM "SOFTWARE\Aadhaar Enrolment Client" "Installdir"
Pop $R0
StrCmp $R0 $OUTDIR +1 +3
MessageBox MB_ICONSTOP|MB_OK 'The directory $OUTDIR already exists.Please choose a different directory.'
Abort
FunctionEnd
此函数显示消息,但不会中止。此外,如果我在目录选择页面中单击“返回”并再次单击“前进”,那么它只是继续安装。
【问题讨论】:
-
已经有一段时间了...没有解决办法?尤其是不使用 MUI 的?
-
无..而且我早已不再使用 NSIS。
-
我只想提一下,在 NSIS 论坛的帮助下,我确实让它工作了。 forums.winamp.com/showthread.php?t=380848
-
使用 MUI,Paul 的解决方案对我来说非常有效(NSIS 2.3,Abort 在这里没有造成任何问题)