2019-02-05 20:56:44 +00:00
|
|
|
'use strict'
|
|
|
|
|
|
|
|
const { app } = require('electron')
|
|
|
|
const path = require('path')
|
|
|
|
|
|
|
|
const getTempDirectory = function () {
|
|
|
|
try {
|
|
|
|
return app.getPath('temp')
|
2019-02-21 09:26:07 +00:00
|
|
|
} catch {
|
2019-06-02 20:03:03 +00:00
|
|
|
// Delibrately laze-load the os module, this file is on the hot
|
|
|
|
// path when booting Electron and os takes between 5 - 8ms to load and we do not need it yet
|
|
|
|
return require('os').tmpdir()
|
2019-02-05 20:56:44 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
exports.crashReporterInit = function (options) {
|
2019-04-30 20:55:33 +00:00
|
|
|
const productName = options.productName || app.name
|
2019-02-05 20:56:44 +00:00
|
|
|
const crashesDirectory = path.join(getTempDirectory(), `${productName} Crashes`)
|
|
|
|
let crashServicePid
|
|
|
|
|
|
|
|
if (process.platform === 'win32') {
|
|
|
|
const env = {
|
|
|
|
ELECTRON_INTERNAL_CRASH_SERVICE: 1
|
|
|
|
}
|
|
|
|
const args = [
|
|
|
|
'--reporter-url=' + options.submitURL,
|
|
|
|
'--application-name=' + productName,
|
|
|
|
'--crashes-directory=' + crashesDirectory,
|
|
|
|
'--v=1'
|
|
|
|
]
|
|
|
|
|
2019-06-03 18:48:23 +00:00
|
|
|
const crashServiceProcess = require('child_process').spawn(process.helperExecPath, args, {
|
2019-02-05 20:56:44 +00:00
|
|
|
env,
|
|
|
|
detached: true
|
|
|
|
})
|
|
|
|
|
|
|
|
crashServicePid = crashServiceProcess.pid
|
|
|
|
}
|
|
|
|
|
|
|
|
return {
|
|
|
|
productName,
|
|
|
|
crashesDirectory,
|
|
|
|
crashServicePid,
|
|
|
|
appVersion: app.getVersion()
|
|
|
|
}
|
|
|
|
}
|