#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
Любые советы и помощь высоко ценятся, так как вскоре я посвятил целую неделю отчаянию!