FTP経由でアプリインストーラーをアップロードしたサーバーがあります。その名前はでquickmargo Setup 1.0.0.exe
あり、それはで利用可能です
https://quickmargo.pl/dist/download/quickmargo Setup 1.0.0.exe
また、FTP経由でlatest.yml
同じディレクトリにアップロードしました。
https://quickmargo.pl/dist/download/latest.yml
index.jsのプロジェクトでは、
import { autoUpdater } from 'electron-updater'
autoUpdater.setFeedURL('https://quickmargo.pl/dist/download');
autoUpdater.on('update-downloaded', () => {
autoUpdater.quitAndInstall()
});
autoUpdater.on('update-available', (ev, info) => {
alert('Update required!');
});
app.on('ready', async () => {
if (process.env.NODE_ENV === 'production') {
await autoUpdater.checkForUpdates()
}
});
私が持っているpackage.jsonで"version": "1.0.0",
そしてbuild:{}
私は持っています:
"win": {
"icon": "build/icons/icon.ico",
"publish": [{
"provider": "generic",
"url": "https://quickmargo.pl/dist/download"
}]
},
(他のプラットフォームは気にしません)
アプリに変更を加えて、バージョン1.0.1をアップロードしたいとします。誰かがすでにインストーラーをダウンロードして自分のマシンにアプリをインストールした場合、アプリを自動更新したいとします。
これまでに作成したものすべてが問題なく、次のステップが何かあれば教えてください。私は以下を検討します:
- 変更
version
に1.0.1
package.jsonで - ターミナルでビルドコマンドを再度実行する
- 新しいインストーラーをサーバーの同じ場所に手動でアップロードする
編集する
上記の3つのステップを実行し、新しいlatest.yml(バージョン1.0.1を使用)もアップロードしました。その結果、以前にインストールされた(新しいバージョンをサーバーにアップロードする前に)バージョン1.0.0を他のPCで実行した場合、実行されません。サーバーに1.0.1を追加したことを検出します。サーバーが更新されないか、ポップアップなどが表示されません。私は何を間違っていますか?
編集2
私はそれを自分で解決しようとしています、そして今私は1.0.2をアップロードしたので、アプリをダウンロードするためのリンクは次のとおりです:
https://quickmargo.pl/dist/download/quickmargo Setup 1.0.2.exe
編集3
index.jsでコードを編集した自分で解決しようとしていました。上記も編集しました。alert('Update required!');
上のupdate-available
イベントoccureことはありません。アラートが未定義であることを示すエラーメッセージウィンドウが表示されます。しかし、どうやらupdate-availableイベントは決して発行されません。
追加情報:
- 私のアプリはvue-electron
v1.0.6
ボイラープレートで生成されました。 - 私のelectron-updaterバージョンは
4.1.2
npm run build
実際にあるボイラープレートからいくつかのコードを呼び出し.electron-vue/build.js
ます。上記のリンクでこのファイルを確認できます(たとえば、NODE_ENVを本番に設定します。package.jsonのスクリプトは次のとおり"build": "node .electron-vue/build.js && electron-builder",
です:。- 私のリポジトリはプライベートなので、githubでリリースをホストしたくありません。electron.build ドキュメントで、私がそれを行うべきではない情報をいくつか見ました。
- また、リリースでのみ新しいリポジトリを作成できるという情報をいくつかの問題で見ましたが、よりクリーンなアプローチとして、自分のサーバーですべてをホストすることを検討しています。
electron-log
、ロガーを使用してautoUpdater に使用するロガーを与えます(const logger = require("electron-log"); autoUpdater.logger = logger; logger.transports.file.level = "debug";
)-これにより、情報が出力されますサーバーが見つかり、更新が見つかったかどうか。エラーが発生した場合は、質問に追加できます。