Electron を使って Photoshop 用 Extension のインストーラを作る
はじめに
Photoshop CC 2015 より Adobe の方針で ExtensionManager がサポートされなくなったため、どうにもインストールが面倒くさい。
公式では Adobe Add-ons を推奨していたが、正しく動作せず断念した。
(インストールボタンを押してもなぜかインストールされない...)
そこで Electron の勉強がてらインストーラを作ってみることにする。
手順
アプリの下準備
Electron の雛形アプリを作成する。
git clone https://github.com/electron/electron-quick-start
cd electron-quick-start
npm install
適当な場所にインストールさせたい zxp を置く。
.
├── LICENSE.md
├── README.md
│
│ # こんな感じにエクステンションを設置する。
├── extension
│ └── extension.zxp
│
├── index.html
├── main.js
├── node_modules
├── package.json
└── renderer.js
Adobe からインストール用の ツールを手にいれる。
適当な場所にツールを置く。
.
├── LICENSE.md
├── README.md
│
│ # こんな感じで設置する。
├── bin
│ ├── mac # Mac用
│ │ └── Contents
│ └── win # Win用
│ ├── ExManBridgeTalkCmd.exe
│ ├── ExManCmd.exe
│ ├── ExManCoreLib.dll
│ ├── ExManCoreLib.lib
│ ├── ExManEscalatedPrivilegeServer.exe
│ ├── ExManZxpSign.dll
│ ├── IMSLib.dll
│ ├── VulcanMessage4.dll
│ ├── XManConfig.xml
│ ├── adobe_caps.dll
│ ├── libeay32.dll
│ └── ssleay32.dll
│
├── extensions
│ └── extension.zxp
├── index.html
├── main.js
├── node_modules
├── package.json
└── renderer.js
処理の実装
インストール用の処理を追加する。
<!-- インストールボタンを設置する -->
<button type="button" onclick="window.install()">インストール</button>
const {ipcRenderer} = require('electron');
window.install = function () {
// インストール処理の開始(メインプロセスに投げる)
ipcRenderer.send('install');
}
ipcRenderer.on('installed', () => {
window.alert('インストール成功');
});
ipcRenderer.on('installfailed', () => {
window.alert('インストール失敗');
});
const path = require('path');
const {ipcMain} = require('electron');
// 環境ごとのコマンド情報
function cmd () {
var path;
switch (process.platform) {
case 'darwin':
path = './bin/mac/Contents/MacOS/ExManCmd';
break;
case 'win32':
case 'win64':
path = './bin/win/ExManCmd.exe';
break;
}
return path;
}
// インストール実行処理
function install (zxpPath, callback, errorCallback) {
var cmdPrefix = (process.platform == 'darwin') ? '--' : '/';
var spawn = require('child_process').spawn(
path.join(__dirname, cmd()), [cmdPrefix + 'install', zxpPath]
);
spawn.on('exit',function(code){
if (code == 0) {
callback && callback();
} else {
errorCallback && errorCallback(code);
}
});
}
ipcMain.on('install', (e, args) => {
install(
__dirname + '/extension/extension.zxp',
() => {
e.sender.send('installed');
},
(code) => {
e.sender.send('installfailed', code);
}
);
});
アプリ化
Electron Packager をインストール
npm install electron-packager -g
Electron Packager を使ってアプリ化
# electron-packager <sourcedir> <appname> --platform=<platform> --arch=<arch> --version=<version>
electron-packager . extension --platform=darwin,win32 --arch=x64 --version=1.2.2
確認
アプリを起動して「インストール」ボタンをクリックするとエクステンションがインストールされる。
機能としては動作しているが、殺風景なので Web 技術使ってページを装飾してやると良さげ。
Author And Source
この問題について(Electron を使って Photoshop 用 Extension のインストーラを作る), 我々は、より多くの情報をここで見つけました https://qiita.com/dockurage/items/0842b7f3168a5333d0b0著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .