Electron builder和资产文件
我在macOS上发布了一个电子应用程序 我在项目的根目录中有一些文件夹,在我的Electron builder和资产文件,electron,fs,electron-builder,Electron,Fs,Electron Builder,我在macOS上发布了一个电子应用程序 我在项目的根目录中有一些文件夹,在我的index.js旁边,我需要将它们包含在打包的应用程序中 在尝试对package.json中的每个文件进行硬编码后,没有任何帮助,我最终得到了以下代码块 "extraResources": [ { "from": "files/", "to": "files/", "filter": [ "**/*" ]
index.js
旁边,我需要将它们包含在打包的应用程序中
在尝试对package.json
中的每个文件进行硬编码后,没有任何帮助,我最终得到了以下代码块
"extraResources": [
{
"from": "files/",
"to": "files/",
"filter": [
"**/*"
]
},
{
"from": "assets/",
"to": "assets/",
"filter": [
"**/*"
]
},
{
"from": "accounts/",
"to": "accounts/",
"filter": [
"**/*"
]
}
]
如果我运行.app,文件似乎不在那里。打开内容/资源,我看到它们就在那里,因此,我四处玩弄,发现应用程序正在查看app.asar
容器中的文件,而文件显然不在其中
我发现了一个小问题,在我的所有路径前面添加了几个“…”
,因此它超出了app.asar
容器,但我真的认为这是一个有点愚蠢的解决方案
另外,我计划为多个平台构建此应用程序,我有一种感觉,如果我使用这种黑客方式修复它,我将不得不为每个平台创建一个黑客程序,我宁愿不这样做…如果您在html中使用文件(在我的示例中是assets/css等),或者在任何文件中都需要这样的文件夹结构,这些文件夹将自动地保存在asar中 节点:asar是只读软件包,创建此文件后不能添加、删除或编辑文件。
使用assets/css文件夹中的css文件很简单: 使用html文件中的相对路径,它可以在所有平台上工作 如果您有与项目无关的文件,或项目中未使用但应在打包应用程序中提供的文件: 您必须在package.json中使用“extraFiles” extraFiles会将文件复制到Mac OS上的app conent目录,在Windows和Linux上,它会将文件复制到app根目录。如果使用extraResources,它会将文件复制到Mac上的内容/资源,在Windows上,它会将文件复制到资源文件夹
"extraFiles": [
"files",
"assets",
"accounts"
]
注意:空文件夹将不会被复制
在应用程序中,使用类似于获取应用程序的根路径的内容,并使用具有此路径的文件
替代方法:使用process.execPath
并替换可执行文件名以获得正确的路径
根据您的评论:如果您必须在应用程序html中加载此文件(css/js),您可以使用我上面提供的解决方案在onload事件中动态加载。还没有尝试过,似乎很有希望。我的问题是,这将如何涵盖我使用.html文件中的.js和.css文件(在我的资产文件夹中)?因此,与外部文件和外部资源的区别在于
extrafile
将它们放在Contents
目录中,而extraResources
将它们放在Contents/Resources
目录中。我的问题仍然存在,因为它确实将src文件夹放在了.asar中,是否没有标志可以在其中放置更多文件?我看到了您的编辑,我必须说我感谢您所做的所有努力。以下是我到目前为止学到的:如果我想在asar中添加额外的文件,我将通过package.json中的“files”:[]
param添加它们,但是我遇到问题的主要原因是.asar是只读的,我会编写和取消文件链接,这意味着我必须在我的应用程序逻辑中重新构造一些东西。我会接受你的回答,因为你确实帮了我很大的忙,但是你能完整地添加只读问题以及文件、外部文件和外部资源添加相关文件的位置吗?