在 Electron 中执行一个 exe(内部项目结构)

Execute an exe(Inside Project structure) in Electron

在开发模式下,执行 exe 运行良好。

我启动 exe 的代码是

function LaunchExe() {
        var child = require('child_process').execFile;
        var executablePath = 'DemoExe/Sample.exe';
        var parameters = ['Hai', 'Test', 'Dat'];
        child(executablePath, parameters, function (err, data) {
            console.log(err)
            console.log(data.toString());
        });
}

但是打包Electron应用后,我无法启动exe。

我用来构建exe的命令是

electron-packager . --asar

错误代码

 Error: spawn DemoExe/Sample.exe ENOENT
     at Process.ChildProcess._handle.onexit (internal/child_process.js:232)
     at onErrorNT (internal/child_process.js:407)
     at process._tickCallback (internal/process/next_tick.js:63)

问候。

你的项目有angular吗?

也许这会有所帮助,但我在使用 electron-packager 时也遇到了问题。

所以我建议你使用 electron builder : https://www.electron.build

首先,您需要在根目录添加一个名为 electron-builder.json 的文件,它应该包含以下内容(您需要更新产品名称和图标位置) :

{
  "productName": "projectname",
  "appId": "org.project.projectname",
  "artifactName": "${productName}-setup-${version}.${ext}",
  "directories": {
    "output": "builds/"
  },
  "files": [
    "dist/",
    "node_modules/",
    "package.json",
    "**/*",
    "!**/*.ts",
    "!*.code-workspace",
    "!package-lock.json",
    "!src/",
    "!e2e/",
    "!hooks/",
    "!angular.json",
    "!_config.yml",
    "!karma.conf.js",
    "!tsconfig.json",
    "!tslint.json"
  ],
  "nsis": {
    "oneClick": false,
    "allowToChangeInstallationDirectory": true
  },
  "mac": {
    "icon": "src/favicon.ico"
  },
  "win": {
    "icon": "src/favicon.ico"
  },
  "linux": {
    "icon": "src/favicon.png"
  }
}

然后,您需要将这些脚本添加到您的 package.json

"scripts": {
    "build:prod": "npm run build -- -c production",
    "package:windows": "npm run build:prod && electron-builder build --windows"
}

可以用

编译可执行文件

npm run package:windows

此外,不要忘记将 electron builder 添加到您的开发依赖项中:

yarn add electron-builder --dev

位于/builds

的可执行文件

必须按照以下步骤操作,

1.package Electron 应用程序使用命令

electron-packager .

2.Path 执行

path.join(__dirname, "DemoExe", "Sample.exe")