最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

如何使用带有错误日志记录的 electron wix creator 解决 msi 包创建中的错误?

网站源码admin29浏览0评论

如何使用带有错误日志记录的 electron wix creator 解决 msi 包创建中的错误?

如何使用带有错误日志记录的 electron wix creator 解决 msi 包创建中的错误?

我正在尝试从具有错误记录功能的 golang 程序创建一个 msi 包。所以,我将能够检索 golang 应用程序崩溃日志。

以下 Golang 代码保存到

main.go
,预计会因
1\0
除法相关错误而崩溃。

package main

import "fmt"

func main() {
    // intentionally cause a divide-by-zero error
    x := 0
    y := 1 / x
    fmt.Println(y)
}

然后我尝试使用以下步骤创建 msi 包:

  • 第一步:
    go get github/akavel/rsrc
  • 第二步:
    rsrc -ico .\abc.ico
  • 第三步:
    $Env:GOOS="windows"; go build -ldflags "-H windowsgui" -o ABC.exe
  • 第四步:
    npm install electron-wix-msi@latest
  • 第五步:
    npm install node-gyp@latest --save-dev
  • 第 6 步:
    npm install child_process@latest --save-dev
  • 第七步:
    npm install [email protected] --save-dev
  • 第八步:
    npm i exe-icon-extractor@latest --save-dev

然后我创建了一个javascript文件名

msi_creator.js
来生成msi包。 javascript代码如下:

const { MSICreator } = require("electron-wix-msi");
const path = require("path");
const { execSync } = require("child_process");

async function start() {
  try {

    // Step 2: Instantiate the MSICreator
    const msiCreator = new MSICreator({
      appDirectory: path.resolve("."),
      description: "ABC",
      exe: "ABC.exe",
      name: "ABC",
      manufacturer: "FFFF",
      version: "0.1.0",
      upgradeCode: "{12343238-1111-2222-3333-123483275556}",
      removeExistingProduct: true,
      iconPath: "./abc.ico",
      outputDirectory: path.resolve("./output/"),
    });

    // Step 4: Create a .wxs template file
    console.log("Creating the .wxs template file...");
    await msiCreator.create();
    console.log("Created the .wxs template file.");

    // Step 5: Define the MSIErrorLog DLL function
    console.log("Defining the MSIErrorLog DLL function...");
    msiCreator.defineMsiErrorLogFunction(
      function MSIErrorLog(hInstall) {
        var exePath = session.property('CustomActionData');
        var errorLogFile = session.property('MsiErrorLogFile');
        try {
          var child_process = require('child_process');
          child_process.execFile(exePath, {stdio: 'ignore'}, function (error, stdout, stderr) {
            if (error) {
              var fs = require('fs');
              var logFile = fs.createWriteStream(path.join(process.env['TEMP'], 'msi_error.log'), {flags: 'a'});
              logFile.write('Error: ' + error.message + '\n');
              logFile.end();
            }
          });
        } catch (e) {
          var fs = require('fs');
          var logFile = fs.createWriteStream(path.join(process.env['TEMP'], 'msi_error.log'), {flags: 'a'});
          logFile.write('Error: ' + e.message + '\n');
          logFile.end();
        }
      }
    );
    console.log("Defined the MSIErrorLog DLL function.");

    // Step 6: Compile the template to a .msi file
    console.log("Compiling the .wxs template...");
    await msiCreatorpile();
    console.log("Compiled the .wxs template to an MSI installer.");
  } catch (error) {
    console.error(error);
  }
}

start();

然后我运行命令

node .\msi_creator.js

但是我收到以下错误:

Created the .wxs template file.
Defining the MSIErrorLog DLL function...
TypeError: msiCreator.defineMsiErrorLogFunction is not a function

如何解决这个问题?如何存储与应用程序崩溃相关的错误日志?

感谢和问候, 手册

回答如下:
发布评论

评论列表(0)

  1. 暂无评论