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
처리 구현
설치를 위한 처리를 추가한다.
index.html<!-- インストールボタンを設置する -->
<button type="button" onclick="window.install()">インストール</button>
renderer.jsconst {ipcRenderer} = require('electron');
window.install = function () {
// インストール処理の開始(メインプロセスに投げる)
ipcRenderer.send('install');
}
ipcRenderer.on('installed', () => {
window.alert('インストール成功');
});
ipcRenderer.on('installfailed', () => {
window.alert('インストール失敗');
});
main.jsconst 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 기술 사용해 페이지를 장식해 주면 좋다.
Reference
이 문제에 관하여(Electron을 사용하여 Photoshop용 Extension 설치 프로그램 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/dockurage/items/0842b7f3168a5333d0b0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
앱 아래 준비
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
처리 구현
설치를 위한 처리를 추가한다.
index.html
<!-- インストールボタンを設置する -->
<button type="button" onclick="window.install()">インストール</button>
renderer.js
const {ipcRenderer} = require('electron');
window.install = function () {
// インストール処理の開始(メインプロセスに投げる)
ipcRenderer.send('install');
}
ipcRenderer.on('installed', () => {
window.alert('インストール成功');
});
ipcRenderer.on('installfailed', () => {
window.alert('インストール失敗');
});
main.js
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 기술 사용해 페이지를 장식해 주면 좋다.
Reference
이 문제에 관하여(Electron을 사용하여 Photoshop용 Extension 설치 프로그램 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/dockurage/items/0842b7f3168a5333d0b0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Electron을 사용하여 Photoshop용 Extension 설치 프로그램 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/dockurage/items/0842b7f3168a5333d0b0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)