文章目錄
- 1. 現象
- 2. 分析并如何解決
- 3. 后續
1. 現象
在Mac電腦上,使用Electron Updater對程序進行更新,但是一直不成功,也不報錯。具體表現是這樣的:當前我的程序版本是3.11版本,點擊更新之后,也下載了,但是更新之后還是3.11,也就是意味著更新不成功。
對于具體問題具體分析,這里我先貼一下我的更新代碼:
function checkForUpdates() {// 配置安裝包遠端服務器autoUpdater.setFeedURL("update_url");// 下面是自動更新的整個生命周期所發生的事件 // ------------start------------------autoUpdater.on('error', (e, message) => {sendUpdateMessage('error', message);});autoUpdater.on('checking-for-update', (e, message) => {sendUpdateMessage('checking-for-update', message);});autoUpdater.on('update-available', (e, message) => {sendUpdateMessage('update-available', message);});autoUpdater.on('update-not-available', (e, message) => {sendUpdateMessage('update-not-available', message);});// 更新下載進度事件autoUpdater.on('download-progress', (progressObj) => {sendUpdateMessage('downloadProgress', progressObj);});// 更新下載完成事件autoUpdater.on('update-downloaded', (event, releaseNotes, releaseName, releaseDate, updateUrl, quitAndUpdate) => {sendUpdateMessage('isUpdateNow');ipcMain.on('updateNow', (e, arg) => {//app退出并安裝autoUpdater.quitAndInstall()});});// ------------start------------------//執行自動更新檢查autoUpdater.checkForUpdates();//自定義Logger,查看問題所在autoUpdater.logger = {info(message) {builder += "info : " + message + "\n";},warn(message) {builder += "warn : " + message + "\n";},error(message) {builder += "error : " + message + "\n";}};
2. 分析并如何解決
在查閱了相關的資料就會發現,使用 electron 所打包的app,其實會存在各種日志,我們只需要查看日志,并按照日志,哪里出錯就修改哪里即可。
日志的路徑在哪里呢?首先你需要確定一下你的AppId,至于這個AppId,是需要你在package.json中配置的:

知道了這個AppId之后,就就可以查看以下目錄:
/Users/user_name/Library/Caches/appId_name.Shiplit/ShipIt_stderr.log
看到的就是這種:

查看之后,就可以確定問題所在了。
ps:
我這邊的問題是什么呢?主要是存在一個文件,它只是可讀的權限,沒有可寫和可操作的權限。因此可以在終端,對這個文件進行
? sudo chmod 777 target_file
然后重新打包,重試即可完成安裝。
3. 后續
如果后續存在什么問題,可以根據這個log日志進行分析并逐步解決。如果你存在什么問題的話,可以加我v javainstalling,我們一起解決。