Electron electron-winstaller 无法为大型(文件大小)应用程序创建安装程序

Posted

技术标签:

【中文标题】Electron electron-winstaller 无法为大型(文件大小)应用程序创建安装程序【英文标题】:Electron electron-winstaller fails to create installers for large (filesize) app 【发布时间】:2022-01-16 00:47:37 【问题描述】:

我正在尝试为电子应用创建 Windows 安装程序。

首先应用程序使用电子打包器打包。

exec(`npx electron-packager ./ "My App Name" --platform=win32 --out=$packagedLocation`);

然后使用 electron-winstaller 创建应用的安装程序。

try 
    await electronInstaller.createWindowsInstaller(
        appDirectory: packagedLocation,
        outputDirectory: installerLocation,
        authors: 'Author',
        exe: 'myapp.exe'
    );
 catch (e) 
    console.log(`Failure: $e.message`);

当创建安装程序的代码运行时,exe 和 msi 安装程序都没有正确创建。创建的 Setup.exe 只有大约 200 KB。尝试运行 exe 会产生一个对话框,上面写着:This is a dummy update.exe. If you are seeing this, your build did not correctly replace the IDR_UPDATE_ZIP resource. Command Line: '--install .'。 Squirrel 或构建脚本的日志中没有给出错误。

通过测试,我发现如果我打包的应用程序太大,就会发生这种情况。我的应用程序包含大约 3 GB 的资源。我需要将这些资源作为安装程序的一部分包含在内,而不是根据需要下载,因为该应用程序旨在能够在没有互联网访问的情况下工作。这些资源的大小已经过优化,我无法从我的应用中删除任何资源。

出于测试目的,如果我确实随机删除了其中一些资源,直到我打包的应用程序的大小小于 1 GB,electron-winstaller 将正确创建安装程序,而不会出现问题。似乎不是任何特定资源导致错误。

有什么方法可以在我的应用程序中包含这些资源而不妨碍创建安装程序?

更新

在做了一些进一步的研究后,我发现一个用户在 Squirrel.Windows 的 Github issues pages 中遇到了同样的问题,这是 electron-winstaller 用来创建安装程序的。不幸的是,在那里找到的唯一答案是“我认为您现在无法在安装如此庞大的情况下使用 Squirrel”。

就像问题页面上的用户一样,我处于类似的情况,我想要一个安装文件来简化用户的流程。我也不想让应用程序在安装后从互联网上提取资源,因为在服务器离线后很长时间才能安装应用程序是可行的。

我也曾尝试使用 electron-wix-msi 创建安装程序,但结果类似。如果我的应用程序的资源超过 1 GB 左右,我会在尝试创建安装程序时收到错误 light.exe : error LGHT0001 : Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))

electron-packager 列出了四个可用于从打包的电子应用程序创建 Windows 安装程序的包。我不能使用 electron-winstaller 和 electron-installer-windows,因为它们都使用 Squirrel,electron-wix-msi 似乎也不适用于大文件,并且 electron-windows-store 创建了不利于兼容性的 .appx 安装程序。 我还有其他方法可以为电子应用程序创建 Windows 安装程序吗?或者是否有任何针对 Squirrel 或 WiX 方法的潜在修复?

【问题讨论】:

【参考方案1】:

据我了解,Windows Installer 软件包(.msi 文件)将其资源存储在单个 CAB 文件中,该文件不能超过 64,000 个(或者可能是 65,535 个?)文件或 2GB total file size。

如果您需要更多,您可能应该将资源打包到更多 CAB 文件中,并将所有内容捆绑在一个 zip 文件中(没有大小限制)。

附带说明,Windows(32 位和 64 位)不适用于大于 4GB 的可执行文件。

【讨论】:

以上是关于Electron electron-winstaller 无法为大型(文件大小)应用程序创建安装程序的主要内容,如果未能解决你的问题,请参考以下文章

用electron将Vue项目打包为window和Mac桌面应用 (electron-packager与electron-build)

03、electron-builder打包命令报错

vue+electron打包不能网络请求

Electron——查看Electron的版本

Electron——查看Electron的版本

electron(electron-vue)环境下配置gRPC