Создание приложения Electron до 32 бит с использованием электронной сборки приводит к ошибке «недопустимое приложение 32».

#dll #electron #electron-builder

Вопрос:

Я разрабатываю приложение с помощью electron, используя electron-builder .

В приложении внешняя библиотека DLL подключается и импортируется при посещении определенной страницы приложения.

Это и есть настройка:

vue.config.js

 module.exports = {
  pluginOptions: {
    electronBuilder: {
      // We do not use BASE_URL - remove it from config to prevent crash
      // https://github.com/nklayman/vue-cli-plugin-electron-builder/issues/703
      chainWebpackRendererProcess(config) {
        config.plugin("define").tap(args => {
          delete args[0]["process.env"].BASE_URL;
          return args;
        });
      },
      externals: ["ffi-napi", "ref-napi"],
      nodeModulesPath: ["./node_modules"],
      builderOptions: {
        productName: process.env.VUE_APP_NAME,
        nsis: {
          artifactName: "${productName} Setup ${version}.${ext}",
        },
        extraResources: ["bin/OurTestFile.dll"],
        win: {
          // App id identifies uniqe installation - Application User Model ID for Windows
          appId: process.env.VUE_APP_ID,
          publish: [
            {
              provider: "generic",
              url: process.env.VUE_APP_RELASE_SERVER_URL,
            },
          ],
          target: [
            {
              target: "nsis",
              arch: ["ia32"],
            },
          ],
        },
      },
    },
  },
};
 

Обратите внимание на эту часть extraResources: ["bin/OurTestFile.dll"]

Как вы видите, мы используем стороннюю программу для инициализации при каждом импорте. В нашей локальной среде это отлично работает на x64 Windows с 32-битным узлом. (DLL поддерживает только 32-битную версию)

Проблема

Однако после развертывания этого через laravel forge и сборки с помощью Wine amp; Wine32 я сталкиваюсь с этой ошибкой при запуске встроенного приложения на моем ПК с Windows после достижения точки импорта dll:

.tmp.node не является допустимым приложением Win32. на процессе.функция [как dlopen]

Сценарий развертывания выглядит следующим образом:

 npm set npm_config_arch ia32
yarn electron:build --windows --ia32
 

Любые советы и помощь высоко ценятся, так как вскоре я посвятил целую неделю отчаянию!