2010-04-21 1 views
1

작성한 nsis 설정에 문제가 있습니다. 제품이 이미 설치되어 있는지 확인한 다음 이미 설치된 제품의 경로를 확인해야합니다. 이것은 이전에 설치된 폴더에 다른 구성 요소를 설치하는 "Feature-Setup"을 구축하고자하기 때문입니다. 누구든지이 설치 프로그램을 작성하는 방법을 알고 있습니까? 기능 설치 프로그램이 설치를 시작하고 설치된 제품의 경로를 확인하면 훌륭합니다. 검사가 완료되면 경로는 "설치 위치 선택"아래의 "대상 폴더"에 있어야합니다 (읽기 전용). 어떤 도움NSIS 이미 설치된 제품

감사
Buba

답변

4
자신에 <HKLM/HKCU>\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 또는 소프트웨어 \ yourcompany와 \ Yourapp에 항목을 추가하지 않는 한, 그래서 NSIS는, 자신의 아무 곳이나 아무것도 기록하지 않습니다

, 당신은 꽤 많이 검색해야 FindFirst, FindNext가있는 컴퓨터. (추악한)

당신이 레지스트리 항목이있는 경우 InstallDirRegKey 또는 정상적인 레지스트리 기능을 사용할 수 있습니다

!define MyRegKey "Software\MyCompany\MyApp" 

InstallDirRegKey HKLM "${MyRegKey}" InstallDir 

var LockDirPage 

!include LogicLib.nsh 
Function .onInit 
${If} ${FileExists} "$instdir\MyApp.exe" 
    StrCpy $LockDirPage 1 
${EndIf} 
FunctionEnd 

Function dirshow 
${If} $LockDirPage = 1 
    FindWindow $0 "#32770" "" $HWNDPARENT 
    GetDlgItem $1 $0 0x3FB 
    EnableWindow $1 0 
    GetDlgItem $1 $0 0x3E9 
    EnableWindow $1 0 
${EndIf} 
FunctionEnd 

page directory "" dirshow 
page instfiles 

Section 
WriteRegStr HKLM "${MyRegKey}" InstallDir $instdir ;save location 
SectionEnd