我试着用电子构建器制作NSIS安装程序。我需要根据用户根据选定的语言显示不同的许可证文件。
package.json
"devDependencies": {
"electron": "22.0.1",
"electron-builder": "^23.6.0"
},
"build": {
"directories": {
"output": "out"
},
"win": {
"target": "nsis",
"icon": "images/logo.ico"
},
"nsis": {
"oneClick": false,
"deleteAppDataOnUninstall": true,
"uninstallerIcon": "images/logo.ico",
"installerIcon": "images/logo.ico",
"displayLanguageSelector": true,
"installerLanguages": ["en_US", "bg_BG"],
"multiLanguageInstaller": true,
"perMachine": true,
"include": "build/preInstall.nsh"
}
}
}
Preinstall.nsh
!include MUI2.nsh
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE $(translatedlicensefile)
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_LANGUAGE English
LicenseLangString translatedlicensefile ${LANG_ENGLISH} "build/license/license_en.txt"
!insertmacro MUI_LANGUAGE Bulgarian
LicenseLangString translatedlicensefile ${LANG_BULGARIAN} "build/license/license_bg.txt"
发生此错误:
Error output:
LicenseLangString: open failed "build/license/license_en.txt"
Usage: LicenseLangString name lang_id|0 license_path
!include: error in script: "/Users/..../preInstall.nsh" on line 32
Error in script "<stdin>" on line 51 -- aborting creation process
线32是
LicenseLangString translatedlicensefile ${LANG_ENGLISH} "build/license/license_en.txt"
我尝试了许多示例,包括官方的示例,并想使用电子构建器弄乱了NSIS脚本的流程,但此时我无法包括任何修改。
提前感谢
i我找到了将许可证文件直接加载到NSIS代码中的解决方法。这不是一个好习惯,而是仍在寻找更好的解决方案。
const licenseFiles = await license_1.getLicenseFiles(packager);
// --> workaround
let license_bg = {file: packager.projectDir + "/pages/license_bg.txt", lang:"bg", langWithRegion:"bg_BG", langName:"Bulgarian"};
let license_en = {file: packager.projectDir + "/pages/license_en.txt", lang:"en", langWithRegion:"en_US", langName:"English"};
licenseFiles.push(license_el);
licenseFiles.push(license_en);
// <-- workaround
// if (licenseFiles.length === 0) {
// return;
// }
那是对我有用的。I放置了
package.json
"build": {
. . .
"extraFiles": [
"license_en.rtf",
"license_ru.rtf"
],
"nsis": {
. . .
"displayLanguageSelector": true,
"installerLanguages": ["en_US", "ru_RU"],
"multiLanguageInstaller": true
}
}
Electron-Builder的源代码,您可以使用.rtf,.txt和.html来使自动化起作用。 P.S:电子构建器VER。 25.1.8