지금까지 레지스트리 키를 읽고 디렉토리가 존재하는지 테스트하여 소프트웨어의 이전 설치를 감지하는 방법을 알아 냈습니다. (둘 다 NSIS 도움말 파일에 잘 설명되어 있습니다). 이제 응용 프로그램이 이전에 설치되어있는 경우 다른 디렉토리를 지정하도록 사용자에게 강요하고 싶습니다. (이전 버전에서는 저장된 데이터를 포함한 모든 것을 제거하기 때문에 강제로 제거하지 마십시오.NSIS - 사용자가 다른 디렉토리를 선택하도록 강요하십시오.
내가 볼 수있는 한, 라이센스, 설치 폴더, 진행률 표시기 등에 대해 미리 정의 된 템플릿이 MUI2.nsh에 있습니다. 설치 프로그램 흐름의이 단계에서 유효성 검사를 어떻게 추가합니까?
업데이트 - Tried Paul의 해결책이지만 작동하지 않습니다.
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
이 기능은 메시지를 표시하지만, 중단하지 않습니다 스크립트의 상단에,이 함수를 참조하는
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE validateDirectory
!insertmacro MUI_PAGE_DIRECTORY
을 선언했습니다. 또한 디렉토리 선택 페이지에서 '뒤로'를 클릭하고 앞으로를 클릭하면 설치가 진행됩니다.
이 문제에 대한 해결책이 없습니다. 특히 MUI를 사용하지 않는 것은? – e40
없음 .. 그리고 나는 오랫동안 NSIS 사용을 중단했습니다. – Rex
NSIS 포럼의 도움을 받아 작업을 수행했다고 언급 할 것입니다. http://forums.winamp.com/showthread.php?t=380848 – e40