我正在使用electron-packager
和electron-winstaller
。
我的目标是:打包一个安装程序,用户可以安装并运行我制作的程序。
我遇到的问题:我有一些外部.dll(即ffmpeg使用的那些),如果不将它们包含在可执行文件的根目录中,则节点模块将无法已加载,因此程序无法运行。 (它会显示“无法加载testaddon.node文件”)
我注意到打包程序+安装程序不包含我的.dll,即使我将它们包含在根目录中也被忽略了。 我使用以下命令打包:
electron-packager . appname --platform=win32 --arch=x64 --prune=true --out=build-releases --overwrite
我通过以下方式运行安装程序:node installers/win32/createinstaller.js
createinstaller.js:
var electronInstaller = require('electron-winstaller');
resultPromise = electronInstaller.createWindowsInstaller({
appDirectory: 'build-releases/app-win32-x64',
outputDirectory: 'build-releases/installer64',
authors: 'Name',
exe: 'app.exe',
});
resultPromise.then(
() => console.log('It worked!'),
e => console.log(`No dice: ${e.message}`)
);
如果安装程序运行后我将.dll手动放置在目录中,则一切都很好。
一种解决方案是:我可以编写一些代码来在安装程序运行后将那些.dll放入其中。
最好将它们全部独立包含以避免上述替代解决方案。
有人知道更好的解决方案吗?