Как заставить Electron-builder упаковать файлы без кода, чтобы установщик установил их в домашний каталог пользователя (данные приложения) - PullRequest
3 голосов
/ 05 августа 2020

Чего я хочу достичь sh:

Я хочу понять, как настроить Electron-Builder / Webpack для упаковки файлов без кода (файлы конфигурации, файлы XML, файлы метаданных, JSON файлов), так что, когда установщик устанавливает приложение, эти файлы сохраняются в домашнем каталоге пользователя на локальном компьютере. Я понимаю важность хранения этих файлов вне установленных двоичных файлов, поэтому, когда пользователь обновляет свою версию, он не теряет никаких настроек, которые могут быть установлены. Но исходная версия этих файлов должна существовать в каком-то месте для начала, например, версия шаблона этих файлов.

Я нашел несколько руководств, в которых объясняется, как включить эти файлы без кода в состав package: Electron - Как добавить внешние файлы?

Как управлять конфигурацией для приложения Webpack / Electron?

Но чего я не вижу или поймите из этих сообщений, как настроить установщик, чтобы при его запуске эти файлы копировались в домашний каталог пользователя (папка appData). В частности, если эти файлы уже установлены, чтобы избежать их перезаписи или спросить пользователя, хотят ли они их перезаписать? Как это настроить?

Также должны быть некоторые настройки конфигурации, чтобы эти файлы оставались частью репозитория Github и позволяли разработчикам использовать путь разработчика к этим файлам без кода, не нарушая при этом производственный путь к этим файлам в установленной пользователем версии. Как настроить такую ​​конфигурацию?

Это структура папок в моем проекте:

src
 - Application
    - electronVueJS-App
       - application.js
       - App.vue
       - build.js
       - registerServiceWorker.js
       - ...Rest of the files/folders for the application....
       - Resources
          - Configuration
             - Colors.csv
             - Configuration.xml
 - Framework
    - CommandsBlob
       - commands.xml
    - Workflows
       - workflows.xml
    - ....Rest of my code files/folders....

Я полагаю, шаг 1, вероятно, для меня, чтобы переместить весь мой некодированный XML файлов как минимум в 2 папки, одну в папке Application, а другую в папке Framework, и я готов сделать это, но я хотел бы получить полную картину того, как все эти Electron-Builder / WebPack / Конфигурации установщика настроены таким образом, что файлы конфигурации будут установлены в путь к домашнему каталогу пользователей в их локальной системе, прежде чем я перейду слишком далеко в реструктуризацию кода моего приложения.

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

После настройки автообновления, как сообщить пользователю, требует ли конкретное обновление критических изменений в их файле (файлах) конфигурации .

Как настроить деинсталлятор, чтобы у пользователя была возможность оставить конфигурационный файл (ы) нетронутым после процесса деинсталляции или продолжить удаление всего?

My репо: https://github.com/SethEden/electronVueJS-App/

Спасибо за вашу помощь !!

ОБНОВЛЕНИЕ:

Я очистил кодовая база для вышеуказанного репо и вернулась к очень простой конфигурации c, чтобы попытаться заставить это работать. Я обнаружил, что NSIS - это инструмент для создания Windows установщиков для приложений Electron. Я пытаюсь следовать этому руководству:

https://youtu.be/QowWa3aVCQw

Когда я пытался добавить цель сборки NSIS в свой пакет. json Я получил сообщение об ошибке из Electron-Builder, который относился к VueJS и сказал мне переместить мою сборку в файл Vue .config. js.

Итак, я сделал это и теперь получаю эту ошибку :

(node:16532) UnhandledPromiseRejectionWarning:
Error: cannot find specified resource "LICENSE",
nor relative to "C:\electronVueJS-App\build",
neither relative to project dir ("C:\electronVueJS-App")

Я даже попытался полностью удалить лицензию из определения сборки в моем файле vue .config. js, но теперь у моего установщика NSIS нет лицензии. Кроме того, что более важно, если я даже не могу указать файл лицензии NSIS в своей конфигурации сборки, как, черт возьми, я смогу указать добавление файлов, не связанных с кодом, в мою сборку? И что еще более важно, как я могу сказать NSIS установить их в пользовательскую папку AppData по их локальному установленному системному пути?

Может ли кто-нибудь помочь мне разобраться в этом? Я очень разочарован тем, что застрял в этом вопросе.

Спасибо и ура ~ Сет

1 Ответ

0 голосов
/ 21 августа 2020

Допустим, у вас есть файл user.config в каталоге sr c, и вы хотите поместить его в каталог APPDATA .

  1. Прежде всего вам необходимо упаковать этот файл. Это можно сделать следующим образом:

    "build": {
        "extraFiles": [
          {
           "from": "./src/user.config",
           "to": "."
          }
        ]
     }
    

    Это поместит файл user.config в каталог root упакованного исходного кода.

  2. Теперь нам нужно указать установщику поместить этот файл в каталог APPDATA . Для этого нам нужно написать собственный сценарий nsis. Вы можете поместить этот сценарий в папку сборки.

    "build": {
          "extraFiles": [
             {
                "from": "./src/user.config",
                "to": "."
             }
           ]
     },
     "nsis": {
          "include": "build/installer.nsh"
     }
    

    Содержимое installer.n sh должно выглядеть примерно так:

    !macro customInstall
      CreateDirectory $LOCALAPPDATA\*(YOUR_APP_NAME)*
      CopyFiles $INSTDIR\user.config $LOCALAPPDATA\*(YOUR_APP_NAME)*
      Delete $INSTDIR\user.config
    !macroend
    

    Читать подробнее об этом здесь

Кроме того, чтобы получить путь APPDATA в исходных файлах, вы можете получить его следующим образом:

process.env.LOCALAPPDATA
...