【问题标题】:How to deploy an Electron app as an executable or installable in Windows?如何将 Electron 应用程序部署为可执行文件或可安装在 Windows 中?
【发布时间】:2015-09-26 00:35:20
【问题描述】:

我想生成一个唯一的.exe 文件来执行应用程序或一个.msi 来安装应用程序。该怎么做?

【问题讨论】:

标签: windows deployment desktop-application electron


【解决方案1】:

您可以使用 electron-packager 打包您的程序,然后使用 InnoSetup 构建单个安装 EXE 文件。

【讨论】:

  • 谢谢 Alex,我使用 electron-packager 打包了应用程序,但我得到了带有 .dll 扩展名的文件,对我来说最好的解决方案是拥有一个不需要的文件,比如 mac os 替代品被安装。还有其他方法吗?
  • 据我所知没有。 Mac .app 文件实际上是一组文件本身,只是操作系统对您隐藏了这些文件。 Windows 没有任何等价物。因此,如果您想分发单个 EXE 文件,它需要是一个安装文件或类似自解压 ZIP 的文件。
  • 什么是自解压ZIP,如何制作?
  • 您可以使用 7zip 创建自解压存档。它只是一个打包为 EXE 的 ZIP 文件 - 运行时它会自行解压缩。
  • 只使用电子打包器构建我的应用程序,但我的源文件没有编译,这正常吗? :) 我以为一切都会进入 exe 内部?! :(
【解决方案2】:

由于大多数答案没有关于打包的分步说明,让我发布我如何打包电子应用程序。

我们将首先安装 electron-packager。

Electron Packager 是一个命令行工具和 Node.js 库, 将基于 Electron 的应用程序源代码与重命名的 Electron 捆绑在一起 可执行文件和支持文件放入准备分发的文件夹中。

安装电子打包器: 在 windows cmd 中运行以下命令

npm install -g electron-packager --save-dev

接下来,让我们为 windowsx64 打包我们的应用程序:

electron-packager appdirectory appName --platform=win32 --arch=x64 --electron-version=1.4.3

【讨论】:

  • 感谢您的回答。我认为当人们说“答案是 x,这就是你的做法”而不是“只使用 x”时,它会更有帮助
  • @zfrisch :) 很高兴你喜欢这个帖子
  • 补充一点,我发现要在MacOs上运行这个命令,你需要wine which can be installed multiple ways,我用brew install wine
【解决方案3】:

2020 年更新 您可以使用electron-builder 为您的电子应用程序创建可移植的 .exe 文件。 您需要做的就是使用yarn add electron-builder --dev 安装电子生成器 然后像这样创建一个 package.json 文件(这只是用于可移植的 .exe):

{
  "name": "my-electron-app",
  "productName": "electron app",
  "version": "1.0.0",
  "description": "an electron app",
  "main": "main.js",
  "scripts": {
    "start": "electron .",
    "dist": "electron-builder"
  },
  "devDependencies": {
    "electron": "^8.0.2",
    "electron-builder": "^22.3.2"
  },
  "build": {
    "appId": "com.electron.app",
    "win": {
      "target": "portable"
    },
    "portable": {
      "unicode": false,
      "artifactName": "my_electron_app.exe"
    }
  }
}

【讨论】:

    【解决方案4】:

    您也可以尝试使用electron-boilerplate。它具有 gulp 的“发布”任务,它将为所有跨平台创建单个准备就绪的可执行文件。您只需要从所有三个平台构建应用程序即可生成特定平台的可执行文件。因此您不需要安装任何第三方工具。

    【讨论】:

      【解决方案5】:

      有很多好的模块可以生成单个安装程序*exe文件。查看以下任何一项:

      • electron-builder(生成适用于 Windows、Mac 和 Linux 的可执行文件,具有无服务器应用程序自动更新功能、代码签名、发布等,更少样板文件)

      • electron-forge(生成适用于 Windows、Mac 和 Linux 的可执行文件,它不仅可以打包应用程序,还可以帮助您创建它们,更多样板文件)

      • windows-installer(使用方便,重量轻,只生成exe文件)

      (仍然不知道该选哪个?比较here

      【讨论】:

        【解决方案6】:

        将电子应用程序打包为可安装或可执行的。 electron-builder 应该是最好的选择。而且它很容易配置,我们也可以使用电子自动更新器。这里是electron-builder.json的例子

        {
          "publish": {
            // This can be also 's3', 'github'... based on which server you are using for publish
            // https://www.electron.build/configuration/publish
            "provider": "generic",
        
            // Feed URL but github provider case, other fields will be required. 'repo', 'owner'...
            "url": "https://myappserver.com/updates/"
          },
        
          "productName": "My App",
          "appId": "com.myapp.app",
        
          "directories": {
            // The icon and background in 'buildResources' will be used as app Icon and dmg Background
            "buildResources": "buildResources",
        
            // output is directory where the packaged app will be placed
            "output": "release"
          },
        
          // The files which will be packed
          "files": ["src/", "node_modules/", "package.json"],
        
          "mac": {
            "target": ["dmg", "zip"], // Also can be, 'pkg', ...
            "artifactName": "${productName}-${version}-${os}.${ext}"
          },
          "win": {
            "target": ["nsis", "zip"], // Also can be, 'portable', ...
            "artifactName": "${productName}-${version}-${os}.${ext}"
          },
          "linux": {
            "target": ["AppImage"],
            "artifactName": "${productName}-${version}-${os}.${ext}"
          },
          "dmg": {
            "title": "${productName}-${version}",
            "contents": [
              {
                "x": 300,
                "y": 360
              },
              {
                "x": 490,
                "y": 360,
                "type": "link",
                "path": "/Applications"
              }
            ]
          }
        }
        

        当然,我们也可以添加nsisextraFilesafterPackafterSign等其他配置...

        以上都很好用。您可以在此处查看详细信息和其他字段https://www.electron.build/configuration/publish

        我们可以在package.json内部定义这个配置,或者作为一个独立的文件,但名称应该是electron-builder.json或者electron-builder.yml在项目根目录下。

        此外,用于自动更新。 我们应该在zipblockmaplatest-{OS_Name}.ymlfiles中上传安装程序(dmg、exe、appImage)。

        【讨论】:

        • 酷。这对我有很大帮助。谢谢
        • 酷。很有帮助的评论。
        【解决方案7】:
        npm install -g electron-packager --save-dev
        npx electron-packager <appDirectory> appName --platform=win32 --arch=x64
        npx electron-packager <appDirectory> appName --overwrite --asar --electron-version=13.4.0 --platform=win32 --arch=x64 --prune=true --out=release-builds --icon=./build/icon.ico"
        

        【讨论】:

        • 使用电子打包器 -- 希望对您有所帮助
        【解决方案8】:

        嗯...这将工作,但想法是运行 .exe 而无需将其安装在 pc 中...另一种解决方案是使用 Autoplay media Studio 包装您由电子生成的包并制作一个可执行文件或其他文件解决方案是使用 thinstall vmware ......缺点都是商业的,所以你必须为它们付费......

        【讨论】:

          【解决方案9】:

          有很多解决方案,我建议使用第 3 个选项,但我知道的都是这些

          1. 使用electron-packager

          2. 使用electron-forge

          3. 试试这个:https://stackoverflow.com/a/69807948/15233276

          【讨论】:

            【解决方案10】:

            这在 2021/2022 对我有用:

            1. 全局安装 Electron Packager。在命令提示符下运行以下命令

            npm install electron-packager -g

            1. 在命令提示符下运行以下命令:

            electron-packager D:\sample MySample --platform=win32 --arch=x64

            上面的命令显示如下输出:

            Packaging app for platform win32 x64 using electron v16.0.5

            5-10 分钟后,它会创建包含必要文件的文件夹,并在屏幕上显示以下输出:

            Wrote new app to D:\sample\MySample-win32-x64

            在我的例子中,上面的输出目录大小为 1.09 GB。因此,在运行上面第二点中提到的命令之前,请确保您的硬盘驱动器中有足够的空间。

            1. 如果您导航到上述目录,您将在其中看到以下 EXE 文件:

            MySample.exe

            双击 MySample.exe 将启动文件,其中包含可供您使用的应用程序。另请注意,它将在 localhost 上运行。尽情享受吧!

            【讨论】:

              【解决方案11】:

              我第一次尝试了 electron-packager,但是它产生了很多 .dll 文件,仍然无法运行。

              对我有用的是:

              npm install
              npm run dist --ia32
              

              这产生了一个独立的 exe,运行该应用程序不需要其他文件。

              【讨论】:

              • 这是npm install electron-builder 吗?
              • @KansaiRobot 这是打包电子应用程序的另一种方式
              【解决方案12】:

              您也许可以将整个电子应用程序“包装”在 .NET 项目中。然后它创建的单个可执行文件可以“在内部”运行电子应用程序。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2012-12-28
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多