2010-05-05 4 views
2

나는 여기에 동적으로 NSIS 스크립트를 사용하여 customPage.ini가NSIS : 사용자 정의 페이지의 콤보 상자 값에 액세스 하시겠습니까?

; Ini file generated by the HM NIS Edit IO designer. 
[Settings] 
NumFields=2 

[Field 1] 
Type=Label 
Text=Select Version: 
Left=4 
Right=53 
Top=16 
Bottom=26 

[Field 2] 
Type=Combobox 
Text=Combobox 
ListItems= 
Left=53 
Right=138 
Top=14 
Bottom=107 

내가 콤보 상자의 값을 설정하려면 파일 코드 여기

. 
. 
. 

    ; Welcome page 
    !insertmacro MUI_PAGE_WELCOME 
    Page custom customPage "" ": custom page" 
. 
. 
. 
Function customPage 
    GetTempFileName $R0 
    File /oname=$R0 customPage.ini 
    InstallOptions::dialog $R0 
    Pop $R1 
    StrCmp $R1 "cancel" done 
    StrCmp $R1 "back" done 
    StrCmp $R1 "success" done 
    error: MessageBox MB_OK|MB_ICONSTOP "InstallOptions error:$\r$\n$R1" 
    done: 
FunctionEnd 
. 
. 
. 

는, INI 파일을 사용 NSIS 설치에 사용자 정의 페이지를 추가했습니다 , 어떻게 nsis에서 콤보 박스에 액세스 할 수 있습니까?

답변

2

나는 편리한 코드를 가지고 있지만, 기본적으로 당신이 당신이 그것을 추출 직후, 그 INI 파일에 INI 값을 기록하지만,하지 않습니다 당신은 실행하기 전에 InstallOptions:dialog

!insertmacro INSTALLOPTIONS_WRITE "customPage.ini" "Field 2" "State" "Blah|Value2|Foo|Bar" 

참조 : http://nsis.sourceforge.net/Docs/InstallOptions/Readme.html

코드에서 링크 된 웹 페이지에서 볼 수있는 것처럼 InstallOptions 매크로를 사용하지 않습니다. 대신 당신은 모든 것을 수동으로하고 있습니다. 일반적으로 InstallOptions 매크로는 사용자 정의 페이지 ini 파일을 plugins 디렉토리에 추출합니다. 즉, 일반적인 패턴을 따르지 않아 코드 스 니펫이 작동하지 않을 수 있습니다. 따라서 위의 방법으로 문제가 해결되지 않으면 대신 WriteINI를 사용해보십시오. 그러나 개념은 동일합니다. 추출한 직후에 ini 파일에 값을 쓰되 표시하기 전에 작성하십시오.

+1

아론 (Aaron)과 마찬가지로 GetTempFileName을 사용하면 자동으로 삭제되므로 $ pluginsdir을 넣는 것이 가장 좋습니다. – Anders

+0

이것은 훌륭합니다! 하나의 의견이지만, 당신이 코드 조각에서 "State"를 "ListItems"로 바꿀 ListItem의 옵션을 변경하려면 –

관련 문제