繁体   English   中英

与电子链接的msi安装程序

[英]Chained msi Installer with Electron

我是Electron的新手,我正在构建一个我想在Windows上安装的应用程序。 我阅读了有关如何在Electron的文档中分发您的应用程序的文档 ,我知道:

electron-forge
electron-builder
electron-packager

目前我正在与:

"electron-builder-squirrel-windows": "^19.20.0",
"electron-builder": "^19.20.0",
"electron": "^1.6.11"

鉴于此,我能够创建一个Setup.exe来安装我的应用程序,但我无法为安装过程创建任何UI。

我想让用户选择如果他需要更改安装路径,显示我希望他接受的最终许可证,...

没有关于electron.atom.io的信息

看看使用Electron构建的Atom编辑器或Slack ,我可以看到在安装过程中可以显示一些UI。 这通常是怎么做的?

编辑:我刚刚阅读了关于windows-installer的信息 ,您需要为此Edit Edit使用squirrel事件:

  • 将标题更改为“使用电子链接的msi安装程序”

请注意,安装程序第一次启动您的应用时,您的应用会看到--squirrel-firstrun标志。 这允许您执行诸如显示启动画面或显示设置UI之类的操作。

作为使用整个电子包堆栈开发Windows MSI安装交付的替代方法,您可以考虑使用以下机制作为另一种有用的解决方案:

  1. webpack - 构建可分发的应用程序客户端
  2. electron-packager - 构建您的电子二进制文件(在本例中为Windows)
  3. WiX工具集 - 用于构建Windows MSI安装程序。

当然,无论您选择使用哪种安装程序,都必须执行步骤1和步骤2。 我发现webpack是最稳定,可配置和完整的解决方案,用于打包角度Web应用程序(这是我的工作),而electron-packager是你无法实现的一个工具,如果你想实际为您的应用构建平台特定的二进制文件。

在我们的例子中,我使用gulp脚本来包装webpackelectron-packager模块,这是我为了通过他们的API,而不是他们的命令行衍生打电话,以保持他们在便于维护和错误处理的构建过程中保持一致的JavaScript上下文(命令行解决方案比javascript,imo中的包,模块,文件和函数更难以扩展和重新定位)。

通过了解我所指的项目类型,可以更容易地解释这一点。 具体而言,如果您要构建具有完整项目结构的电子应用程序,例如:

C:.
+---assets/
+---ClientSide
¦   +---index.html
¦   +---app
¦   ¦   +---app.component.ts
¦   ¦   +---app.module.ts
¦   ¦   +---main.ts
¦   ¦   +---AppContent/
¦   ¦   +---help/
¦   ¦   +---modals/
¦   ¦   +---panels/
¦   ¦   +---shared/
¦   +---Styles
¦   ¦   +---dist/
¦   ¦   +---svgs/
¦   +---test
¦       +---AppContent/
¦       +---modals/
¦       +---panels/
¦       +---shared/
+---dist/
+---edist
|   \---Application-win32-ia32 [*location of binary source for the install]
+---ServerSide
¦   +---app.js
¦   +---server.js
¦   +---test/
+---Installer
    +---buildMSI.bat
    +---Application/

gulpfile.js
karma.conf.js
main.js
package.json
README.md
webpack.config.js

这种结构显示了一个项目,其中包含您在真实开发环境中所需的所有部分,例如webpack,配置,业力(客户端测试),用于打包操作的gulp(webpack的包装操作,电子打包器),窗口用于运行WiX命令的批处理文件等。

这种方法的流程(可能记录在您的README.md中)类似于新用户设置和构建项目的这些步骤:

  1. git clone <project/path> - 将repo克隆到本地计算机
  2. npm install - 加载/安装node_modules
  3. gulp lint - 验证代码并生成CI结果。 (你选择的短绒)
  4. gulp test - 运行服务器端和客户端单元测试,为每个测试生成代码覆盖CI结果
  5. gulp build_web_client - 使用webpack API调用构建客户端Web项目。 这应该会在项目下创建一个名为“dist”的目录
  6. gulp build_electron_app - 使用electron-packager API构建Electron可执行文件。 这应该会在项目下创建一个名为“edist”的目录。
  7. cd Installer
  8. buildMSI.bat - 此Windows批处理脚本应执行以下步骤:
    1. 通过使用Wix命令heat.exe / edist目录的内容列表(在上面的目录树结构中看到并由步骤6创建)来准备清单文件(生成.wxs文件)
    2. 使用Wix命令candle.exe预处理并将项目编译为对象(.wixobj)
    3. 使用Wix命令Light.exe将Wix项目链接到其最终可安装文件格式,生成安装MSI文件。

这只是一个建议。 当然,您可以根据自己的选择使用其他工具。 这只是我发现的一种方法,可用于开发用于部署到Windows目标的电子应用程序。 关于这一点的好处是,使用Electron,您可以选择构建到许多目标操作系统,使用步骤1-6,然后如果您想要转到Windows或Mac,Linux执行步骤7和8,则可以选择不同的部署方法。

是的,确实如此,你可以使用electron-builder (或者那些有简单需求的electron-forge )来通过Squirrel打包你的应用程序,作为部署到所有电子操作系统的方式(这意味着要取代我的步骤7和8)与那些包装替代品)。 根据我的经验和我们的上下文,Squirrel解决Windows部署似乎不如使用Wix进行部署。

关于您对安装的可配置性的原始问题,使用Wix的好处是您可以使用它来完全自定义您的安装UI和体验(包括目标路径)。

使用Squirrel时,无法在Windows上选择安装路径。 它似乎也不存在。 他们不想支持这一点。 看到这里这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM