gpt4 book ai didi

node.js - 在我的Electron应用程序中,我应在哪里执行首次启动功能?

转载 作者:行者123 更新时间:2023-12-03 12:21:18 24 4
gpt4 key购买 nike

我正在使用Electron 9,我有一个主要过程和一个渲染过程。在我的应用程序的第一次启动时,我想执行一些第二次运行未执行的代码。
Electron是否有专用位置我应该在该位置进行操作?任何帮助深表感谢!

最佳答案

  • 使用app.getPath('userData')-它是当前用户的应用程序数据的专用位置(例如,在Windows中,它将指向类似AppData/Roaming/app-name/的位置)
  • 在启动时使用:
  • app.on('ready', () => {
    const firstTimeFilePath = path.resolve(app.getPath('userData'), '.first-time-huh');
    let isFirstTime;
    try {
    fs.closeSync(fs.openSync(firstTimeFilePath, 'wx'));
    isFirstTime = true;
    } catch(e) {
    if (e.code === 'EEXIST') {
    isFirstTime = false;
    } else {
    // something gone wrong
    throw e;
    }
    }

    // ...
    });
  • 利润!

  • https://nodejs.org/api/fs.html#fs_file_system_flags-为什么使用 wx标志
    https://nodejs.org/api/fs.html#fs_fs_opensync_path_flags_mode- fs.openSync() https://www.electronjs.org/docs/api/app#appgetpathname- app.getPath()如果要在第一次运行中写出默认首选项,并在下一次运行中读取它们,请尝试以下操作:
    import defaults from './default_preferences.json'; // will work for plain js objects too

    let prefs = defaultPrefs;

    app.on('ready', () => {
    const prefsPath = path.resolve(app.getPath('userData'), 'prefs.json');
    let isFirstTime;
    try {
    fs.writeFileSync(prefsPath, JSON.stringify(defaultPrefs), { flag: 'wx' });
    isFirstTime = true;
    } catch (e) {
    if (e.code === 'EEXIST') {
    // slight posibility of races, you can eleminate it by using `singleInstanceLock` or waiting loop for `write` flag
    prefs = require(prefsPath);
    isFirstTime = false;
    } else {
    // something gone wrong
    throw e;
    }
    }

    ...
    });

    关于node.js - 在我的Electron应用程序中,我应在哪里执行首次启动功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63380478/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com