ååã®èšäºãelectron-builderã䜿ã£ãŠvueã¢ããªã±ãŒã·ã§ã³ã®ããã±ãŒãžãäœæãã®ç¶ãã§ããååã¯vue+electronãšããŠã®æ§ç¯æ¹æ³ã§ãããä»åã¯
- ã³ãŒãèå(Mac)
- AutoUpdateæå®
- Publishæå®
ã®è§£èª¬ã§ããelectronåäœã®èªåã¢ããããŒãã®èšå®ãšããŠç¬ç«ããŠããèšäºã«ãªã£ãŠããŸãã
ã¯ããã«ãelectron-packagerã®é ã¯Macçšã®èªåã¢ããããŒã察å¿ã«ã¯ããã±ãŒãžé åžçšã®ãµãŒããŒãå¿ èŠã§ãããããã±ãŒãžã眮ãçšé+ããŒãžã§ã³æ å ±ããææ°ã®ããã±ãŒãžæ å ±ãjsonã§è¿åŽãããµãŒããŒãã
ãã®ããæåæãšããŠã¯Lambdaã䜿çšããŠs3ã®ããŠã³ããŒãURLãè¿åŽããèšå®ãå¿ èŠã ã£ãã®ã§ãããelectron-builder(æ£ç¢ºã«ã¯electron-updaterã®æ©èœ)ãªãããã¯äžèŠã«ãªããŸãããã«ãæã«äœæãããymlãã¡ã€ã«ãèªã¿åã£ãŠã¢ããããŒãã®å¯åŠãå€å®ããã®ã§ãéçãã¡ã€ã«ã®ãã¹ãã£ã³ã°ããã§ããã°è¯ãã®ã§s3ãgithubã®ãªãªãŒã¹æ©èœã®ã¿ã§electronã®èªåã¢ããããŒãã«å¯Ÿå¿ããããšãã§ããŸãã
é¢åãªãµãŒããŒã»ããã£ã³ã°ãå¿ èŠãªããèªåã¢ããããŒãã«å¯Ÿå¿åºæ¥ãããã«ãªãã®ã§ãã²äœ¿ã£ãŠãããŸãããã
ã³ãŒãèå(Mac)
Macçšã¢ããªã±ãŒã·ã§ã³ã§ã¯ã³ãŒãèåãããªããšèªåã¢ããããŒãããããŸãããã³ãŒãèåãããã«ã¯Apple Developer Programã«ç»é²ããŠxcodeã§macOSçšã®ãDeveloper ID ApplicationããäœæããŠããã°ãã«ãæã«èªåã§èåããŠãããŸããã¡ãªã¿ã«Macç°å¢ã§ã®ãã«ããå¿ é &èªåã¢ããããŒã察å¿ããããšMacAppã¹ãã¢ã§é åžã¯ã§ããŸããã

å
¬åŒããã¥ã¡ã³ãããŒãž: https://www.electron.build/code-signing
AutoUpdateæå®
electronã®èªåã¢ããããŒããããèšå®ã远å ããŸãããŸãã¯å¿ èŠããã±ãŒãžã®ã€ã³ã¹ããŒã«
npm i --save electron-updater
npm i --save electron-log
å ¬åŒãµã³ãã«ãããžã§ã¯ãã®å¯Ÿè±¡ã³ãŒãã ãå¥ãã¡ã€ã«ã«åããŠä¿å
# src/auto-update.js
import { app } from 'electron';
import log from 'electron-log';
import { autoUpdater } from 'electron-updater';
autoUpdater.logger = log;
autoUpdater.logger.transports.file.level = 'info';
log.info('App starting...');
function sendStatusToWindow(text) {
log.info(text);
}
autoUpdater.on('checking-for-update', () => {
sendStatusToWindow('Checking for update...');
})
autoUpdater.on('update-available', (info) => {
sendStatusToWindow('Update available.');
})
autoUpdater.on('update-not-available', (info) => {
sendStatusToWindow('Update not available.');
})
autoUpdater.on('error', (err) => {
sendStatusToWindow('Error in auto-updater. ' + err);
})
autoUpdater.on('download-progress', (progressObj) => {
let log_message = "Download speed: " + progressObj.bytesPerSecond;
log_message = log_message + ' - Downloaded ' + progressObj.percent + '%';
log_message = log_message + ' (' + progressObj.transferred + "/" + progressObj.total + ')';
sendStatusToWindow(log_message);
})
autoUpdater.on('update-downloaded', (info) => {
sendStatusToWindow('Update downloaded');
});
app.on('ready', async () => {
autoUpdater.checkForUpdatesAndNotify();
})
electronã®mainãã¡ã€ã«ã§äžèšã®ãã¡ã€ã«ãimportããã°å®äºã§ãã
import './auto-update';
èªåã¢ããããŒã察象ã®ããã±ãŒãžããŠã³ããŒãURLã¯åŸè¿°ããPublishèšå®ãè¡ãã°äžèŠã§ããã¢ããããŒãåŠçã®ãã°åºãã¯ä»¥äžã®ãã¹ã«åºåãããŸãã
* on Linux: ~/.config/<app name>/log.log
* on OS X: ~/Library/Logs/<app name>/log.log
* on Windows: %USERPROFILE%\AppData\Roaming\<app name>\log.log
äžèšã®ãµã³ãã«ãããžã§ã¯ãã®æåã ãš
- èµ·åæã«ã¢ããããŒãåºæ¥ãããã§ãã¯
- ã¢ããããŒãåºæ¥ãã®ã§ããã°éç¥&ããŠã³ããŒã
- ããŠã³ããŒãçµäº
- 次åèµ·åæã«é©å¿ããã
ãšããæµãã«ãªããŸããå®éã«éç¥ãããå 容ã¯ãã¡ã

ããŠã³ããŒãçã®ãã³ããªã³ã°ããããã®ã§ããã°å ¬åŒã®ããã¥ã¡ã³ãããŒãžã«èšèŒãããŠããAPIã䜿ãåããŸãããã
å ¬åŒããã¥ã¡ã³ãããŒãž: https://www.electron.build/auto-update
Publishæå®
å ¬éæå®ã§ããå ¬éå ã¯providerãšããŠäœçš®é¡ããããŸãã詊ããã®ã¯ä»¥äžã®3çš®é¡
- generare
- å°çšãµãŒããŒçããã¹ãã£ã³ã°å ãç¬èªã«èšå®ããå Žåã«æå®ã
- ã¢ããããŒãã¯ãã«ãå®äºåŸã«èªåã§è¡ãã
- s3
- awsã®éçãã¡ã€ã«ãã¹ãã£ã³ã°ãµãŒãã¹ã
- èªåã§ã¢ããããŒãããŠããã
- ãã±ããã®äœæ&ãã±ããããªã·ãŒã®å€æŽããããããå¿ èŠ
- github
- githubã®ãªãªãŒã¹æ©èœã«èªåã§ã¢ããããŒãããŠãããã
generateãæ±çšçã«äœ¿çšã§ããããã¢ããããŒãã¯ããŠãããªããs3ãgithubã§èŠä»¶ãæºãããã®ã§ããã°äœ¿çšããæ¹ãåŸã§ãã
ãã«ãæã®ã³ãã³ãã©ã€ã³ãªãã·ã§ã³ã«
--publish always
çã远å ããããšã§publish
ãªãã·ã§ã³æå®ã§ã¢ããããŒããªããå®è¡ãããŸããã¡ãªã¿ã«äžèšã®èšå®ã¯åžžã«ãã«ãææç©ãã¢ããããŒãããŸãã
s3ã®èšå®äŸãšããŠã¯ä»¥äžããªãã·ã§ã³æå®ããå Žå
publish: {
provider: 's3',
bucket: 'example-vue-electron',
region: 'ap-northeast-1',
},
ãã±ããexample-vue-electronãäœæåŸããããªãã¯ã¢ã¯ã»ã¹èšå®ã以äžã«èšå®ãè¡ã

ã¢ããããŒãæã«å
¬éèšå®ããããã®ã§äºåæºåã¯ä»¥äžã§çµäºã
ãã«ãæã«AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
ã®envæå®ãè¡ãã°å¯Ÿè±¡ã®ãã±ããã«ã¢ããããŒããããŸãã
githubã®èšå®äŸã¯ãªãã·ã§ã³èšå®ããã®å Žå
publish: {
provider: 'github'
}
ã¢ããããŒãçšã®ããŒã¯ã³ããã®ããŒãžã§repoã®æ¬ã«ãã§ãã¯ããŠååŸ https://github.com/settings/tokens/new

GH_TOKEN
ã®envãæå®ããã«ãããã°ã¢ããããŒããããŸãã
å ¬åŒããã¥ã¡ã³ãããŒãž: https://www.electron.build/configuration/publish
ãŸãšã
åååæ§è©Šäœãããããžã§ã¯ãã¯githubã«äžãã£ãŠããŸã https://github.com/soramugi/example-vue-electron
travisã®èšå®ã詊ããŠã¿ãã®ã§ããp12ãã¡ã€ã«ã®èšå®ãããŸãåºæ¥ãŠããªãã®ã§Macçã®èªåã¢ããããŒãã倱æããç¶æ ã«ãªã£ãŠããŸãã https://travis-ci.org/soramugi/example-vue-electron ãã®ãã¡èšå®ã§ããããã«ããããšããã§ãããèªåã®èŠä»¶ã ãštravisãŸã§ã¯èšå®ããªããŠãè¯ãããªãšãäžæºåã°ããã§ã¯ãªãåãã¢ããªã±ãŒã·ã§ã³äœãããæ¬²æ±ãåºãŠããŸããã
electron-builderã¯äŸ¿å©ã§ããè€éåããŠããelectronã®ãã«ãç°å¢ãç°¡çŽ ã«ããŠãããæäžäž»ã§ããã§ãããããäžã«ã¯electron-packagerã®æ å ±ã°ããã§éåžžã«ãã£ãããªããã¿ãªãã䜿ã£ãŠãããŸãããã