我正在制作一个电子应用程序,用于在运行时启动存储在我计算机上的可执行文件。如果我自己运行exe,它可以正常工作并加载所有字体。但是,当由电子应用程序运行时,它会打开,但不能加载任何字体文件。 exe是在visual studio中制作的编译发布项目。
我尝试将res文件夹放入与index.html相同的目录中,但无济于事。
index.html的代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello World!</title>
</head>
<body>
<h1>Hello World!</h1>
<script>
var child = require('child_process').execFile;
var exePath = "C:\\Users\\name\\Documents\\Visual Studio 2015\\Projects\\Ten\\Release\\Ten.exe";
var parameters = ["test"];
child(exePath, parameters, function(err, data){
console.log(err);
console.log(data.toString());
})
</script>
</body>
</html>
main.js的代码
const {app, BrowserWindow} = require('electron')
const path = require('path')
const url = require('url')
function createWindow () {
// Create the browser window.
win = new BrowserWindow({width: 800, height: 600})
// and load the index.html of the app.
win.loadURL(url.format({
pathname: path.join(__dirname, 'index.html'),
protocol: 'file:',
slashes: true
}))
win.webContents.openDevTools()
// Emitted when the window is closed.
win.on('closed', () => {
win = null
})
}
app.on('ready', createWindow)
// Quit when all windows are closed.
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit()
}
})
app.on('activate', () => {
if (win === null) {
createWindow()
}
})
谢谢!
答案 0 :(得分:2)
你的exe是否使用相对路径来加载字体?如果是这样,要么将exe更改为更灵活,要么在调用execFile()
时指定可选的3rd arg来指定所需的工作目录。
var child = require('child_process').execFile;
var exePath = "C:\\Users\\name\\Documents\\Visual Studio 2015\\Projects\\Ten\\Release";
var exe = exePath + "\\Ten.exe";
var parameters = ["test"];
var options = {cwd:exePath};
child(exePath, parameters, options, function(err, data){
console.log(err);
console.log(data.toString());
});
如果这不起作用,我猜是某种权限问题。当您测试exe时,您的电子应用程序是否以不同的用户身份运行?