You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在electron-builder的NSIS安装包中嵌入额外的文本文件

解决方法

步骤1:配置electron-builder关联自定义NSIS脚本

在项目的package.json的build配置项下添加NSIS相关配置,指定你的自定义脚本路径:

{
  "build": {
    // 其他electron-builder原有配置保持不变
    "nsis": {
      "oneClick": false,
      "perMachine": false,
      "allowElevation": true,
      "script": "./custom-installer.nsi" // 替换为你自己的NSIS脚本文件路径
    }
  }
}

步骤2:修改NSIS脚本逻辑

你当前代码的问题是直接读取编译时本地的项目路径,该路径在用户设备上不存在。需要先把文本文件打包进安装包,安装时释放到临时目录再读取,修改后的代码如下:

nsDialogs::CreateControl "RichEdit20A" ${__NSD_Text_STYLE}|${ES_MULTILINE}|${WS_VSCROLL}|${WS_HSCROLL}|${ES_READONLY} ${__NSD_Text_EXSTYLE} 0 0 100% 112u ""
Pop $0

; 新增:将本地文本文件打包进安装包,安装时释放到NSIS专用临时目录
File /oname=$PLUGINSDIR/textFile.txt "${PROJECT_DIR}\textFile.txt"

; 修改:读取临时目录下的文本文件
FileOpen $4 "$PLUGINSDIR/textFile.txt" r
loop:
    FileRead $4 $1
    SendMessage $0 ${EM_REPLACESEL} 0 "STR:$1"
    IfErrors +1 loop
FileClose $4

说明

  • File是NSIS内置指令,作用是将编译时本地路径的文件打包进安装包,/oname参数指定安装时释放的路径
  • $PLUGINSDIR是NSIS安装过程中的专用临时目录,安装完成后会自动清理,不需要手动删除
  • 如果你项目里的文本文件不在${PROJECT_DIR}根目录,替换为实际的编译时绝对路径即可,也可以使用electron-builder内置的${BUILD_RESOURCES_DIR}变量指向项目的build资源目录
  • 如果你的文本文件是UTF-8编码,需要在FileOpen指令后添加UTF8参数,避免读取时出现乱码:FileOpen $4 "$PLUGINSDIR/textFile.txt" r UTF8

内容的提问来源于stack exchange,提问作者Zachary C.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 17:54:02