回答
我試過electron-basic-updater, electron-asar-updater, electron-installer-windows
et al。並花費數小時嘗試如何發佈/更新我的應用程序,然後用electron-packager
進行包裝,並使用Squirrel
進行自動更新。他們有他們的優勢。
我假設讀者具有使用Electron應用程序的基本知識,因此我不會介入基礎知識。
重要說明:您必須在Windows中創建一個軟件包/安裝程序並安裝該應用程序才能使自動更新程序正常工作!
在你主app.js,添加一個IPC來處理更新方案:
ipcMain.on('check-for-update', function(event, arg) {
/* AUTO UPDATER */
const autoUpdater = electron.autoUpdater;
const os = require('os');
const {dialog} = require('electron');
/* For Windows, PATH to DIRECTORY that has nupkg and RELEASES files (Windows alone) */
/* And add "Options Indexes" to htaccess if you want listing on that dir [email protected] */
var releaseDIR = config.webURL + '/releases/win' + (os.arch() === 'x64' ? '64' : '32');
autoUpdater.setFeedURL(releaseDIR);
autoUpdater
.on('error', function(error){
loggit(error);
return dialog.showMessageBox(mainWindow, {
type: 'info',
icon: basePath + "/assets/refico32.ico",
buttons: ['Dang!'],
title: appName + ": Update Error",
message: "Something's not right out there. Please try again later.",
detail: "Umm... \nIt's not you, it's the server"
});
})
.on('checking-for-update', function(e) {
loggit('Checking for update at ' + releaseDIR);
})
.on('update-available', function(e) {
var downloadConfirmation = dialog.showMessageBox(mainWindow, {
type: 'info',
icon: basePath + "/assets/refico32.ico",
buttons: ['Proceed'],
title: appName + ": Update Available",
message: 'An update is available. The update will be downloaded in the background.',
detail: "Size: ~42 MB"
});
loggit('Downloading update');
if (downloadConfirmation === 0) {
return;
}
})
.on('update-not-available', function(e) {
loggit('Update not available');
return dialog.showMessageBox(mainWindow, {
type: 'info',
icon: basePath + "/assets/refico32.ico",
buttons: ['Cool'],
title: appName + ": No update available",
message: "It seems you're running the latest and greatest version",
detail: "Woot, woot! \nTalk about being tech-savvy"
});
})
.on('update-downloaded', function (event, releaseNotes, releaseName, releaseDate, updateUrl, quitAndUpdate) {
var index = dialog.showMessageBox(mainWindow, {
type: 'info',
icon: basePath + "/assets/refico32.ico",
buttons: ['Install Update','Later'],
title: appName + ": Latest version downloaded",
message: 'Please restart the app to apply the update',
detail: releaseName + "\n\n" + releaseNotes
});
if (index === 1) return;
force_quit = true;
autoUpdater.quitAndInstall();
});
autoUpdater.checkForUpdates();
event.returnValue = "Checking for updates: " + releaseDIR + " Install Path: " + appPath;
});
其他注意事項: 1]您app.js必須處理在一開始松鼠事件。你可以爲handleSquirrelEvent編寫你自己的處理程序,或者只是簡單的if (require('electron-squirrel-startup')) return;
就可以。 2]在編寫本文時,一旦啓動了自動更新過程,用戶就無法取消更新過程。
創建您安裝,您Gruntfile.js(npm install grunt, npm install grunt-cli
後)應該是這樣的
module.exports = function(grunt) {
grunt.loadNpmTasks('grunt-electron-installer');
grunt.initConfig({
'create-windows-installer': {
'ia32': {
appDirectory: "C:\\refreshie\\app\\build\\Refreshie-win32-ia32",
outputDirectory: "C:\\refreshie\\app\\build\\Distro\\Refreshie-Win-ia32",
loadingGif: "C:\\refreshie\\app\\assets\\images\\install.splash.gif",
iconUrl: "C:\\refreshie\\app\\assets\\refico.ico",
setupIcon: "C:\\refreshie\\app\\assets\\refico.ico",
signWithParams: "/a /f C:\\refreshie\\app\\build\\tools\\cert.signingkey.pfx /p F5",
noMsi: true
}
}
});
grunt.registerTask('default', ['create-windows-installer']);
};
目前,做電子自動更新使用電子製造商的最佳途徑。
NPM安裝電子builer -save-dev的
NPM安裝電子更新 - 保存
爲了演示目的,GET HTTP服務器作爲您的Web主機服務器。
NPM安裝HTTP服務器 - 保存
構建包是很簡單的,創建兩個文件夾「構建」和「測距」,然後在 腳本的package.json這種添加和運行
"scripts": {
"start": "set NODE_ENV=dev&& tsc && concurrently \"npm run tsc:w\" \"electron .\" ",
"tsc": "tsc",
"tsc:w": "tsc -w",
;
"dist": "build -w --x64",
"wb": "http-server wwwroot/ -p 8080",
;
},
NPM運行DIST
自動更新,創建一個文件夾的wwwroot並假設是你的web主機服務器,並啓動你的網站爲:
NPM運行WB
副本從DIST文件夾verything到wwwroot文件夾。
好的。
詳情請參閱here
- 1. 電子自動更新器
- 2. 自更新電子表格
- 3. 檢測Windows自動更新
- 4. 自動更新Windows服務
- 5. 刷新按鈕/自動更新GOOGLE電子表格
- 6. 如何在更新後自動刷新電子表格名稱?
- 7. 自動更新子模塊
- 8. 自動更改發送電子郵件
- 9. 自動更正電子郵件地址
- 10. Google電子表格更新時會自動更新Google地圖嗎?
- 11. 谷歌電子表格中的自動更新數據驗證
- 12. 使用修改日期自動更新Google電子表格
- 13. 電子自動更新程序不存在?
- 14. 自動更新的圖像(用於網頁和電子郵件)
- 15. 自動更新帖子而不刷新
- 16. WordPress的自動化電影更新
- 17. 自動更新無線電檢查
- 18. 禁用Windows自動更新使用Java
- 19. 自動更新Windows上的Flash
- 20. 自動程序更新和Windows 7
- 21. 自動更新Windows應用程序
- 22. Windows應用程序的自動更新
- 23. 在Windows上啓動電子應用程序重新啓動
- 24. 如何更新Windows服務(不自動更新)
- 25. 當Java自動更新時更新Windows路徑變量?
- 26. 更新電子郵件
- 27. 自動更新來自bigquery的數據的谷歌電子表格
- 28. Windows 7自動/自動更新可執行文件
- 29. 如何在Google日曆更改時自動更新Google電子表格?
- 30. 關閉Windows更新服務和自動更新使用PowerShell的Windows 10