주로 NSIS 2.51에서 NSIS 3.0으로 업그레이드되었습니다. 주로 새 버전 supports Windows 10이 사용되었습니다.NSIS 3.0으로 컴파일 할 때 LANG_ENGLISH가 정의되지 않았습니다.
제 설치 프로그램의 경우 Modern User Interface (MUI)을 사용하고 있습니다. 일부 사용자 정의 페이지를 사용합니다. documentation에 따르면, 내가 예를 들어, 내 사용자 지정 페이지 기능의 페이지 헤더의 텍스트를 설정합니다 MUI_HEADER_TEXT
매크로를 사용하고 있습니다 :
[...]
Page custom InstallType
LangString PAGE_INSTALL_TYPE_TITLE ${LANG_ENGLISH} "Installation Type"
LangString PAGE_INSTALL_TYPE_SUBTITLE ${LANG_ENGLISH} "Choose installation type."
Function InstallType
!insertmacro MUI_HEADER_TEXT $(PAGE_INSTALL_TYPE_TITLE) $(PAGE_INSTALL_TYPE_SUBTITLE)
[...]
은 또한 다음 줄을 추가 :
!insertmacro MUI_LANGUAGE "English"
Windows 7에서 NSIS 2.51 (이하)을 사용할 때이 경고는 컴파일되지 않고 컴파일됩니다. 그러나 NSIS 3.0로 컴파일 할 때, 나는 LangString
라인의 각각에 대해 다음과 같은 경고를 얻을 :
"$ {LANG_ENGLISH}"언어 ID 1033을 사용하여 유효한 언어 ID하지 않습니다! [...]
NSIS 3.0을 사용할 때 LANG_ENGLISH
은 더 이상 정의되지 않은 것처럼 보입니다.
!define LANG_ENGLISH 1033
하지만 NSIS 3.0에 대한 올바른 방법으로이 문제를 해결하기 위해 무엇을해야 하죠 : 내 설치 스크립트에 다음 행을 추가하여 경고를 제거받을 수 있나요? 4 페이지 (2 사용자 정의 페이지)와
, 최소한의 완전하고 검증 예 : 내가 아는
!include "MUI2.nsh"
; Page 1.
!insertmacro MUI_PAGE_WELCOME
; Page 2.
Page custom InstallType
LangString PAGE_INSTALL_TYPE_TITLE ${LANG_ENGLISH} "Installation Type"
LangString PAGE_INSTALL_TYPE_SUBTITLE ${LANG_ENGLISH} "Choose installation type."
Function InstallType
!insertmacro MUI_HEADER_TEXT $(PAGE_INSTALL_TYPE_TITLE) $(PAGE_INSTALL_TYPE_SUBTITLE)
nsDialogs::Create /NOUNLOAD 1018
Pop $0
${If} $0 == error
Abort
${EndIf}
${NSD_CreateLabel} 0 4u 100% 12u "Custom page one"
Pop $0
nsDialogs::Show
FunctionEnd
; Page 3.
Page custom InstallVersion
LangString PAGE_VERSION_TITLE ${LANG_ENGLISH} "Version"
LangString PAGE_VERSION_SUBTITLE ${LANG_ENGLISH} "Choose version."
Function InstallVersion
!insertmacro MUI_HEADER_TEXT $(PAGE_VERSION_TITLE) $(PAGE_VERSION_SUBTITLE)
nsDialogs::Create /NOUNLOAD 1018
Pop $0
${If} $0 == error
Abort
${EndIf}
${NSD_CreateLabel} 0 4u 100% 12u "Custom page two"
Pop $0
nsDialogs::Show
FunctionEnd
; Page 4.
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"
는 스크립트의 끝에서 MUI_LANGUAGE
라인을 가지는 것은 이상한 보인다. 그러나, 나는, 스크립트에 일찍 줄을 추가 할 수 없습니다 나는 다음과 같은 경고 얻을 수 있기 때문에 :
MUI_PAGE_가 * 뒤에 삽입을 MUI_LANGUAGE [...]
나는 MUI_LANGUAGE
줄을 추가하는 경우
: 심지어[...]
!insertmacro MUI_PAGE_WELCOME
전에, 나는 또한 다음과 같은 경고를 얻을 수 0
감사합니다, Anders. 나는 MUI'insertmacro' 라인,'LangString' 라인, 그리고 페이지 기능을 섞어 놓았다. 나는 당신이 말한대로 모든 것을 재정비하고 경고가 사라졌습니다. 그리고 스크립트는 여전히 작동하고 있습니다;) – honk
순서는 정말 엄격하지 않습니다. 함수는 MUI.Hsh를 따라와 MUI_HEADER_TEXT가 존재하고 LangString은 MUI_LANGUAGE 뒤에 $ {LANG_XYZ}을 사용합니다 ... – Anders
이 나타납니다. 내 주요 문제는 세 개의 사용자 정의 페이지가 있고 페이지에 속한 모든 명령을 그룹화했다는 것입니다. – honk