0

私はインストーラーを持っています、それはNSISコマンドライン機能を使用して(TFS上で)自動的にビルドします

"..\..\NSIS\makensis.exe"  /DBUILD_NUMBER=28311 /DPRODUCT_LANGUAGE=English "MTService_setup.nsi"

インストーラーは、PRODUCT_LANGUAGEパラメーターで指定された言語を使用する必要があります。私はそれを次のように行いました

!insertmacro MUI_LANGUAGE "${PRODUCT_LANGUAGE}"

このようにインストーラーを構築すると、インターフェースの共通言語が正しくなります。ただし、LangStringにはデフォルトのシステム言語を使用します。したがって、デフォルトのシステム言語が英語でない場合は、英語インストーラーで別の言語のLangStringが表示されます。

コマンドラインパラメータを回避するためにスクリプトを変更しようとしました(テスト目的で)

!insertmacro MUI_LANGUAGE "English"

それも機能しません。

スクリプトをに変更しようとしました

!insertmacro MUI_LANGUAGE"英語"!insertmacroMUI_LANGUAGE"ロシア語"

関数.onInit

!insertmacro MUI_LANGDLL_DISPLAY

FunctionEnd

動作しますが、もちろん、言語選択ダイアログが表示されます。ダイアログなしで特定の${PRODUCT_LANGUAGE}を使用したい。

では、どうすれば修正できますか?

例

4

1 に答える 1

1

あなたはあなたの例であなたのLangStringコードを私たちに示さなかったので、問題が何であるかを言うのは難しいです!

これは、 MUIreadmeのコードに基づく実用的な例です。

Outfile "test.exe"
Requestexecutionlevel user

!include MUI2.nsh
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE Swedish ;First language is the default if a better match is not found
!insertmacro MUI_LANGUAGE Danish

Function .onInit
StrCpy $language ${LANG_DANISH} ;Always force Danish?
FunctionEnd

Section "Section Name 1" Section1
SectionEnd
Section "Section Name 2" Section2
SectionEnd

LangString DESC_Section1 ${LANG_SWEDISH} "Bork, bork, bork!"
LangString DESC_Section2 ${LANG_SWEDISH} "Aweenda shmure da froog's legs."
LangString DESC_Section1 ${LANG_DANISH} "Danish text here for section 1"
LangString DESC_Section2 ${LANG_DANISH} "...and section 2"
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
    !insertmacro MUI_DESCRIPTION_TEXT ${Section1} $(DESC_Section1)
    !insertmacro MUI_DESCRIPTION_TEXT ${Section2} $(DESC_Section2)
!insertmacro MUI_FUNCTION_DESCRIPTION_END
于 2012-08-24T23:09:10.887 に答える