【问题标题】:Electron modify file store in .asarElectron 修改 .asar 中的文件存储
【发布时间】:2018-11-20 21:20:14
【问题描述】:

我想从 Electron index.html 文件中修改我的应用程序的 .asar 中存在的配置文件。就我而言,如有必要,我需要更改我的应用程序数据库配置才能正常工作。

我知道 .asar 是只读的,我想知道是否有办法从电子修改这个配置文件而不改变它在我的应用程序中的位置?

我看到了 extraResources 选项,但我不明白它是如何工作的。

配置文件保留在 myapp/config 文件夹中也很重要。

感谢您的帮助:)

【问题讨论】:

  • 我也有类似的问题。我想要一个文件是可编辑的。您能找到解决问题的方法吗?

标签: javascript electron asar


【解决方案1】:

您使用什么构建工具?如果您使用的是电子生成器,您可以在配置文件hereextraFileshere中查看asarUnpack

【讨论】:

  • 如需提问,请在问题后面留言。
  • 是的,我正在使用电子生成器,我认为 asarUnpack 是个好主意,但显然在我的情况下,我只需要访问我的所有应用程序文件夹。所以我尝试将 asar 设置为 false 但 app 文件夹仍处于只读状态,我无法修改其中的任何内容。有没有办法在构建中以开发模式获取我的应用程序文件夹?
  • 您是否尝试将配置文件放入MyApp 而不是MyApp/resources/app 文件夹?你可以把这些线路放到你的package.json:"extraFiles": [{ "from": PATH_TO_CONFIG, "to": "." }]去试试。
【解决方案2】:

asar 处于只读状态

正如你提到的 asar 打算成为只读包。对于运行时更改配置,您应该将其放在 asar 之外并相应地更改值。

【讨论】:

  • 遗憾的是,我无法修改应用程序的结构,因此无法从中移动配置文件。即使使用选项 asar: false 文件夹仍处于只读状态,您知道如何不受限制地访问我的应用程序文件夹吗?
【解决方案3】:

我能够通过首先以编程方式更改文件权限然后对其进行编辑来编辑只读文件。

fs.chmod(filename, 0666, (error) => {
        console.log('Changed file permissions');
    });

   ...
    code to modify file
   ...

【讨论】:

    【解决方案4】:

    要管理设置,您应该使用专门为此设计的节点包,例如 electron-settingspreferences

    作为替代方案,您可以手动读取您放置在平台本机配置目录中的写入配置文件。


    不应该将可变应用程序设置存储在 asar 文件中。如果出于任何其他原因需要替换 asar 存档中的文件,请使用 asar 程序将整个存档解压缩到临时目录,替换所需的文件,然后创建一个新的 asar 文件,替换原始 asar 文件。

    【讨论】:

      【解决方案5】:
      • 解压 .asar 文件 -> asar extract electron.asar app

      • 根据需要修改

      • 打包 .asar 文件 -> asar pack . electron.asar

      【讨论】:

        猜你喜欢
        • 2013-06-08
        • 2021-08-01
        • 2019-05-11
        • 1970-01-01
        • 2017-12-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多