我有一个电子应用程序。我尝试让应用程序打开一个.exe文件。我在名为lib
的根文件夹中创建了一个目录,并将.exe文件放在那里。在开发中,我使用__dirname + '/lib/file.exe
打开文件没有问题,但是当我打包应用程序时(使用yarn dist
),它没有打开exe文件,也没有lib
文件夹在dist
文件夹上。
我尝试使用console.log(__dirname)
来控制默认位置,然后输出\dist\win-unpacked\resources\app.asa
(这是一个文件)。
如何添加应用程序打包时可以访问的外部文件?
答案 0 :(得分:6)
将以下代码添加到package.json:
"build": {
"extraResources": [
{
"from": "./src/extraResources/",
"to": "extraResources",
"filter": [
"**/*"
]
}
]
}
然后,您可以使用来访问文件
const configFile = path.join(path.dirname(__dirname), 'extraResources','config.json');
我使用以下文件夹结构,该结构允许我以任何方式运行该应用程序。
从项目文件夹:
node_modules\.bin\electron.cmd src\main\index.js
来自未打包的来源
dist\win-unpacked\app.exe check-for-update
从已安装的文件夹
C:\Users\user\AppData\Local\Programs\app\app.exe
+-- dist
| +-- win-unpacked
| +-- resources
| +-- extraResources
| config.json
+-- node_modules
+-- src
| +-- extraResources
| config.json
| someFile.js
| +-- main
| index.js
| +-- render
| index.js
答案 1 :(得分:2)
通过使用extraResources来管理解决它。应在您的package.json
文件中声明。
例如:
将以下代码添加到package.json
文件中:
"build": {
"extraResources": ["./extraResources/**"]
}
__dirname + '/../extraResources/'
访问此文件夹中的文件。答案 2 :(得分:1)
我找到了一个新的解决方案, 在Windows上使用electronic-packager时,不要在过程结束时将文件添加到资源文件夹中。
因此我将此命令添加到了db1_name
ConnectionManager::get('default')->config()['database'];
现在文件被添加到资源添加器中
package.json
答案 3 :(得分:-1)
与@ user2298995的回答相同,但在Windows x64中使用__dirname +'/../extraResources/filename'时出错。
但是path.join(process.resourcesPath,'extraResources',fileName)工作正常。