为我的应用程序创建自动更新程序时出现问题

时间:2019-02-22 16:37:32

标签: javascript node.js electron

我是电子初学者,我想对我的应用程序实施自动更新,但是我被困住了。

我已经使用螺母和Heroku创建了feedUrl。

    const os = require('os'); const {app, autoUpdater, dialog} = require('electron'); const version = app.getVersion(); const platform
    = os.platform() + '_' + os.arch();  // usually returns darwin_64 const axios = require("axios")

    const updaterFeedURL = 'https://roblox-utility-autoupdate.herokuapp.com'+'/update/' + 'windows' + '/' + version;


function appUpdater(MainWindow) {

    autoUpdater.setFeedURL(updaterFeedURL);
    /* Log whats happening
    TODO send autoUpdater events to renderer so that we could console log it in developer tools
    You could alsoe use nslog or other logging to see what's happening */
    autoUpdater.on('error', err => MainWindow.webContents.executeJavaScript(`console.log("Error")
        console.log(`+err+`)`));
    autoUpdater.on('checking-for-update', () => MainWindow.webContents.executeJavaScript('console.log(`checking-for-update`)'));
    autoUpdater.on('update-available', () => MainWindow.webContents.executeJavaScript('console.log(`update-available`)'));
    autoUpdater.on('update-not-available', () => MainWindow.webContents.executeJavaScript('console.log(`update-not-available`)'));

    // Ask the user if update is available
    autoUpdater.on('update-downloaded', (event, releaseNotes, releaseName) => {

        MainWindow.webContents.executeJavaScript('console.log(`Update Downloaded`)')
        let message = app.getName() + ' ' + releaseName + ' is now available. It will be installed the next time you restart the application.';
        if (releaseNotes) {
            const splitNotes = releaseNotes.split(/[^\r]\n/);
            message += '\n\nRelease notes:\n';
            splitNotes.forEach(notes => {
                message += notes + '\n\n';
            });
        }
        // Ask user to update the app
        dialog.showMessageBox({
            type: 'question',
            buttons: ['Install and Relaunch', 'Later'],
            defaultId: 0,
            message: 'A new version of ' + app.getName() + ' has been downloaded',
            detail: message
        }, response => {
            if (response === 0) {
                setTimeout(() => autoUpdater.quitAndInstall(), 1);
            }
        });
    });
    // init for updates
    setInterval(function(){
    autoUpdater.checkForUpdates();
},10000)
}

exports = module.exports = {
    appUpdater
};

此外,feedUrl返回{“ url”:“ http://roblox-utility-autoupdate.herokuapp.com/download/version/1.0.3/windows_32?filetype=zip”,“ name”:“ 1.0.3”,“ notes”:“哦,新的更新^^ \ n新事物\ n”,“ pub_date“:”“ 2019-02-22T14:02:26.000Z”}所以我不知道为什么它没有更新

0 个答案:

没有答案