根据 NSIS 中应用程序的语言,安装具有相同名称的正确文件
Install the right file with the same name depending on the app's language in NSIS
安装程序检测已安装应用程序的语言,假设 $detected_language
的值为“pl”。
现在我希望根据 $detected_language
的值只安装一个 menu.cfg
文件。不允许在 File ...
中使用变量。是创建大量 Sections 并将它们命名为“Kardaw Mod(英语)”、“Kardaw Mod(德语)”等的唯一方法,并隐藏所有带有与检测到的语言不匹配的标志的不必要部分?
(menu.cfg 不能即时修改,因为它是加密的)。
var detected_language
...
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE detect_app_language; /*$detected_language → "pl"*/
!insertmacro MUI_PAGE_DIRECTORY
...
Section "Kardaw Mod"
SetOutPath "$INSTDIR\data"
File "E:\MyMods\Kardaw Mod\English\data\menu.cfg"
File "E:\MyMods\Kardaw Mod\German\data\menu.cfg"
File "E:\MyMods\Kardaw Mod\French\data\menu.cfg"
File "E:\MyMods\Kardaw Mod\Spanish\data\menu.cfg"
File "E:\MyMods\Kardaw Mod\Russian\data\menu.cfg"
File "E:\MyMods\Kardaw Mod\Polish\data\menu.cfg";/* ←this one is the correct one */
创建一个保存用户选择的语言的变量,并使用 ${If}s 仅提取所需的文件。
Var /Global MySelectedlanguage ; Fill this variable with user selected language eg. "EN" for English etc.
Section "Kardaw Mod"
SetOutPath "$INSTDIR\data"
${If} $MySelectedlanguage == "EN"
File "E:\MyMods\Kardaw Mod\English\data\menu.cfg"
${EndIf}
${If} $MySelectedlanguage == "DE"
File "E:\MyMods\Kardaw Mod\German\data\menu.cfg"
${EndIf}
; ... The same for other languages ...
SectionEnd
首先想到的是让这些条目在组中不可见。但是 -
符号仍然可见,并且分区组的标题有一个灰色的复选标记 ☑ 如果它被选中。
我的问题的解决方案是将所有部分一一放置。当我们离开页面时,一个函数将检查右边的框。它还将检查是否选择了 mod。
安装程序检测已安装应用程序的语言,假设 $detected_language
的值为“pl”。
现在我希望根据 $detected_language
的值只安装一个 menu.cfg
文件。不允许在 File ...
中使用变量。是创建大量 Sections 并将它们命名为“Kardaw Mod(英语)”、“Kardaw Mod(德语)”等的唯一方法,并隐藏所有带有与检测到的语言不匹配的标志的不必要部分?
(menu.cfg 不能即时修改,因为它是加密的)。
var detected_language
...
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE detect_app_language; /*$detected_language → "pl"*/
!insertmacro MUI_PAGE_DIRECTORY
...
Section "Kardaw Mod"
SetOutPath "$INSTDIR\data"
File "E:\MyMods\Kardaw Mod\English\data\menu.cfg"
File "E:\MyMods\Kardaw Mod\German\data\menu.cfg"
File "E:\MyMods\Kardaw Mod\French\data\menu.cfg"
File "E:\MyMods\Kardaw Mod\Spanish\data\menu.cfg"
File "E:\MyMods\Kardaw Mod\Russian\data\menu.cfg"
File "E:\MyMods\Kardaw Mod\Polish\data\menu.cfg";/* ←this one is the correct one */
创建一个保存用户选择的语言的变量,并使用 ${If}s 仅提取所需的文件。
Var /Global MySelectedlanguage ; Fill this variable with user selected language eg. "EN" for English etc.
Section "Kardaw Mod"
SetOutPath "$INSTDIR\data"
${If} $MySelectedlanguage == "EN"
File "E:\MyMods\Kardaw Mod\English\data\menu.cfg"
${EndIf}
${If} $MySelectedlanguage == "DE"
File "E:\MyMods\Kardaw Mod\German\data\menu.cfg"
${EndIf}
; ... The same for other languages ...
SectionEnd
首先想到的是让这些条目在组中不可见。但是 -
符号仍然可见,并且分区组的标题有一个灰色的复选标记 ☑ 如果它被选中。
我的问题的解决方案是将所有部分一一放置。当我们离开页面时,一个函数将检查右边的框。它还将检查是否选择了 mod。