Электронный конструктор и файлы ресурсов - PullRequest
1 голос
/ 17 июня 2020

У меня возникла проблема с распространением электронного приложения на macOS.

У меня есть несколько папок, которые находятся в root каталоге моего проекта, рядом с моим index.js, которые мне нужно быть включенным в мое упакованное приложение.

Попробовав жестко кодировать каждый файл внутри package.json, что не помогло, я получил следующий блок

    "extraResources": [
      {
        "from": "files/",
        "to": "files/",
        "filter": [
          "**/*"
        ]
      },
      {
        "from": "assets/",
        "to": "assets/",
        "filter": [
          "**/*"
        ]
      },
      {
        "from": "accounts/",
        "to": "accounts/",
        "filter": [
          "**/*"
        ]
      }
    ]

Если Запускаю .app оказывается, что файлов нет. Открывая Contents / Resources, я вижу, что они там есть, поэтому, поигрывая, я обнаружил, что приложение смотрит внутрь контейнера app.asar, где, очевидно, файлов нет.

Я нашел небольшой взлом, добавив пара '..' перед всеми моими путями, поэтому он выходит за пределы контейнера app.asar, но я действительно думаю, что это немного идиотский c, чтобы быть решением моей проблемы.

Плюс, Я планирую создать это для нескольких платформ, и у меня есть ощущение, что если я go воспользуюсь этим хакерским способом исправить это, мне придется создать хак для каждой платформы, чего я бы предпочел не делать ...

1 Ответ

2 голосов
/ 18 июня 2020

, если у вас есть файлы, которые вы используете в html (в моем примере assets / css et c.) Или требуете в любом файле и имеете такую ​​структуру папок, папки будут автоматически в asar.

Узел: asar доступен только для чтения, вы не можете добавлять, удалять или редактировать файлы после создания этого файла.
enter image description here

использовать файлы css в папке assets / css просто: enter image description here используйте относительный путь из вашего файла html, и он будет работать на всех платформах.

если у вас есть файлы, которые не связаны с вашим проектом или не используются в вашем проекте, но должны быть доступны в упакованном приложении:

вы должны использовать «extraFiles» в своем пакете. json extraFiles скопирует файлы в каталог conent приложения на Ma c OS, на Windows и Linux он скопирует их в каталог приложения root. Если вы используете extraResources, он скопирует файлы в Contents / Resources на Ma c, а на Windows он скопирует файлы в папку ресурсов.

"extraFiles": [
  "files",
  "assets",
  "accounts"
]

Примечание: пустые папки не будут скопированы

в вашем приложении используйте что-то вроде этот модуль , чтобы получить root путь вашего приложения, и используйте ваши файлы с этим путем

альтернативу: используйте process.execPath и замените имя исполняемого файла, чтобы получить правильный путь

на основе вашего комментария:
если вы должны загрузить эти файлы (css / js) в свое приложение html, вы можете загружать динамически при загрузке событие с решением, которое я предоставил вам выше.

...