Debian 和 NSIS 更新后的 NSIS 错误 "LicenseLangString: wchar_t conversion failed!"

NSIS Error "LicenseLangString: wchar_t conversion failed!" after Debian and NSIS Update

我在程序“makensis”的帮助下在 Linux 下创建了 Windows 个安装程序。最近我将 Linux 机器从 Debian 9 更新到 Debian 11,这带来了 NSIS 从版本 2.51 升级到 3.04..

从那时起,我创建安装程序的脚本就不再编译了。该脚本是从构建环境生成的,我知道其他人在 Debian 11 上有它 运行,所以这似乎是由于我的环境而不是脚本中的语法错误。

如果我测试从 Debian 9 安装 NSIS 2.51,脚本运行没有问题。

该脚本应该创建英语和德语的安装程序,如果我注释掉德语条目,它也可以。

我检查了好几遍语法,现在一头雾水

错误输出(缩短):

makensis -V4 ./work/XXX/XXX.nsi

MakeNSIS v3.06.1-1 - Copyright 1999-2020 Contributors
See the file COPYING for license details.
Credits can be found in the Users Manual.

Processing config: /etc/nsisconf.nsh

....

!insertmacro: MUI_LANGUAGE
!insertmacro: end of MUI_LANGUAGE
LangString: "INWpTitle" 1033 "Installation of XXX"
LangString: "INWpTitle" 1031 "Installation der XXX"
LangString: "INWpText" 1033 "This Wizard will be guiding you through the installation of XXX.

Before installation BaseCamp must be closed for allowing installation of the map data.

Choose Next for starting the installation."
LangString: "INWpText" 1031 "Dieser Assistent wird Sie durch die Installation der XXX begleiten.

Vor der Installation muss das Programm BaseCamp geschlossen werden damit Kartendateien ersetzt werden koennen.

Klicken Sie auf Weiter um mit der Installation zu beginnen."
LicenseLangString: "licenseFile" 1033 "XXX.nsis.license.en"
LicenseLangString: wchar_t conversion failed!
Error in script "./work/XXX/XXX.nsi" on line 114 -- aborting creation process

XXX.nsi

的内容
105 !insertmacro MUI_LANGUAGE "English"
106 !insertmacro MUI_LANGUAGE "German"
...

113 LicenseLangString licenseFile ${LANG_ENGLISH} "XXX.nsis.license.en"
114 LicenseLangString licenseFile ${LANG_GERMAN} "XXX.nsis.license.de" 

在 non-Windows 系统上,iconv 用于转换 NSIS 3 中的许可证文件,但该文件中有一些它不喜欢的内容。

你可以

  • A) 将许可证文件转换为 RTF 格式。

  • B) 将许可证文件转换为 UTF-8 或 UTF-16LE,并确保文件以 BOM/签名开头。