Electron-Builder打包时报错could not find: “C:\Users\XX\AppData\Local\Temp\t-bDWVX6\0-messages.nsh“
2023-11-15

could not find: "C:\Users\奉仙\AppData\Local\Temp\t-Ujpabx\0-messages.nsh"

从错误日志上来看,产生此错误的原因是,nsis插件找不到了。但是我打开对应目录,很明显,nsis是存在的。然后我发现一个关键点,那就是路径中出现了乱码

Processing config: C:\Users\��\AppData\Local\electron-builder\Cache\nsis\nsis-3.0.4.1\nsisconf.nsh
1
显然,是因为我的windows账户名是中文,但是在打包过程中,有某些插件不能正确识别中文导致的。
问题的根源已经找到了。怎么办呢。别人出现这个问题,都是项目名称或者路径里出现了中文,改掉就是了,我这个是AppData文件夹路径出现中文,怎么改?

处理办法我想到了以下几个

改windows用户名,改成英文,此办法一劳永逸。一次修改终身受益。后来发现,工程量有点大,并不是简单的改名字就能解决的,还要去修改对应的很多注册表的键值,风险有点高。我没敢尝试。
修改环境变量的,使AppData文件夹路径中不存在中文即可。后来发现,工程量也不小,而且修改环境变量的风险也不小,可能会导致其他的一下项目出现问题。也没敢尝试。
剩下的办法,那就只能是让插件支持中文了。问题是怎么改才能让它支持中文。
经过一系列的baidu,google,bing。终于,在一篇博文中发现了解决方案。

打开 node_module/app-builder-lib/out/targets/nsis/NsisTarget.js文件,在 executeMakensis 方法中加入我们所需的参数。

//node_module/app-builder-lib/out/targets/nsis/NsisTarget.js
async executeMakensis(defines, commands, script) {
const args = this.options.warningsAsErrors === false ? [] : ["-WX"];
//此处新增
args.push("-INPUTCHARSET", "UTF8");
//结束
for (const name of Object.keys(defines)) {
const value = defines[name];

  if (value == null) {
    args.push(`-D${name}`);
  } else {
    args.push(`-D${name}=${value}`);
  }
}

经测试,问题完美解决

附原博文地址:https://www.azimiao.com/6250.html