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_LANGUAGE後に挿入
MUI_PAGE_ * [...]
私はMUI_LANGUAGE
ラインを置く場合:その後、私は次の警告を得るしかし、私は、スクリプトに早くその行を置くことができません
:でも[...]
!insertmacro MUI_PAGE_WELCOME
前に、私はまた、次の警告を取得します0
ありがとう、アンダース。私はMUIの 'insertmacro'行、' LangString'行、ページ関数を混在させました。私はあなたが言ったようにすべてを並べ替え、今警告がなくなった。スクリプトはまだ動作しています;) – honk
注文は本当に厳格ではありません。関数はMUI.Hshの後に来なければなりません。MUI_HEADER_TEXTが存在し、$ {LANG_XYZ}を使用している場合はMUI_LANGUAGEの後にLangString ... – Anders
が表示されます。私の主な問題は、3つのカスタムページがあり、ページに属するすべてのコマンドをグループ化していたことでした。 – honk