electron-builder打包指定資源到安裝目錄

問題:

項目中有個需求,就是用戶打開文件對話框,可以直接打開項目中的文件,所以就要把文件放在項目中,并且打包后和exe同級目錄,這樣用戶就可以直接訪問了
于是涉及到兩個問題:
-1.如何把文件打包到Electron應用的安裝目錄中
-2.Electron應用運行時,如何訪問到該文件模板資源

由于項目使用的是electron-builder打包器來打包的,這里主要針對electron-builder打包配置來講解。

1.下面是常用的electron-builder打包配置
package.json文件

{
  "name": "demo",
  "version": "0.0.1",
  "build": {  // electron-builder配置
    "productName":"xxxx",//項目名 這也是生成的exe文件的前綴名
    "appId": "xxxxx",//包名  
    "copyright":"xxxx",//版權  信息
    "compression": "store", // "store" | "normal"| "maximum" 打包壓縮情況(store 相對較快),store 39749kb, maximum 39186kb
    "directories": {
        "output": "build" // 輸出文件夾
    }, 
    "asar": false, // asar打包
    "extraResources":  { // 拷貝dll等靜態(tài)文件到指定位置
        "from": "./extraResources/",
        "to": "extraResources"
    },
    "win": {  
       "icon": "build/icons/icon.ico",//圖標路徑
        "target": [
          {
            "target": "nsis",
            "arch": [
              "ia32"
            ]
          }
        ]
    },
    "nsis": {
        "oneClick": false, // 一鍵安裝
        "guid": "xxxx", //注冊表名字,不推薦修改
        "perMachine": true, // 是否開啟安裝時權限限制(此電腦或當前用戶)
        "allowElevation": true, // 允許請求提升。 如果為false,則用戶必須使用提升的權限重新啟動安裝程序。
        "allowToChangeInstallationDirectory": true, // 允許修改安裝目錄
        "installerIcon": "./build/icons/aaa.ico", // 安裝圖標
        "uninstallerIcon": "./build/icons/bbb.ico", //卸載圖標
        "installerHeaderIcon": "./build/icons/aaa.ico", // 安裝時頭部圖標
        "createDesktopShortcut": true, // 創(chuàng)建桌面圖標
        "createStartMenuShortcut": true, // 創(chuàng)建開始菜單圖標
        "shortcutName": "xxxx" // 圖標名稱
    }
  }
}

回到開始的問題:

1.如何把文件打包到Electron應用的安裝目錄中
答:在package.json文件中 extraResources配置項做了說明“拷貝dll等靜態(tài)文件到指定位置”,
from和to表示從哪移到哪兒,'./'指向存放package.json的同級目錄,如圖所示:


image.png

在項目根目錄下新建extraResources文件夾用于存放模板資源文件,即配置中from的來源,
打包后,則在app的兄弟目錄下生成extraResources文件夾,即配置中to的定義的名稱,并存入來自from的模板文件,如下圖:


image.png

2.Electron應用運行時,如何訪問到該文件模板資源
答:使用 process.cwd() 即可獲取到,當前程序的運行路徑如 C:\Users\administrator\AppData\Local\Programs\應用名,文件路徑為
import path from 'path'
if (process.env.NODE_ENV === 'development') {
          templateFilePath = path.join(process.cwd(), '/extraResources')
}
let templateFilePath = path.join(process.cwd(), '/resources/extraResources')
 console.log(templateFilePath)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容