📝 Fix grammatical issue
[ci skip]
This commit is contained in:
parent
3ebf0fd335
commit
6176f65759
37 changed files with 247 additions and 247 deletions
|
@ -22,10 +22,10 @@ Electron에 대해 자주 묻는 질문이 있습니다. 이슈를 생성하기
|
|||
* [지원하는 플랫폼](tutorial/supported-platforms.md)
|
||||
* [보안](tutorial/security.md)
|
||||
* [Electron 버전 관리](tutorial/electron-versioning.md)
|
||||
* [어플리케이션 배포](tutorial/application-distribution.md)
|
||||
* [Mac 앱스토어 어플리케이션 제출 가이드](tutorial/mac-app-store-submission-guide.md)
|
||||
* [애플리케이션 배포](tutorial/application-distribution.md)
|
||||
* [Mac 앱스토어 애플리케이션 제출 가이드](tutorial/mac-app-store-submission-guide.md)
|
||||
* [Windows 스토어 가이드](tutorial/windows-store-guide.md)
|
||||
* [어플리케이션 패키징](tutorial/application-packaging.md)
|
||||
* [애플리케이션 패키징](tutorial/application-packaging.md)
|
||||
* [네이티브 Node 모듈 사용하기](tutorial/using-native-node-modules.md)
|
||||
* [메인 프로세스 디버깅하기](tutorial/debugging-main-process.md)
|
||||
* [Selenium 과 WebDriver 사용하기](tutorial/using-selenium-and-webdriver.md)
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# app
|
||||
|
||||
> 어플리케이션의 이벤트 생명주기를 제어합니다.
|
||||
> 애플리케이션의 이벤트 생명주기를 제어합니다.
|
||||
|
||||
밑의 예시는 마지막 윈도우가 종료되었을 때, 어플리케이션을 종료시키는 예시입니다:
|
||||
밑의 예시는 마지막 윈도우가 종료되었을 때, 애플리케이션을 종료시키는 예시입니다:
|
||||
|
||||
```javascript
|
||||
const {app} = require('electron');
|
||||
|
@ -17,7 +17,7 @@ app.on('window-all-closed', () => {
|
|||
|
||||
### Event: 'will-finish-launching'
|
||||
|
||||
어플리케이션이 기본적인 시작 준비를 마치면 발생하는 이벤트입니다.
|
||||
애플리케이션이 기본적인 시작 준비를 마치면 발생하는 이벤트입니다.
|
||||
Windows, Linux 운영체제에서의 `will-finish-launching` 이벤트는 `ready` 이벤트와
|
||||
동일합니다. OS X에서의 이벤트는 `NSApplication`의
|
||||
`applicationWillFinishLaunching`에 대한 알림으로 표현됩니다. 대개 이곳에서
|
||||
|
@ -41,8 +41,8 @@ Electron은 먼저 모든 윈도우의 종료를 시도하고 `will-quit` 이벤
|
|||
그리고 `will-quit` 이벤트가 발생했을 땐 `window-all-closed` 이벤트가 발생하지
|
||||
않습니다.
|
||||
|
||||
**역주:** 이 이벤트는 말 그대로 현재 어플리케이션에서 윈도우만 완전히 종료됬을 때
|
||||
발생하는 이벤트입니다. 따라서 어플리케이션을 완전히 종료하려면 이 이벤트에서
|
||||
**역주:** 이 이벤트는 말 그대로 현재 애플리케이션에서 윈도우만 완전히 종료됬을 때
|
||||
발생하는 이벤트입니다. 따라서 애플리케이션을 완전히 종료하려면 이 이벤트에서
|
||||
`app.quit()`를 호출해 주어야 합니다.
|
||||
|
||||
### Event: 'before-quit'
|
||||
|
@ -51,9 +51,9 @@ Returns:
|
|||
|
||||
* `event` Event
|
||||
|
||||
어플리케이션 윈도우들이 닫히기 시작할 때 발생하는 이벤트입니다.
|
||||
애플리케이션 윈도우들이 닫히기 시작할 때 발생하는 이벤트입니다.
|
||||
`event.preventDefault()` 호출은 이벤트의 기본 동작을 방지하기 때문에
|
||||
이를 통해 어플리케이션의 종료를 방지할 수 있습니다.
|
||||
이를 통해 애플리케이션의 종료를 방지할 수 있습니다.
|
||||
|
||||
### Event: 'will-quit'
|
||||
|
||||
|
@ -61,8 +61,8 @@ Returns:
|
|||
|
||||
* `event` Event
|
||||
|
||||
모든 윈도우들이 종료되고 어플리케이션이 종료되기 시작할 때 발생하는 이벤트입니다.
|
||||
`event.preventDefault()` 호출을 통해 어플리케이션의 종료를 방지할 수 있습니다.
|
||||
모든 윈도우들이 종료되고 애플리케이션이 종료되기 시작할 때 발생하는 이벤트입니다.
|
||||
`event.preventDefault()` 호출을 통해 애플리케이션의 종료를 방지할 수 있습니다.
|
||||
|
||||
`will-quit` 와 `window-all-closed` 이벤트의 차이점을 확인하려면 `window-all-closed`
|
||||
이벤트의 설명을 참고하세요.
|
||||
|
@ -74,7 +74,7 @@ Returns:
|
|||
* `event` Event
|
||||
* `exitCode` Integer
|
||||
|
||||
어플리케이션이 종료될 때 발생하는 이벤트입니다.
|
||||
애플리케이션이 종료될 때 발생하는 이벤트입니다.
|
||||
|
||||
### Event: 'open-file' _OS X_
|
||||
|
||||
|
@ -83,12 +83,12 @@ Returns:
|
|||
* `event` Event
|
||||
* `path` String
|
||||
|
||||
사용자가 어플리케이션을 통해 파일을 열고자 할 때 발생하는 이벤트입니다.
|
||||
사용자가 애플리케이션을 통해 파일을 열고자 할 때 발생하는 이벤트입니다.
|
||||
|
||||
`open-file` 이벤트는 보통 어플리케이션이 열려 있을 때 OS가 파일을 열기 위해
|
||||
어플리케이션을 재사용할 때 발생합니다. 이 이벤트는 파일을 dock에 떨어트릴 때,
|
||||
어플리케이션이 실행되기 전에도 발생합니다. 따라서 이 이벤트를 제대로 처리하려면
|
||||
`open-file` 이벤트 핸들러를 어플리케이션이 시작하기 전에 등록해 놓았는지 확실히
|
||||
`open-file` 이벤트는 보통 애플리케이션이 열려 있을 때 OS가 파일을 열기 위해
|
||||
애플리케이션을 재사용할 때 발생합니다. 이 이벤트는 파일을 dock에 떨어트릴 때,
|
||||
애플리케이션이 실행되기 전에도 발생합니다. 따라서 이 이벤트를 제대로 처리하려면
|
||||
`open-file` 이벤트 핸들러를 애플리케이션이 시작하기 전에 등록해 놓았는지 확실히
|
||||
확인해야 합니다. (`ready` 이벤트가 발생하기 전에)
|
||||
|
||||
이 이벤트를 처리할 땐 반드시 `event.preventDefault()`를 호출해야 합니다.
|
||||
|
@ -102,9 +102,9 @@ Returns:
|
|||
* `event` Event
|
||||
* `url` String
|
||||
|
||||
유저가 어플리케이션을 통해 URL을 열고자 할 때 발생하는 이벤트입니다.
|
||||
유저가 애플리케이션을 통해 URL을 열고자 할 때 발생하는 이벤트입니다.
|
||||
|
||||
어플리케이션에서 URL을 열기 위해 반드시 URL 스킴이 등록되어 있어야 합니다.
|
||||
애플리케이션에서 URL을 열기 위해 반드시 URL 스킴이 등록되어 있어야 합니다.
|
||||
|
||||
이 이벤트를 처리할 땐 반드시 `event.preventDefault()`를 호출해야 합니다.
|
||||
|
||||
|
@ -115,8 +115,8 @@ Returns:
|
|||
* `event` Event
|
||||
* `hasVisibleWindows` Boolean
|
||||
|
||||
어플리케이션이 활성화 되었을 때 발생하는 이벤트입니다. 이 이벤트는 사용자가
|
||||
어플리케이션의 dock 아이콘을 클릭했을 때 주로 발생합니다.
|
||||
애플리케이션이 활성화 되었을 때 발생하는 이벤트입니다. 이 이벤트는 사용자가
|
||||
애플리케이션의 dock 아이콘을 클릭했을 때 주로 발생합니다.
|
||||
|
||||
### Event: 'continue-activity' _OS X_
|
||||
|
||||
|
@ -131,9 +131,9 @@ Returns:
|
|||
발생하는 이벤트입니다. 이 이벤트를 처리하려면 반드시 `event.preventDefault()`를
|
||||
호출해야 합니다.
|
||||
|
||||
사용자 activity는 activity의 소스 어플리케이션과 같은 개발자 팀 ID를 가지는
|
||||
어플리케이션 안에서만 재개될 수 있고, activity의 타입을 지원합니다. 지원하는
|
||||
activity의 타입은 어플리케이션 `Info.plist`의 `NSUserActivityTypes` 키에 열거되어
|
||||
사용자 activity는 activity의 소스 애플리케이션과 같은 개발자 팀 ID를 가지는
|
||||
애플리케이션 안에서만 재개될 수 있고, activity의 타입을 지원합니다. 지원하는
|
||||
activity의 타입은 애플리케이션 `Info.plist`의 `NSUserActivityTypes` 키에 열거되어
|
||||
있습니다.
|
||||
|
||||
### Event: 'browser-window-blur'
|
||||
|
@ -265,7 +265,7 @@ GPU가 작동하던 중 크래시가 일어났을 때 발생하는 이벤트입
|
|||
|
||||
모든 윈도우 종료를 시도합니다. `before-quit` 이벤트가 먼저 발생합니다.
|
||||
모든 윈도우가 성공적으로 종료되면 `will-quit` 이벤트가 발생하고 기본 동작에 따라
|
||||
어플리케이션이 종료됩니다.
|
||||
애플리케이션이 종료됩니다.
|
||||
|
||||
이 함수는 모든 `beforeunload`와 `unload` 이벤트 핸들러가 제대로 실행됨을 보장합니다.
|
||||
`beforeunload` 이벤트 핸들러에서 `false`를 반환했을 때 윈도우 종료가 취소 될 수
|
||||
|
@ -275,7 +275,7 @@ GPU가 작동하던 중 크래시가 일어났을 때 발생하는 이벤트입
|
|||
|
||||
* `exitCode` Integer
|
||||
|
||||
`exitCode`와 함께 어플리케이션을 즉시 종료합니다.
|
||||
`exitCode`와 함께 애플리케이션을 즉시 종료합니다.
|
||||
|
||||
모든 윈도우는 사용자의 동의 여부에 상관없이 즉시 종료되며 `before-quit` 이벤트와
|
||||
`will-quit` 이벤트가 발생하지 않습니다.
|
||||
|
@ -286,20 +286,20 @@ GPU가 작동하던 중 크래시가 일어났을 때 발생하는 이벤트입
|
|||
* `args` Array (optional)
|
||||
* `execPath` String (optional)
|
||||
|
||||
현재 인스턴스가 종료되면 어플리케이션을 재시작합니다.
|
||||
현재 인스턴스가 종료되면 애플리케이션을 재시작합니다.
|
||||
|
||||
기본적으로 새 인스턴스는 같은 작업 디렉토리의 것과 함께 현재 인스턴스의 명령줄 인수를
|
||||
사용합니다. 만약 `args`가 지정되면, `args`가 기본 명령줄 인수 대신에 전달됩니다.
|
||||
`execPath`가 지정되면, 현재 어플리케이션 대신 `execPath`가 실행됩니다.
|
||||
`execPath`가 지정되면, 현재 애플리케이션 대신 `execPath`가 실행됩니다.
|
||||
|
||||
참고로 이 메서드는 어플리케이션을 종료하지 않으며, 어플리케이션을 다시 시작시키려면
|
||||
참고로 이 메서드는 애플리케이션을 종료하지 않으며, 애플리케이션을 다시 시작시키려면
|
||||
`app.relaunch`를 호출한 후 `app.quit` 또는 `app.exit`를 실행해주어야 합니다.
|
||||
|
||||
`app.relaunch`가 여러 번 호출되면, 현재 인스턴스가 종료된 후 여러 인스턴스가
|
||||
시작됩니다.
|
||||
|
||||
다음은 현재 인스턴스를 즉시 종료시킨 후 새로운 명령줄 인수를 추가하여 새
|
||||
인스턴스의 어플리케이션을 실행하는 예시입니다:
|
||||
인스턴스의 애플리케이션을 실행하는 예시입니다:
|
||||
|
||||
```javascript
|
||||
app.relaunch({args: process.argv.slice(1) + ['--relaunch']})
|
||||
|
@ -308,20 +308,20 @@ app.exit(0)
|
|||
|
||||
### `app.focus()`
|
||||
|
||||
Linux에선, 첫 번째로 보여지는 윈도우가 포커스됩니다. OS X에선, 어플리케이션을 활성화
|
||||
앱 상태로 만듭니다. Windows에선, 어플리케이션의 첫 윈도우에 포커스 됩니다.
|
||||
Linux에선, 첫 번째로 보여지는 윈도우가 포커스됩니다. OS X에선, 애플리케이션을 활성화
|
||||
앱 상태로 만듭니다. Windows에선, 애플리케이션의 첫 윈도우에 포커스 됩니다.
|
||||
|
||||
### `app.hide()` _OS X_
|
||||
|
||||
최소화를 하지 않고 어플리케이션의 모든 윈도우들을 숨깁니다.
|
||||
최소화를 하지 않고 애플리케이션의 모든 윈도우들을 숨깁니다.
|
||||
|
||||
### `app.show()` _OS X_
|
||||
|
||||
숨긴 어플리케이션 윈도우들을 다시 보이게 만듭니다. 자동으로 포커스되지 않습니다.
|
||||
숨긴 애플리케이션 윈도우들을 다시 보이게 만듭니다. 자동으로 포커스되지 않습니다.
|
||||
|
||||
### `app.getAppPath()`
|
||||
|
||||
현재 어플리케이션의 디렉터리를 반환합니다.
|
||||
현재 애플리케이션의 디렉터리를 반환합니다.
|
||||
|
||||
### `app.getPath(name)`
|
||||
|
||||
|
@ -335,12 +335,12 @@ Linux에선, 첫 번째로 보여지는 윈도우가 포커스됩니다. OS X에
|
|||
`name`은 다음 목록에 있는 경로 중 하나를 선택해 사용할 수 있습니다:
|
||||
|
||||
* `home` - 사용자의 홈 디렉터리.
|
||||
* `appData` - 각 사용자의 어플리케이션 데이터 디렉터리. 기본 경로는 다음과 같습니다:
|
||||
* `appData` - 각 사용자의 애플리케이션 데이터 디렉터리. 기본 경로는 다음과 같습니다:
|
||||
* `%APPDATA%` - Windows
|
||||
* `$XDG_CONFIG_HOME` 또는 `~/.config` - Linux
|
||||
* `~/Library/Application Support` - OS X
|
||||
* `userData` - 어플리케이션의 설정을 저장하는 디렉터리.
|
||||
이 디렉터리는 기본적으로 `appData`에 어플리케이션 이름으로 생성된 폴더가 지정됩니다.
|
||||
* `userData` - 애플리케이션의 설정을 저장하는 디렉터리.
|
||||
이 디렉터리는 기본적으로 `appData`에 애플리케이션 이름으로 생성된 폴더가 지정됩니다.
|
||||
* `temp` - 임시 폴더 디렉터리.
|
||||
* `userDesktop` - 현재 사용자의 데스트탑 디렉터리.
|
||||
* `exe` - 현재 실행중인 Electron 바이너리 파일.
|
||||
|
@ -369,29 +369,29 @@ Linux에선, 첫 번째로 보여지는 윈도우가 포커스됩니다. OS X에
|
|||
|
||||
### `app.getVersion()`
|
||||
|
||||
로드된 어플리케이션의 버전을 반환합니다.
|
||||
로드된 애플리케이션의 버전을 반환합니다.
|
||||
|
||||
만약 `package.json` 파일에서 어플리케이션의 버전을 찾을 수 없는 경우, 현재 번들 또는
|
||||
만약 `package.json` 파일에서 애플리케이션의 버전을 찾을 수 없는 경우, 현재 번들 또는
|
||||
실행 파일의 버전을 반환합니다.
|
||||
|
||||
### `app.getName()`
|
||||
|
||||
`package.json`에서 기술된 현재 어플리케이션의 이름을 반환합니다.
|
||||
`package.json`에서 기술된 현재 애플리케이션의 이름을 반환합니다.
|
||||
|
||||
npm 모듈 규칙에 따라 대부분의 경우 `package.json`의 `name` 필드는 소문자 이름을
|
||||
사용합니다. 하지만 Electron은 `name`대신 `productName` 필드를 주로 사용하기 때문에
|
||||
반드시 이 필드도 같이 지정해야 합니다. 이 필드는 맨 앞글자가 대문자인 어플리케이션
|
||||
반드시 이 필드도 같이 지정해야 합니다. 이 필드는 맨 앞글자가 대문자인 애플리케이션
|
||||
전체 이름을 지정해야 합니다.
|
||||
|
||||
### `app.setName(name)`
|
||||
|
||||
* `name` String
|
||||
|
||||
현재 어플리케이션의 이름을 덮어씌웁니다.
|
||||
현재 애플리케이션의 이름을 덮어씌웁니다.
|
||||
|
||||
### `app.getLocale()`
|
||||
|
||||
현재 어플리케이션의 [로케일](https://ko.wikipedia.org/wiki/%EB%A1%9C%EC%BC%80%EC%9D%BC)을
|
||||
현재 애플리케이션의 [로케일](https://ko.wikipedia.org/wiki/%EB%A1%9C%EC%BC%80%EC%9D%BC)을
|
||||
반환합니다.
|
||||
|
||||
**참고:** 패키징된 앱을 배포할 때, `locales` 폴더도 같이 배포해야 합니다.
|
||||
|
@ -419,11 +419,11 @@ npm 모듈 규칙에 따라 대부분의 경우 `package.json`의 `name` 필드
|
|||
이 메서드는 지정한 프로토콜(URI scheme)에 대해 현재 실행파일을 기본 핸들러로
|
||||
등록합니다. 이를 통해 운영체제와 더 가깝게 통합할 수 있습니다. 한 번 등록되면,
|
||||
`your-protocol://`과 같은 모든 링크에 대해 호출시 현재 실행 파일이 실행됩니다.
|
||||
모든 링크, 프로토콜을 포함하여 어플리케이션의 인수로 전달됩니다.
|
||||
모든 링크, 프로토콜을 포함하여 애플리케이션의 인수로 전달됩니다.
|
||||
|
||||
**참고:** OS X에선, 어플리케이션의 `info.plist`에 등록해둔 프로토콜만 사용할 수
|
||||
**참고:** OS X에선, 애플리케이션의 `info.plist`에 등록해둔 프로토콜만 사용할 수
|
||||
있습니다. 이는 런타임에서 변경될 수 없습니다. 이 파일은 간단히 텍스트 에디터를
|
||||
사용하거나, 어플리케이션을 빌드할 때 스크립트가 생성되도록 할 수 있습니다. 자세한
|
||||
사용하거나, 애플리케이션을 빌드할 때 스크립트가 생성되도록 할 수 있습니다. 자세한
|
||||
내용은 [Apple의 참조 문서][CFBundleURLTypes]를 확인하세요.
|
||||
|
||||
이 API는 내부적으로 Windows 레지스트리와 LSSetDefaultHandlerForURLScheme를 사용합니다.
|
||||
|
@ -460,13 +460,13 @@ Windows에서 사용할 수 있는 JumpList의 [Tasks][tasks] 카테고리에 `t
|
|||
|
||||
`Task` Object:
|
||||
* `program` String - 실행할 프로그램의 경로.
|
||||
보통 현재 작동중인 어플리케이션의 경로인 `process.execPath`를 지정합니다.
|
||||
보통 현재 작동중인 애플리케이션의 경로인 `process.execPath`를 지정합니다.
|
||||
* `arguments` String - `program`이 실행될 때 사용될 명령줄 인수.
|
||||
* `title` String - JumpList에 표시할 문자열.
|
||||
* `description` String - 이 작업에 대한 설명.
|
||||
* `iconPath` String - JumpList에 표시될 아이콘의 절대 경로.
|
||||
아이콘을 포함하고 있는 임의의 리소스 파일을 사용할 수 있습니다.
|
||||
보통 어플리케이션의 아이콘을 그대로 사용하기 위해 `process.execPath`를 지정합니다.
|
||||
보통 애플리케이션의 아이콘을 그대로 사용하기 위해 `process.execPath`를 지정합니다.
|
||||
* `iconIndex` Integer - 아이콘 파일의 인덱스. 만약 아이콘 파일이 두 개 이상의
|
||||
아이콘을 가지고 있을 경우, 사용할 아이콘의 인덱스를 이 옵션으로 지정해 주어야 합니다.
|
||||
단, 아이콘을 하나만 포함하고 있는 경우 0을 지정하면 됩니다.
|
||||
|
@ -475,38 +475,38 @@ Windows에서 사용할 수 있는 JumpList의 [Tasks][tasks] 카테고리에 `t
|
|||
|
||||
* `callback` Function
|
||||
|
||||
현재 어플리케이션을 **Single Instance Application** 으로 만들어줍니다.
|
||||
이 메서드는 어플리케이션이 여러 번 실행됐을 때 다중 인스턴스가 생성되는 대신 한 개의
|
||||
현재 애플리케이션을 **Single Instance Application** 으로 만들어줍니다.
|
||||
이 메서드는 애플리케이션이 여러 번 실행됐을 때 다중 인스턴스가 생성되는 대신 한 개의
|
||||
주 인스턴스만 유지되도록 만들 수 있습니다. 이때 중복 생성된 인스턴스는 주 인스턴스에
|
||||
신호를 보내고 종료됩니다.
|
||||
|
||||
`callback`은 주 인스턴스가 생성된 이후 또 다른 인스턴스가 생성됐을 때
|
||||
`callback(argv, workingDirectory)` 형식으로 호출됩니다. `argv`는 두 번째 인스턴스의
|
||||
명령줄 인수이며 `workingDirectory`는 현재 작업중인 디렉터리입니다. 보통 대부분의
|
||||
어플리케이션은 이러한 콜백이 호출될 때 주 윈도우를 포커스하고 최소화되어있으면 창
|
||||
애플리케이션은 이러한 콜백이 호출될 때 주 윈도우를 포커스하고 최소화되어있으면 창
|
||||
복구를 실행합니다.
|
||||
|
||||
`callback`은 `app`의 `ready` 이벤트가 발생한 후 실행됨을 보장합니다.
|
||||
|
||||
이 메서드는 현재 실행된 어플리케이션이 주 인스턴스인 경우 `false`를 반환하고
|
||||
어플리케이션의 로드가 계속 진행 되도록 합니다. 그리고 두 번째 중복된 인스턴스 생성인
|
||||
이 메서드는 현재 실행된 애플리케이션이 주 인스턴스인 경우 `false`를 반환하고
|
||||
애플리케이션의 로드가 계속 진행 되도록 합니다. 그리고 두 번째 중복된 인스턴스 생성인
|
||||
경우 `true`를 반환합니다. (다른 인스턴스에 인수가 전달됬을 때) 이 불리언 값을 통해
|
||||
중복 생성된 인스턴스는 즉시 종료시켜야 합니다.
|
||||
|
||||
OS X에선 사용자가 Finder에서 어플리케이션의 두 번째 인스턴스를 열려고 했을 때 자동으로
|
||||
OS X에선 사용자가 Finder에서 애플리케이션의 두 번째 인스턴스를 열려고 했을 때 자동으로
|
||||
**Single Instance** 화 하고 `open-file`과 `open-url` 이벤트를 발생시킵니다. 그러나
|
||||
사용자가 어플리케이션을 CLI 터미널에서 실행하면 운영체제 시스템의 싱글 인스턴스
|
||||
사용자가 애플리케이션을 CLI 터미널에서 실행하면 운영체제 시스템의 싱글 인스턴스
|
||||
메커니즘이 무시되며 그대로 중복 실행됩니다. 따라서 OS X에서도 이 메서드를 통해 확실히
|
||||
중복 실행을 방지하는 것이 좋습니다.
|
||||
|
||||
다음 예시는 두 번째 인스턴스가 생성되었을 때 중복된 인스턴스를 종료하고 주 어플리케이션
|
||||
다음 예시는 두 번째 인스턴스가 생성되었을 때 중복된 인스턴스를 종료하고 주 애플리케이션
|
||||
인스턴스의 윈도우를 활성화 시키는 예시입니다:
|
||||
|
||||
```javascript
|
||||
let myWindow = null;
|
||||
|
||||
const shouldQuit = app.makeSingleInstance((commandLine, workingDirectory) => {
|
||||
// 어플리케이션을 중복 실행했습니다. 주 어플리케이션 인스턴스를 활성화 합니다.
|
||||
// 애플리케이션을 중복 실행했습니다. 주 애플리케이션 인스턴스를 활성화 합니다.
|
||||
if (myWindow) {
|
||||
if (myWindow.isMinimized()) myWindow.restore();
|
||||
myWindow.focus();
|
||||
|
@ -527,7 +527,7 @@ app.on('ready', () => {
|
|||
### `app.releaseSingleInstance()`
|
||||
|
||||
모든 `makeSingleInstance`에 의해 생성된 제한을 해제합니다. 이 메서드는 다시 여러
|
||||
인스턴스의 어플리케이션이 나란히 실행될 수 있도록 합니다.
|
||||
인스턴스의 애플리케이션이 나란히 실행될 수 있도록 합니다.
|
||||
|
||||
### `app.setUserActivity(type, userInfo[, webpageURL])` _OS X_
|
||||
|
||||
|
@ -548,7 +548,7 @@ app.on('ready', () => {
|
|||
|
||||
* `id` String
|
||||
|
||||
[어플리케이션의 사용자 모델 ID][app-user-model-id]를 `id`로 변경합니다.
|
||||
[애플리케이션의 사용자 모델 ID][app-user-model-id]를 `id`로 변경합니다.
|
||||
|
||||
### `app.importCertificate(options, callback)` _LINUX_
|
||||
|
||||
|
@ -565,7 +565,7 @@ pkcs12 형식으로된 인증서를 플랫폼 인증서 저장소로 가져옵
|
|||
|
||||
### `app.disableHardwareAcceleration()`
|
||||
|
||||
현재 어플리케이션의 하드웨어 가속을 비활성화합니다.
|
||||
현재 애플리케이션의 하드웨어 가속을 비활성화합니다.
|
||||
|
||||
이 메서드는 `app`의 `ready` 이벤트가 발생하기 전에만 호출할 수 있습니다.
|
||||
|
||||
|
@ -587,10 +587,10 @@ Chrominum의 명령줄에 인수를 추가합니다. 인수는 올바르게 인
|
|||
* `type` String (optional) - `critical` 또는 `informational`을 지정할 수 있습니다.
|
||||
기본값은 `informational` 입니다.
|
||||
|
||||
`critical`이 전달되면 dock 아이콘이 어플리케이션이 활성화되거나 요청이 중지되기 전까지
|
||||
`critical`이 전달되면 dock 아이콘이 애플리케이션이 활성화되거나 요청이 중지되기 전까지
|
||||
통통 튀는 바운스 효과를 적용합니다.
|
||||
|
||||
`informational`이 전달되면 dock 아이콘이 1초만 통통 튑니다. 하지만 어플리케이션이
|
||||
`informational`이 전달되면 dock 아이콘이 1초만 통통 튑니다. 하지만 애플리케이션이
|
||||
활성화되거나 요청이 중지되기 전까지 요청은 계속 활성화로 유지 됩니다.
|
||||
|
||||
또한 요청을 취소할 때 사용할 수 있는 ID를 반환합니다.
|
||||
|
@ -629,7 +629,7 @@ dock 아이콘을 표시합니다.
|
|||
|
||||
* `menu` [Menu](menu.md)
|
||||
|
||||
어플리케이션의 [dock menu][dock-menu]를 설정합니다.
|
||||
애플리케이션의 [dock menu][dock-menu]를 설정합니다.
|
||||
|
||||
### `app.dock.setIcon(image)` _OS X_
|
||||
|
||||
|
|
|
@ -1,17 +1,17 @@
|
|||
# autoUpdater
|
||||
|
||||
> 어플리케이션이 자동으로 업데이트를 진행할 수 있도록 기능을 활성화합니다.
|
||||
> 애플리케이션이 자동으로 업데이트를 진행할 수 있도록 기능을 활성화합니다.
|
||||
|
||||
`autoUpdater` 모듈은 [Squirrel](https://github.com/Squirrel) 프레임워크에 대한
|
||||
인터페이스를 제공합니다.
|
||||
|
||||
다음 프로젝트 중 하나를 선택하여, 어플리케이션을 배포하기 위한 멀티-플랫폼 릴리즈
|
||||
다음 프로젝트 중 하나를 선택하여, 애플리케이션을 배포하기 위한 멀티-플랫폼 릴리즈
|
||||
서버를 손쉽게 구축할 수 있습니다:
|
||||
|
||||
- [nuts][nuts]: *어플리케이션을 위한 똑똑한 릴리즈 서버이며 GitHub를 백엔드로
|
||||
- [nuts][nuts]: *애플리케이션을 위한 똑똑한 릴리즈 서버이며 GitHub를 백엔드로
|
||||
사용합니다. Squirrel을 통해 자동 업데이트를 지원합니다. (Mac & Windows)*
|
||||
- [electron-release-server][electron-release-server]: *완벽하게 모든 기능을
|
||||
지원하는 electron 어플리케이션을 위한 자가 호스트 릴리즈 서버입니다. auto-updater와
|
||||
지원하는 electron 애플리케이션을 위한 자가 호스트 릴리즈 서버입니다. auto-updater와
|
||||
호환됩니다*
|
||||
- [squirrel-updates-server][squirrel-updates-server]: *GitHub 릴리즈를 사용하는
|
||||
Squirrel.Mac 와 Squirrel.Windows를 위한 간단한 node.js 기반 서버입니다*
|
||||
|
@ -32,20 +32,20 @@ OS X에선 `auto-updater` 모듈이 [Squirrel.Mac][squirrel-mac]를 기반으로
|
|||
|
||||
### Windows
|
||||
|
||||
Windows에선 `auto-updater` 모듈을 사용하기 전에 어플리케이션을 사용자의 장치에
|
||||
설치해야 합니다. [grunt-electron-installer][installer]를 사용하여 어플리케이션
|
||||
Windows에선 `auto-updater` 모듈을 사용하기 전에 애플리케이션을 사용자의 장치에
|
||||
설치해야 합니다. [grunt-electron-installer][installer]를 사용하여 애플리케이션
|
||||
인스톨러를 만드는 것을 권장합니다.
|
||||
|
||||
Windows에선 `autoUpdater` 모듈을 사용하기 전에 사용자의 장치에 어플리케이션을
|
||||
Windows에선 `autoUpdater` 모듈을 사용하기 전에 사용자의 장치에 애플리케이션을
|
||||
설치해야 합니다. 따라서 [electron-winstaller][installer-lib] 모듈이나
|
||||
[grunt-electron-installer][installer] 패키지를 사용하여 어플리케이션 인스톨러를
|
||||
[grunt-electron-installer][installer] 패키지를 사용하여 애플리케이션 인스톨러를
|
||||
만드는 것을 권장합니다.
|
||||
|
||||
Squirrel로 생성된 인스톨러는 [Application User Model ID][app-user-model-id]와 함께
|
||||
`com.squirrel.PACKAGE_ID.YOUR_EXE_WITHOUT_DOT_EXE`으로 형식화된 바로가기 아이콘을
|
||||
생성합니다. `com.squirrel.slack.Slack` 과 `com.squirrel.code.Code`가 그 예시입니다.
|
||||
`app.setAppUserModelId` API를 통해 어플리케이션 ID를 동일하게 유지해야 합니다. 그렇지
|
||||
않으면 Windows 작업 표시줄에 어플리케이션을 고정할 때 제대로 적용되지 않을 수 있습니다.
|
||||
`app.setAppUserModelId` API를 통해 애플리케이션 ID를 동일하게 유지해야 합니다. 그렇지
|
||||
않으면 Windows 작업 표시줄에 애플리케이션을 고정할 때 제대로 적용되지 않을 수 있습니다.
|
||||
|
||||
서버 사이드 요구 사항 또한 OS X와 다르게 적용됩니다. 자세한 내용은
|
||||
[Squirrel.Windows][squirrel-windows]를 참고하세요.
|
||||
|
@ -53,7 +53,7 @@ Squirrel로 생성된 인스톨러는 [Application User Model ID][app-user-model
|
|||
### Linux
|
||||
|
||||
Linux는 따로 `auto-updater`를 지원하지 않습니다.
|
||||
각 배포판의 패키지 관리자를 통해 어플리케이션 업데이트를 제공하는 것을 권장합니다.
|
||||
각 배포판의 패키지 관리자를 통해 애플리케이션 업데이트를 제공하는 것을 권장합니다.
|
||||
|
||||
## Events
|
||||
|
||||
|
@ -108,7 +108,7 @@ Returns:
|
|||
|
||||
### `autoUpdater.quitAndInstall()`
|
||||
|
||||
어플리케이션을 다시 시작하고 다운로드된 업데이트를 설치합니다.
|
||||
애플리케이션을 다시 시작하고 다운로드된 업데이트를 설치합니다.
|
||||
이 메서드는 `update-downloaded` 이벤트가 발생한 이후에만 사용할 수 있습니다.
|
||||
|
||||
[squirrel-mac]: https://github.com/Squirrel/Squirrel.Mac
|
||||
|
|
|
@ -66,7 +66,7 @@ win.show();
|
|||
* `fullscreenable` Boolean - 윈도우가 전체화면 모드로 전환될 수 있는지 여부입니다.
|
||||
또한 OS X에선, 최대화/줌 버튼이 전체화면 모드 또는 윈도우 최대화를 실행할지 여부도
|
||||
포함됩니다. 기본값은 `true`입니다.
|
||||
* `skipTaskbar` Boolean - 작업표시줄 어플리케이션 아이콘 표시 스킵 여부. 기본값은
|
||||
* `skipTaskbar` Boolean - 작업표시줄 애플리케이션 아이콘 표시 스킵 여부. 기본값은
|
||||
`false`입니다.
|
||||
* `kiosk` Boolean - Kiosk(키오스크) 모드. 기본값은 `false`입니다.
|
||||
* `title` String - 기본 윈도우 제목. 기본값은 `"Electron"`입니다.
|
||||
|
@ -85,7 +85,7 @@ On Windows it is
|
|||
활성화 되는 동시에 단일 mouse-down 이벤트를 발생시킬지 여부. 기본값은 `false`입니다.
|
||||
* `disableAutoHideCursor` Boolean - 타이핑중 자동으로 커서를 숨길지 여부. 기본값은
|
||||
`false`입니다.
|
||||
* `autoHideMenuBar` Boolean - `Alt`를 누르지 않는 한 어플리케이션 메뉴바를 숨길지
|
||||
* `autoHideMenuBar` Boolean - `Alt`를 누르지 않는 한 애플리케이션 메뉴바를 숨길지
|
||||
여부. 기본값은 `false`입니다.
|
||||
* `enableLargerThanScreen` Boolean - 윈도우 크기가 화면 크기보다 크게 재조정 될
|
||||
수 있는지 여부. 기본값은 `false`입니다.
|
||||
|
@ -148,7 +148,7 @@ On Windows it is
|
|||
페이지에서 같은 `partition`을 사용할 수 있습니다. 만약 `persist:` 접두어로
|
||||
시작하지 않으면 페이지는 인-메모리 세션을 사용합니다. 여러 페이지에서 같은
|
||||
`partition`을 지정하면 같은 세션을 공유할 수 있습니다. `partition`을 지정하지
|
||||
않으면 어플리케이션의 기본 세션이 사용됩니다.
|
||||
않으면 애플리케이션의 기본 세션이 사용됩니다.
|
||||
* `zoomFactor` Number - 페이지의 기본 줌 값을 지정합니다. 예를 들어 `300%`를
|
||||
표현하려면 `3.0`으로 지정합니다. 기본값은 `1.0`입니다.
|
||||
* `javascript` Boolean - 자바스크립트를 활성화합니다. 기본값은 `false`입니다.
|
||||
|
@ -227,7 +227,7 @@ window.onbeforeunload = (e) => {
|
|||
|
||||
// 일반적인 브라우저와는 달리 사용자에게 확인 창을 보여주지 않고, non-void 값을 반환하면
|
||||
// 조용히 닫기를 취소합니다.
|
||||
// Dialog API를 통해 사용자가 어플리케이션을 종료할지 정할 수 있도록 확인 창을 표시하는 것을
|
||||
// Dialog API를 통해 사용자가 애플리케이션을 종료할지 정할 수 있도록 확인 창을 표시하는 것을
|
||||
// 추천합니다.
|
||||
e.returnValue = false;
|
||||
};
|
||||
|
@ -361,7 +361,7 @@ Returns:
|
|||
|
||||
### `BrowserWindow.getFocusedWindow()`
|
||||
|
||||
어플리케이션에서 포커스된 윈도우를 반환합니다. 포커스된 윈도우가 없을 경우 `null`을
|
||||
애플리케이션에서 포커스된 윈도우를 반환합니다. 포커스된 윈도우가 없을 경우 `null`을
|
||||
반환합니다.
|
||||
|
||||
### `BrowserWindow.fromWebContents(webContents)`
|
||||
|
@ -705,7 +705,7 @@ win.setSheetOffset(toolbarRect.height);
|
|||
|
||||
* `skip` Boolean
|
||||
|
||||
어플리케이션 아이콘을 작업표시줄에 보이지 않도록 설정합니다.
|
||||
애플리케이션 아이콘을 작업표시줄에 보이지 않도록 설정합니다.
|
||||
|
||||
### `win.setKiosk(flag)`
|
||||
|
||||
|
@ -804,7 +804,7 @@ Windows 메시지 훅을 등록합니다. `callback`은 WndProc에서 메시지
|
|||
|
||||
* `progress` Double
|
||||
|
||||
작업표시줄에 표시되고 있는 어플리케이션 아이콘에 진행 상태를 표시합니다. [0, 1.0]
|
||||
작업표시줄에 표시되고 있는 애플리케이션 아이콘에 진행 상태를 표시합니다. [0, 1.0]
|
||||
사이의 값을 지정할 수 있습니다.
|
||||
|
||||
진행 상태가 < 0 이 되면 진행 상태 표시를 제거합니다.
|
||||
|
@ -821,7 +821,7 @@ Linux 플랫폼에선 Unity 데스크톱 환경만 지원합니다. 그리고
|
|||
* `description` String - 접근성 설정에 의한 스크린 리더에 제공될 설명입니다
|
||||
|
||||
현재 작업표시줄 아이콘에 16 x 16 픽셀 크기의 오버레이를 지정합니다. 보통 이 기능은
|
||||
어플리케이션의 여러 상태를 사용자에게 소극적으로 알리기 위한 방법으로 사용됩니다.
|
||||
애플리케이션의 여러 상태를 사용자에게 소극적으로 알리기 위한 방법으로 사용됩니다.
|
||||
|
||||
### `win.setHasShadow(hasShadow)` _OS X_
|
||||
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
|
||||
> Electron에서 지원하는 커맨드 명령줄 스위치입니다.
|
||||
|
||||
어플리케이션 메인 스크립트의 [app][app] 모듈에서 [ready][ready] 이벤트가 실행되기
|
||||
전에 [app.commandLine.appendSwitch][append-switch]를 호출하면, 어플리케이션의
|
||||
애플리케이션 메인 스크립트의 [app][app] 모듈에서 [ready][ready] 이벤트가 실행되기
|
||||
전에 [app.commandLine.appendSwitch][append-switch]를 호출하면, 애플리케이션의
|
||||
명령줄 옵션을 추가로 지정할 수 있습니다:
|
||||
|
||||
```javascript
|
||||
|
@ -149,7 +149,7 @@ Chromium이 렌더러 프로세스의 보이지 않는 페이지의 우선순위
|
|||
|
||||
Chromium의 로그를 콘솔에 출력합니다.
|
||||
|
||||
이 스위치는 어플리케이션이 로드되기 전에 분석 되므로 `app.commandLine.appendSwitch`
|
||||
이 스위치는 애플리케이션이 로드되기 전에 분석 되므로 `app.commandLine.appendSwitch`
|
||||
메서드에선 사용할 수 없습니다. 하지만 `ELECTRON_ENABLE_LOGGING` 환경 변수를 설정하면
|
||||
본 스위치를 지정한 것과 같은 효과를 낼 수 있습니다.
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
> 원격 서버에 크래시 정보를 보고합니다.
|
||||
|
||||
다음 예시는 윈격 서버에 어플리케이션 크래시 정보를 자동으로 보고하는 예시입니다:
|
||||
다음 예시는 윈격 서버에 애플리케이션 크래시 정보를 자동으로 보고하는 예시입니다:
|
||||
|
||||
```javascript
|
||||
const {crashReporter} = require('electron');
|
||||
|
|
|
@ -130,7 +130,7 @@ OS X 또는 Windows에서 "확인", "취소"와 같은 순서로 버튼을 지
|
|||
에러 메시지를 보여주는 대화 상자를 표시합니다.
|
||||
|
||||
이 함수는 `app` 모듈의 `ready` 이벤트가 발생하기 전까지 사용할 수 있습니다. 이 메서드는
|
||||
보통 어플리케이션이 시작되기 전에 특정한 에러를 표시하기 위해 사용됩니다. 만약
|
||||
보통 애플리케이션이 시작되기 전에 특정한 에러를 표시하기 위해 사용됩니다. 만약
|
||||
Linux에서 `ready` 이벤트가 발생하기 전에 이 API를 호출할 경우, 메시지는 stderr를
|
||||
통해서 표시되며 GUI 대화 상자는 표시되지 않습니다.
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# 환경 변수
|
||||
|
||||
> 어플리케이션의 구성과 동작을 코드 변경 없이 제어합니다.
|
||||
> 애플리케이션의 구성과 동작을 코드 변경 없이 제어합니다.
|
||||
|
||||
특정 Electron 동작은 명령줄 플래그와 어플리케이션의 코드보다 먼저 초기화되어야 하므로
|
||||
특정 Electron 동작은 명령줄 플래그와 애플리케이션의 코드보다 먼저 초기화되어야 하므로
|
||||
환경 변수에 의해 작동합니다.
|
||||
|
||||
POSIX 쉘의 예시입니다:
|
||||
|
|
|
@ -45,7 +45,7 @@ let win = new BrowserWindow({transparent: true, frame: false});
|
|||
* 투명한 창은 크기를 조절할 수 없습니다. `resizable` 속성을 `true`로 할 경우 몇몇
|
||||
플랫폼에선 크래시가 일어납니다.
|
||||
* `blur` 필터는 웹 페이지에서만 적용됩니다. 윈도우 아래 콘텐츠에는 블러 효과를 적용할
|
||||
방법이 없습니다. (예시: 유저의 시스템에 열린 다른 어플리케이션)
|
||||
방법이 없습니다. (예시: 유저의 시스템에 열린 다른 애플리케이션)
|
||||
* Windows에선 DWM(데스크톱 창 관리자)가 비활성화되어 있을 경우 투명한 창이 작동하지
|
||||
않습니다.
|
||||
* Linux를 사용할 경우 [alpha channel doesn't work on some NVidia drivers](https://code.google.com/p/chromium/issues/detail?id=369209)
|
||||
|
@ -56,7 +56,7 @@ let win = new BrowserWindow({transparent: true, frame: false});
|
|||
|
||||
## 드래그 가능 위치 지정
|
||||
|
||||
기본적으로 Frameless Window는 드래그 할 수 없습니다. 어플리케이션의 CSS에서 특정
|
||||
기본적으로 Frameless Window는 드래그 할 수 없습니다. 애플리케이션의 CSS에서 특정
|
||||
범위를 `-webkit-app-region: drag`로 지정하면 OS의 기본 타이틀 바 처럼 드래그 되도록
|
||||
할 수 있습니다. 그리고 `-webkit-app-region: no-drag`를 지정해서 드래그 불가능 영역을
|
||||
만들 수도 있습니다. 현재 사각형 형태의 범위만 지원합니다.
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
# globalSortcut
|
||||
|
||||
> 어플리케이션에 키보드 포커스가 없을 때도 키보드 이벤트를 받을 수 있도록 합니다.
|
||||
> 애플리케이션에 키보드 포커스가 없을 때도 키보드 이벤트를 받을 수 있도록 합니다.
|
||||
|
||||
`globalShortcut` 모듈은 운영체제의 전역 키보드 단축키를 등록/해제 하는 방법을
|
||||
제공합니다. 이 모듈을 사용하여 사용자가 다양한 작업을 편하게 할 수 있도록 단축키를
|
||||
정의 할 수 있습니다.
|
||||
|
||||
**참고:** 등록된 단축키는 어플리케이션이 백그라운드로 작동(창이 포커스 되지 않음) 할
|
||||
**참고:** 등록된 단축키는 애플리케이션이 백그라운드로 작동(창이 포커스 되지 않음) 할
|
||||
때도 계속해서 작동합니다. 이 모듈은 `app` 모듈의 `ready` 이벤트가 발생하기 전까지
|
||||
사용할 수 없습니다.
|
||||
|
||||
|
@ -48,8 +48,8 @@ app.on('will-quit', () => {
|
|||
`accelerator`의 전역 단축키를 등록합니다. 유저로부터 등록된 단축키가 눌렸을 경우
|
||||
`callback` 함수가 호출됩니다.
|
||||
|
||||
accelerator가 이미 다른 어플리케이션에서 사용 중일 경우, 이 작업은 조용히 실패합니다.
|
||||
이러한 동작은 어플리케이션이 전역 키보드 단축키를 가지고 충돌이 일어나지 않도록 하기
|
||||
accelerator가 이미 다른 애플리케이션에서 사용 중일 경우, 이 작업은 조용히 실패합니다.
|
||||
이러한 동작은 애플리케이션이 전역 키보드 단축키를 가지고 충돌이 일어나지 않도록 하기
|
||||
위해 운영체제에 의해 예정된 동작입니다.
|
||||
|
||||
### `globalShortcut.isRegistered(accelerator)`
|
||||
|
@ -58,8 +58,8 @@ accelerator가 이미 다른 어플리케이션에서 사용 중일 경우, 이
|
|||
|
||||
지정된 `accelerator` 단축키가 등록되었는지 여부를 확인합니다.
|
||||
|
||||
Accelerator가 이미 다른 어플리케이션에서 사용 중일 경우, 여전히 `false`를 반환합니다.
|
||||
이러한 동작은 어플리케이션이 전역 키보드 단축키를 가지고 충돌이 일어나지 않도록 하기
|
||||
Accelerator가 이미 다른 애플리케이션에서 사용 중일 경우, 여전히 `false`를 반환합니다.
|
||||
이러한 동작은 애플리케이션이 전역 키보드 단축키를 가지고 충돌이 일어나지 않도록 하기
|
||||
위해 운영체제에 의해 예정된 동작입니다.
|
||||
|
||||
### `globalShortcut.unregister(accelerator)`
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# MenuItem
|
||||
|
||||
> 네이티브 어플리케이션 메뉴와 컨텍스트 메뉴에 아이템을 추가합니다.
|
||||
> 네이티브 애플리케이션 메뉴와 컨텍스트 메뉴에 아이템을 추가합니다.
|
||||
|
||||
[`menu`](menu.md)에서 예시를 확인할 수 있습니다.
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Menu
|
||||
|
||||
> 네이티브 어플리케이션 메뉴와 컨텍스트 메뉴를 생성합니다.
|
||||
> 네이티브 애플리케이션 메뉴와 컨텍스트 메뉴를 생성합니다.
|
||||
|
||||
이 모듈은 메인 프로세스용 모듈이지만 `remote` 모듈을 통해 렌더러 프로세스에서도 사용할
|
||||
수 있습니다.
|
||||
|
@ -30,7 +30,7 @@ window.addEventListener('contextmenu', (e) => {
|
|||
```
|
||||
|
||||
또 하나의 예를 들자면 다음 예시는 렌더러 프로세스에서 template API를 사용하여
|
||||
어플리케이션 메뉴를 만듭니다:
|
||||
애플리케이션 메뉴를 만듭니다:
|
||||
|
||||
```javascript
|
||||
const template = [
|
||||
|
@ -202,14 +202,14 @@ Menu.setApplicationMenu(menu);
|
|||
|
||||
* `menu` Menu
|
||||
|
||||
지정한 `menu`를 어플리케이션 메뉴로 만듭니다. OS X에선 상단바에 표시되며 Windows와
|
||||
지정한 `menu`를 애플리케이션 메뉴로 만듭니다. OS X에선 상단바에 표시되며 Windows와
|
||||
Linux에선 각 창의 상단에 표시됩니다.
|
||||
|
||||
### `Menu.sendActionToFirstResponder(action)` _OS X_
|
||||
|
||||
* `action` String
|
||||
|
||||
`action`을 어플리케이션의 first responder에 전달합니다. 이 메서드는 Cocoa 메뉴
|
||||
`action`을 애플리케이션의 first responder에 전달합니다. 이 메서드는 Cocoa 메뉴
|
||||
동작을 에뮬레이트 하는데 사용되며 보통 `MenuItem`의 `role` 속성에 사용됩니다.
|
||||
|
||||
OS X의 네이티브 액션에 대해 자세히 알아보려면
|
||||
|
@ -264,10 +264,10 @@ OS X의 네이티브 액션에 대해 자세히 알아보려면
|
|||
|
||||
메뉴가 가지고 있는 메뉴 아이템들의 배열입니다.
|
||||
|
||||
## OS X 어플리케이션 메뉴에 대해 알아 둬야 할 것들
|
||||
## OS X 애플리케이션 메뉴에 대해 알아 둬야 할 것들
|
||||
|
||||
OS X에선 Windows, Linux와 달리 완전히 다른 어플리케이션 메뉴 스타일을 가지고 있습니다.
|
||||
그래서 어플리케이션을 네이티브처럼 작동할 수 있도록 하기 위해 다음 몇 가지 유의 사항을
|
||||
OS X에선 Windows, Linux와 달리 완전히 다른 애플리케이션 메뉴 스타일을 가지고 있습니다.
|
||||
그래서 애플리케이션을 네이티브처럼 작동할 수 있도록 하기 위해 다음 몇 가지 유의 사항을
|
||||
숙지해야 합니다.
|
||||
|
||||
### 기본 메뉴
|
||||
|
@ -288,8 +288,8 @@ OS X는 몇가지 메뉴 아이템에 대해 `About xxx`, `Hide xxx`, `Hide Othe
|
|||
|
||||
### 메인 메뉴의 이름
|
||||
|
||||
OS X에선 지정한 어플리케이션 메뉴에 상관없이 메뉴의 첫번째 라벨은 언제나 어플리케이션의
|
||||
이름이 됩니다. 어플리케이션 이름을 변경하려면 앱 번들내의 `Info.plist` 파일을 수정해야
|
||||
OS X에선 지정한 애플리케이션 메뉴에 상관없이 메뉴의 첫번째 라벨은 언제나 애플리케이션의
|
||||
이름이 됩니다. 애플리케이션 이름을 변경하려면 앱 번들내의 `Info.plist` 파일을 수정해야
|
||||
합니다. 자세한 내용은 [About Information Property List Files][AboutInformationPropertyListFiles] 문서를 참고하세요.
|
||||
|
||||
## 지정한 브라우저 윈도우에 메뉴 설정 (*Linux* *Windows*)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# nativeImage
|
||||
|
||||
> PNG 또는 JPG 파일을 사용하여 트레이, 독, 어플리케이션 아이콘을 생성합니다.
|
||||
> PNG 또는 JPG 파일을 사용하여 트레이, 독, 애플리케이션 아이콘을 생성합니다.
|
||||
|
||||
Electron은 파일 경로 또는 `nativeImage` 인스턴스를 통해 이미지를 사용할 수 있는 API를
|
||||
가지고 있습니다. `null`을 전달할 경우 빈 이미지가 생성됩니다.
|
||||
|
|
|
@ -20,10 +20,10 @@ powerSaveBlocker.stop(id);
|
|||
### `powerSaveBlocker.start(type)`
|
||||
|
||||
* `type` String - Power save blocker 종류
|
||||
* `prevent-app-suspension` - 저전력 모드 등으로 인한 어플리케이션 작동 중단을
|
||||
* `prevent-app-suspension` - 저전력 모드 등으로 인한 애플리케이션 작동 중단을
|
||||
방지합니다. 시스템을 항시 활성화 상태로 만듭니다. 하지만 화면은 자동으로 꺼질 수
|
||||
있습니다. 사용 예시: 파일 다운로드, 음악 재생 등.
|
||||
* `prevent-display-sleep`- 슬립 모드 등으로 인한 어플리케이션의 작동 중단을
|
||||
* `prevent-display-sleep`- 슬립 모드 등으로 인한 애플리케이션의 작동 중단을
|
||||
방지합니다. 시스템을 항시 활성화 상태로 만들고 슬립 모드(화면 꺼짐)를 방지합니다.
|
||||
사용 예시: 비디오 재생 등.
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ let ses = win.webContents.session;
|
|||
|
||||
`partition`이 `persist:`로 시작하면 페이지는 지속성 세션을 사용하며 다른 모든 앱 내의
|
||||
페이지에서 같은 `partition`을 사용할 수 있습니다. 만약 `persist:` 접두어로 시작하지
|
||||
않으면 페이지는 인-메모리 세션을 사용합니다. `partition`을 지정하지 않으면 어플리케이션의
|
||||
않으면 페이지는 인-메모리 세션을 사용합니다. `partition`을 지정하지 않으면 애플리케이션의
|
||||
기본 세션이 반환됩니다.
|
||||
|
||||
## Properties
|
||||
|
@ -37,7 +37,7 @@ let ses = win.webContents.session;
|
|||
|
||||
### session.defaultSession
|
||||
|
||||
어플리케이션의 기본 세션 객체를 반환합니다.
|
||||
애플리케이션의 기본 세션 객체를 반환합니다.
|
||||
|
||||
## Class: Session
|
||||
|
||||
|
@ -244,7 +244,7 @@ proxyURL = [<proxyScheme>"://"]<proxyHost>[":"<proxyPort>]
|
|||
|
||||
* `path` String - 다운로드 위치
|
||||
|
||||
다운로드 저장 위치를 지정합니다. 기본 다운로드 위치는 각 어플리케이션 데이터 디렉터리의
|
||||
다운로드 저장 위치를 지정합니다. 기본 다운로드 위치는 각 애플리케이션 데이터 디렉터리의
|
||||
`Downloads` 폴더입니다.
|
||||
|
||||
#### `ses.enableNetworkEmulation(options)`
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# shell
|
||||
|
||||
> 파일과 URL을 각 기본 어플리케이션을 통해 관리합니다.
|
||||
> 파일과 URL을 각 기본 애플리케이션을 통해 관리합니다.
|
||||
|
||||
`shell` 모듈은 데스크톱 환경 통합에 관련한 유틸리티를 제공하는 모듈입니다.
|
||||
|
||||
|
@ -32,11 +32,11 @@ shell.openExternal('https://github.com');
|
|||
|
||||
* `url` String
|
||||
* `options` Object (optional) _OS X_
|
||||
* `activate` Boolean - `true`로 설정하면 어플리케이션을 바로 활성화 상태로
|
||||
* `activate` Boolean - `true`로 설정하면 애플리케이션을 바로 활성화 상태로
|
||||
실행합니다. 기본값은 `true`입니다.
|
||||
|
||||
제공된 외부 프로토콜 URL을 기반으로 데스크톱의 기본 프로그램으로 엽니다. (예를 들어
|
||||
mailto: URL은 유저의 기본 이메일 에이전트로 URL을 엽니다.) 어플리케이션이 해당 URL을
|
||||
mailto: URL은 유저의 기본 이메일 에이전트로 URL을 엽니다.) 애플리케이션이 해당 URL을
|
||||
열 수 있을 때 `true`를 반환합니다. 아니라면 `false`를 반환합니다.
|
||||
|
||||
**역주:** 탐색기로 폴더만 표시하려면 `'file://경로'`와 같이 지정하여 열 수 있습니다.
|
||||
|
|
|
@ -6,7 +6,7 @@ Electron은 모든 [Node.js의 built-in 모듈](http://nodejs.org/api/)과 third
|
|||
node 모듈을 완벽하게 지원합니다. ([네이티브 모듈](../tutorial/using-native-node-modules.md)
|
||||
포함)
|
||||
|
||||
또한 Electron은 네이티브 데스크톱 어플리케이션을 개발 할 수 있도록 추가적인 built-in
|
||||
또한 Electron은 네이티브 데스크톱 애플리케이션을 개발 할 수 있도록 추가적인 built-in
|
||||
모듈을 제공합니다. 몇몇 모듈은 메인 프로세스에서만 사용할 수 있고 어떤 모듈은 렌더러
|
||||
프로세스(웹 페이지)에서만 사용할 수 있습니다. 또한 두 프로세스 모두 사용할 수 있는
|
||||
모듈도 있습니다.
|
||||
|
@ -43,7 +43,7 @@ app.on('ready', () => {
|
|||
</html>
|
||||
```
|
||||
|
||||
어플리케이션을 실행하려면 [앱 실행하기](../tutorial/quick-start.md#앱 실행하기)
|
||||
애플리케이션을 실행하려면 [앱 실행하기](../tutorial/quick-start.md#앱 실행하기)
|
||||
문서를 참고하기 바랍니다.
|
||||
|
||||
## 분리 할당
|
||||
|
|
|
@ -7,14 +7,14 @@ const {app, Menu, Tray} = require('electron');
|
|||
|
||||
let appIcon = null;
|
||||
app.on('ready', () => {
|
||||
appIcon = new Tray('/path/to/my/icon'); // 현재 어플리케이션 디렉터리를 기준으로 하려면 `__dirname + '/images/tray.png'` 형식으로 입력해야 합니다.
|
||||
appIcon = new Tray('/path/to/my/icon'); // 현재 애플리케이션 디렉터리를 기준으로 하려면 `__dirname + '/images/tray.png'` 형식으로 입력해야 합니다.
|
||||
const contextMenu = Menu.buildFromTemplate([
|
||||
{label: 'Item1', type: 'radio'},
|
||||
{label: 'Item2', type: 'radio'},
|
||||
{label: 'Item3', type: 'radio', checked: true},
|
||||
{label: 'Item4', type: 'radio'}
|
||||
]);
|
||||
appIcon.setToolTip('이것은 나의 어플리케이션 입니다!');
|
||||
appIcon.setToolTip('이것은 나의 애플리케이션 입니다!');
|
||||
appIcon.setContextMenu(contextMenu);
|
||||
});
|
||||
```
|
||||
|
|
|
@ -674,7 +674,7 @@ ServiceWorker가 존재하면 모두 등록을 해제하고 JS Promise가 만족
|
|||
`webContents.print({silent: false, printBackground: false})`를 호출하는 것과
|
||||
같습니다.
|
||||
|
||||
**참고:** Windows에서의 프린터 API는 `pdf.dll`에 의존합니다. 따라서 어플리케이션이
|
||||
**참고:** Windows에서의 프린터 API는 `pdf.dll`에 의존합니다. 따라서 애플리케이션이
|
||||
print기능을 사용하지 않는 경우 전체 바이너리 크기를 줄이기 위해 `pdf.dll`을 삭제해도
|
||||
됩니다.
|
||||
|
||||
|
|
|
@ -136,7 +136,7 @@ console.log(webFrame.getResourceUsage())
|
|||
|
||||
참고로 맹목적으로 이 메서드를 호출하는 것은 이 빈 캐시를 다시 채워야하기 때문에
|
||||
Electron을 느리게 만듭니다. 따라서 이 메서드는 페이지가 예상했던 것 보다 실질적으로 더
|
||||
적은 메모리를 사용하게 만드는 어플리케이션 이벤트가 발생했을 때만 호출해야 합니다.
|
||||
적은 메모리를 사용하게 만드는 애플리케이션 이벤트가 발생했을 때만 호출해야 합니다.
|
||||
(i.e. 아주 무거운 페이지에서 거의 빈 페이지로 이동한 후 계속 유지할 경우)
|
||||
|
||||
[spellchecker]: https://github.com/atom/node-spellchecker
|
||||
|
|
|
@ -6,16 +6,16 @@
|
|||
사용할 수 있습니다. 게스트 콘텐츠는 `webview` 컨테이너에 담겨 대상 페이지에 삽입되고
|
||||
해당 페이지에선 게스트 콘텐츠의 배치 및 렌더링 과정을 조작할 수 있습니다.
|
||||
|
||||
`iframe`과는 달리 `webview`는 어플리케이션과 분리된 프로세스에서 작동합니다.
|
||||
`iframe`과는 달리 `webview`는 애플리케이션과 분리된 프로세스에서 작동합니다.
|
||||
이는 웹 페이지와 같은 권한을 가지지 않고 앱과 임베디드(게스트) 콘텐츠간의 모든
|
||||
상호작용이 비동기로 작동한다는 것을 의미합니다. 따라서 임베디드 콘텐츠로부터
|
||||
어플리케이션을 안전하게 유지할 수 있습니다.
|
||||
애플리케이션을 안전하게 유지할 수 있습니다.
|
||||
|
||||
보안상의 이유로, `webview`는 `nodeIntegration`이 활성화된 `BrowserWindow`에서만 사용할 수 있습니다.
|
||||
|
||||
## 예시
|
||||
|
||||
웹 페이지를 어플리케이션에 삽입하려면 `webview` 태그를 사용해 원하는 타겟 페이지에
|
||||
웹 페이지를 애플리케이션에 삽입하려면 `webview` 태그를 사용해 원하는 타겟 페이지에
|
||||
추가하면 됩니다. (게스트 콘텐츠가 앱 페이지에 추가 됩니다) 간단한 예로 `webview`
|
||||
태그의 `src` 속성에 페이지를 지정하고 css 스타일을 이용해서 컨테이너의 외관을 설정할
|
||||
수 있습니다:
|
||||
|
|
|
@ -3,15 +3,15 @@
|
|||
__참고: Electron은 Atom Shell의 새로운 이름입니다.__
|
||||
|
||||
NW.js 처럼 Electron은 JavaScript와 HTML 그리고 Node 통합 환경을 제공함으로써 웹
|
||||
페이지에서 저 수준 시스템에 접근할 수 있도록 하여 웹 기반 데스크탑 어플리케이션을
|
||||
페이지에서 저 수준 시스템에 접근할 수 있도록 하여 웹 기반 데스크탑 애플리케이션을
|
||||
작성할 수 있도록 하는 프레임워크 입니다.
|
||||
|
||||
하지만 Electron과 NW.js는 근본적인 개발흐름의 차이도 있습니다:
|
||||
|
||||
__1. 어플리케이션의 엔트리 포인트__
|
||||
__1. 애플리케이션의 엔트리 포인트__
|
||||
|
||||
NW.js에선 어플리케이션의 엔트리 포인트로 웹 페이지를 사용합니다. `package.json`내의
|
||||
main 필드에 메인 웹 페이지(index.html) URL을 지정하면 어플리케이션의 메인 윈도우로
|
||||
NW.js에선 애플리케이션의 엔트리 포인트로 웹 페이지를 사용합니다. `package.json`내의
|
||||
main 필드에 메인 웹 페이지(index.html) URL을 지정하면 애플리케이션의 메인 윈도우로
|
||||
열리게 됩니다.
|
||||
|
||||
Electron에선 JavaScript를 엔트리 포인트로 사용합니다. URL을 직접 제공하는 대신 API를
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Windows에서 Electron 디버깅하기
|
||||
|
||||
만약 작성한 Javascript 어플리케이션이 아닌 Electron 자체의 크래시나 문제를 경험하고
|
||||
만약 작성한 Javascript 애플리케이션이 아닌 Electron 자체의 크래시나 문제를 경험하고
|
||||
있다면, 네이티브/C++ 디버깅에 익숙하지 않은 개발자는 디버깅이 약간 까다로울 수
|
||||
있습니다. 그렇다 해도, Visual Studio, GitHub의 Electron이 호스팅하는 심볼 서버,
|
||||
Electron 소스 코드가 중단점을 통해 순차적으로 쉽게 디버깅할 수 있는 환경을 제공합니다.
|
||||
|
@ -27,7 +27,7 @@ Electron 소스 코드가 중단점을 통해 순차적으로 쉽게 디버깅
|
|||
## Electron에 디버거 연결하고 디버깅하기
|
||||
|
||||
디버깅 작업을 시작하려면, PowerShell/CMD 중 한 가지를 열고 디버그 빌드 상태의
|
||||
Electron에 인수로 어플리케이션을 전달하여 실행합니다:
|
||||
Electron에 인수로 애플리케이션을 전달하여 실행합니다:
|
||||
|
||||
```powershell
|
||||
$ ./out/D/electron.exe ~/my-electron-app/
|
||||
|
@ -51,13 +51,13 @@ $ ./out/D/electron.exe ~/my-electron-app/
|
|||
로컬에서 작동 중인 프로세스 또는 원격 컴퓨터에 Visual Studio 디버거를 적용시킬 수
|
||||
있습니다. 프로세스의 실행이 끝난 후, 디버그 / 프로세스에 연결을 (또는 `Ctrl+Alt+P`
|
||||
입력) 클릭하면 "프로세스에 연결" 대화 상자가 열립니다. 이 도구를 통해 로컬 또는
|
||||
원격에서 작동 중인 어플리케이션을 디버깅할 수 있으며 여러 프로세스를 동시에 디버깅할
|
||||
원격에서 작동 중인 애플리케이션을 디버깅할 수 있으며 여러 프로세스를 동시에 디버깅할
|
||||
수도 있습니다.
|
||||
|
||||
만약 Electron이 서로 다른 유저 계정에서 실행 중이라면, `모든 사용자의 프로세스
|
||||
보이기`를 선택하면 됩니다. 참고로 이는 `BrowserWindow`가 열린 개수에 따라 달라질 수
|
||||
있으며 아마 다수의 프로세스를 발견할 수 있을 것입니다. 전형적인 one-window
|
||||
어플리케이션은 Visual Studio에서 두 개의 `Electron.exe` 항목으로 표시됩니다. 하나는
|
||||
애플리케이션은 Visual Studio에서 두 개의 `Electron.exe` 항목으로 표시됩니다. 하나는
|
||||
메인 프로세스이며 다른 하나는 렌더러 프로세스입니다. 리스트는 단지 이름 하나만 제공하기
|
||||
때문에 현재까지는 다른 적절한 프로세스 판별법이 없습니다.
|
||||
|
||||
|
@ -75,9 +75,9 @@ Javascript 파일에 의해 실행) remote (`require('electron').remote`)를 사
|
|||
## 프로세스를 관찰하기 위해 ProcMon 사용
|
||||
|
||||
Visual Studio는 특정 코드 경로를 탐색하는것에 대해 환상적인 기능을 제공하고 ProcMon은
|
||||
어플리케이션이 운영체제와 하는 일의 모든 것을 관찰하는데 강력한 기능을 가지고 있습니다.
|
||||
애플리케이션이 운영체제와 하는 일의 모든 것을 관찰하는데 강력한 기능을 가지고 있습니다.
|
||||
이 툴은 프로세스의 파일, 레지스트리, 네트워킹, 프로세스, 프로파일링 상세를 포착할 수
|
||||
있으며 강력하게 **모든** 이벤트의 발생을 로깅을 시도합니다. 만약 어플리케이션이
|
||||
있으며 강력하게 **모든** 이벤트의 발생을 로깅을 시도합니다. 만약 애플리케이션이
|
||||
운영체제에 대해 무슨 일을 하고 있는지 이해하고 싶다면 이는 좋은 자원이 될 것입니다.
|
||||
|
||||
ProcMon의 기본적인 디버깅 기능을 알아보고 싶다면 Microsoft에서 제공하는
|
||||
|
|
|
@ -49,7 +49,7 @@ require('electron').remote.getGlobal('sharedObject').someProperty = 'new value';
|
|||
console.log(require('electron').remote.getGlobal('sharedObject').someProperty);
|
||||
```
|
||||
|
||||
## 제작한 어플리케이션의 윈도우/트레이가 몇 분 후에나 나타납니다.
|
||||
## 제작한 애플리케이션의 윈도우/트레이가 몇 분 후에나 나타납니다.
|
||||
|
||||
이러한 문제가 발생하는 이유는 보통 윈도우/트레이를 담은 변수에 가비지 컬렉션이 작동해서
|
||||
그럴 가능성이 높습니다.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# 어플리케이션 배포
|
||||
# 애플리케이션 배포
|
||||
|
||||
Electron 어플리케이션을 배포하는 방법은 간단합니다.
|
||||
Electron 애플리케이션을 배포하는 방법은 간단합니다.
|
||||
|
||||
먼저 폴더 이름을 `app`로 지정한 후 Electron 리소스 디렉터리에 폴더를 통째로 집어넣기만
|
||||
하면 됩니다. 리소스 디렉터리는 OS X의 경우: `Electron.app/Contents/Resources/`
|
||||
|
@ -31,11 +31,11 @@ electron/resources/app
|
|||
## asar로 앱 패키징 하기
|
||||
|
||||
소스파일 전체를 복사해서 배포하는 것과는 별개로 [asar](https://github.com/electron/asar)
|
||||
아카이브를 통해 어플리케이션의 소스 코드가 사용자에게 노출되는 것을 방지할 수 있습니다.
|
||||
아카이브를 통해 애플리케이션의 소스 코드가 사용자에게 노출되는 것을 방지할 수 있습니다.
|
||||
|
||||
`asar` 아카이브를 사용할 땐 단순히 `app` 폴더 대신에 어플리케이션을 패키징한
|
||||
`asar` 아카이브를 사용할 땐 단순히 `app` 폴더 대신에 애플리케이션을 패키징한
|
||||
`app.asar` 파일로 대체하면됩니다. Electron은 자동으로 `app`폴더 대신 asar 아카이브를
|
||||
기반으로 어플리케이션을 실행합니다.
|
||||
기반으로 애플리케이션을 실행합니다.
|
||||
|
||||
OS X의 경우:
|
||||
|
||||
|
@ -51,11 +51,11 @@ electron/resources/
|
|||
└── app.asar
|
||||
```
|
||||
|
||||
자세한 내용은 [어플리케이션 패키징](application-packaging.md)에서 찾아볼 수 있습니다.
|
||||
자세한 내용은 [애플리케이션 패키징](application-packaging.md)에서 찾아볼 수 있습니다.
|
||||
|
||||
## 다운로드한 바이너리의 리소스를 앱에 맞게 수정하기
|
||||
|
||||
어플리케이션을 Electron에 번들링한 후 해당 어플리케이션에 맞게 리브랜딩 할 수 있습니다.
|
||||
애플리케이션을 Electron에 번들링한 후 해당 애플리케이션에 맞게 리브랜딩 할 수 있습니다.
|
||||
|
||||
### Windows
|
||||
|
||||
|
@ -64,7 +64,7 @@ electron/resources/
|
|||
|
||||
### OS X
|
||||
|
||||
`Electron.app`을 원하는 이름으로 변경할 수 있습니다. 그리고 다음 표시된 어플리케이션
|
||||
`Electron.app`을 원하는 이름으로 변경할 수 있습니다. 그리고 다음 표시된 애플리케이션
|
||||
내부 파일에서 `CFBundleDisplayName`, `CFBundleIdentifier` 그리고 `CFBundleName`
|
||||
필드를 원하는 이름으로 변경해야 합니다:
|
||||
|
||||
|
@ -74,10 +74,10 @@ electron/resources/
|
|||
또한 helper 앱이 프로세스 모니터에 `Electron Helper`로 나오지 않도록 이름을
|
||||
변경할 수 있습니다. 하지만 반드시 내부 및 모든 helper 앱의 이름을 변경해야 합니다.
|
||||
|
||||
어플리케이션 아이콘은 `Electron.app/Contents/Resources/atom.icns`을 원하는
|
||||
애플리케이션 아이콘은 `Electron.app/Contents/Resources/atom.icns`을 원하는
|
||||
아이콘으로 변경하면 됩니다.
|
||||
|
||||
어플리케이션 이름을 원하는 이름으로 변경한 예시:
|
||||
애플리케이션 이름을 원하는 이름으로 변경한 예시:
|
||||
|
||||
```
|
||||
MyApp.app/Contents
|
||||
|
@ -101,13 +101,13 @@ MyApp.app/Contents
|
|||
|
||||
### Linux
|
||||
|
||||
실행파일 `electron`의 이름을 원하는 대로 바꿀 수 있습니다. 리눅스 어플리케이션의
|
||||
실행파일 `electron`의 이름을 원하는 대로 바꿀 수 있습니다. 리눅스 애플리케이션의
|
||||
아이콘은 [.desktop](https://developer.gnome.org/integration-guide/stable/desktop-files.html.en)
|
||||
파일을 사용하여 지정할 수 있습니다.
|
||||
|
||||
## 패키징 툴
|
||||
|
||||
어플리케이션을 일일이 수동으로 패키지로 만드는 대신, 서드 파티 패키징 툴을 사용하며
|
||||
애플리케이션을 일일이 수동으로 패키지로 만드는 대신, 서드 파티 패키징 툴을 사용하며
|
||||
이러한 작업을 자동화 시킬 수 있습니다:
|
||||
|
||||
* [electron-packager](https://github.com/maxogden/electron-packager)
|
||||
|
@ -115,7 +115,7 @@ MyApp.app/Contents
|
|||
|
||||
## Electron 소스 코드를 다시 빌드하여 리소스 수정하기
|
||||
|
||||
또한 Electron 소스 코드를 다시 빌드할 때 어플리케이션 이름을 변경할 수 있습니다.
|
||||
또한 Electron 소스 코드를 다시 빌드할 때 애플리케이션 이름을 변경할 수 있습니다.
|
||||
|
||||
`atom.gyp` 파일을 수정하여 다음과 같이 다시 빌드할 수 있습니다:
|
||||
|
||||
|
@ -125,13 +125,13 @@ Electron의 소스 코드를 수정하고 다시 빌드하는 작업은 상당
|
|||
소스 코드를 수정하는 대신 [grunt-build-atom-shell](https://github.com/paulcbetts/grunt-build-atom-shell)을
|
||||
사용하여 빌드를 자동화 시킬 수 있습니다.
|
||||
|
||||
이 툴을 사용하면 자동으로 `.gyp`파일을 수정하고 다시 빌드합니다. 그리고 어플리케이션의
|
||||
이 툴을 사용하면 자동으로 `.gyp`파일을 수정하고 다시 빌드합니다. 그리고 애플리케이션의
|
||||
네이티브 Node 모듈 또한 새로운 실행파일 이름으로 일치시킵니다.
|
||||
|
||||
### Electron 커스텀 포크 만들기
|
||||
|
||||
Electron의 커스텀 포크를 만드는 것은 거의 확실히 앱을 만드는데 있어서 필요한 작업이
|
||||
아닐 수 있으며, 심지어 "제품 등급"의 어플리케이션이라도 필요하지 않습니다.
|
||||
아닐 수 있으며, 심지어 "제품 등급"의 애플리케이션이라도 필요하지 않습니다.
|
||||
`electron-packager` 또는 `electron-builder`와 같은 도구를 사용하면 다른 특별한
|
||||
과정 없이 Electron을 "Rebrand" 할 수 있습니다.
|
||||
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
# 어플리케이션 패키징
|
||||
# 애플리케이션 패키징
|
||||
|
||||
Windows에서 일어나는 긴 경로 이름에 대한 [issues](https://github.com/joyent/node/issues/6960)를
|
||||
완화하고 `require` 속도를 약간 빠르게 하며 어플리케이션의 리소스와 소스 코드를 좋지 않은
|
||||
사용자로부터 보호하기 위해 어플리케이션을 [asar][asar] 아카이브로 패키징 할 수 있습니다.
|
||||
완화하고 `require` 속도를 약간 빠르게 하며 애플리케이션의 리소스와 소스 코드를 좋지 않은
|
||||
사용자로부터 보호하기 위해 애플리케이션을 [asar][asar] 아카이브로 패키징 할 수 있습니다.
|
||||
|
||||
## `asar` 아카이브 생성
|
||||
|
||||
[asar][asar] 아카이브는 tar과 비슷한 포맷으로 모든 리소스를 하나의 파일로 만듭니다.
|
||||
그리고 Electron은 압축해제 없이 임의로 모든 파일을 읽어들일 수 있습니다.
|
||||
|
||||
간단한 작업을 통해 어플리케이션을 `asar` 아카이브로 압축할 수 있습니다:
|
||||
간단한 작업을 통해 애플리케이션을 `asar` 아카이브로 압축할 수 있습니다:
|
||||
|
||||
### 1. asar 유틸리티 설치
|
||||
|
||||
|
@ -176,7 +176,7 @@ $ asar pack app app.asar --unpack *.node
|
|||
|
||||
커맨드를 실행한 후 같은 디렉터리에 `app.asar` 파일 외에 `app.asar.unpacked` 폴더가
|
||||
같이 생성됩니다. 이 폴더안에 unpack 옵션에서 설정한 파일들이 압축이 풀려진 상태로
|
||||
포함되어 있습니다. 사용자에게 어플리케이션을 배포할 때 반드시 해당 폴더도 같이 배포해야
|
||||
포함되어 있습니다. 사용자에게 애플리케이션을 배포할 때 반드시 해당 폴더도 같이 배포해야
|
||||
합니다.
|
||||
|
||||
[asar]: https://github.com/electron/asar
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# 데스크톱 환경 통합
|
||||
|
||||
어플리케이션 배포의 대상이 되는 서로 다른 운영체제 시스템의 환경에 맞춰 어플리케이션의
|
||||
애플리케이션 배포의 대상이 되는 서로 다른 운영체제 시스템의 환경에 맞춰 애플리케이션의
|
||||
기능을 통합할 수 있습니다. 예를 들어 Windows에선 태스크바의 JumpList에 바로가기를
|
||||
추가할 수 있고 Mac(OS X)에선 dock 메뉴에 커스텀 메뉴를 추가할 수 있습니다.
|
||||
|
||||
|
@ -9,7 +9,7 @@
|
|||
|
||||
## 데스크톱 알림 (Windows, Linux, OS X)
|
||||
|
||||
Windows, Linux, OS X 운영체제 모두 기본적으로 어플리케이션에서 유저에게 알림을 보내는
|
||||
Windows, Linux, OS X 운영체제 모두 기본적으로 애플리케이션에서 유저에게 알림을 보내는
|
||||
방법을 제공합니다. Electron은 [HTML5 Notification API](https://notifications.spec.whatwg.org/)를
|
||||
통해 개발자가 편리하게 데스크톱 알림을 사용할 수 있는 기능을 제공합니다. 데스크톱 알림은
|
||||
운영체제의 네이티브 알림 API를 사용하여 표시합니다.
|
||||
|
@ -65,7 +65,7 @@ __JumpList:__
|
|||
|
||||
![JumpList 최근 문서](http://i.msdn.microsoft.com/dynimg/IC420538.png)
|
||||
|
||||
__어플리케이션 dock menu:__
|
||||
__애플리케이션 dock menu:__
|
||||
|
||||
<img src="https://cloud.githubusercontent.com/assets/639601/5069610/2aa80758-6e97-11e4-8cfb-c1a414a10774.png" height="353" width="428" >
|
||||
|
||||
|
@ -85,13 +85,13 @@ app.clearRecentDocuments();
|
|||
|
||||
### Windows에서 주의할 점
|
||||
|
||||
이 기능을 Windows에서 사용할 땐 운영체제 시스템에 어플리케이션에서 사용하는 파일
|
||||
이 기능을 Windows에서 사용할 땐 운영체제 시스템에 애플리케이션에서 사용하는 파일
|
||||
확장자가 등록되어 있어야 합니다. 그렇지 않은 경우 파일을 JumpList에 추가해도 추가되지
|
||||
않습니다. 어플리케이션 등록에 관련된 API의 모든 내용은 [Application Registration][app-registration]에서
|
||||
않습니다. 애플리케이션 등록에 관련된 API의 모든 내용은 [Application Registration][app-registration]에서
|
||||
찾아볼 수 있습니다.
|
||||
|
||||
유저가 JumpList에서 파일을 클릭할 경우 클릭된 파일의 경로가 커맨드 라인 인수로 추가되어
|
||||
새로운 인스턴스의 어플리케이션이 실행됩니다.
|
||||
새로운 인스턴스의 애플리케이션이 실행됩니다.
|
||||
|
||||
### OS X에서 주의할 점
|
||||
|
||||
|
@ -100,7 +100,7 @@ app.clearRecentDocuments();
|
|||
## 커스텀 독 메뉴 (OS X)
|
||||
|
||||
OS X는 개발자가 dock에 커스텀 메뉴를 만들 수 있도록 허용하고 있습니다.
|
||||
보통 어플리케이션의 특정 기능 바로가기를 만들 때 사용합니다:
|
||||
보통 애플리케이션의 특정 기능 바로가기를 만들 때 사용합니다:
|
||||
|
||||
__Terminal.app의 dock menu:__
|
||||
|
||||
|
@ -129,12 +129,12 @@ app.dock.setMenu(dockMenu);
|
|||
Windows에선 JumpList의 `Tasks` 카테고리에 원하는 작업을 설정할 수 있습니다.
|
||||
MSDN에선 해당 기능을 다음과 같이 설명하고 있습니다:
|
||||
|
||||
> 어플리케이션 작업은 프로그램의 기능 그리고 주요사양 두가지를 기반으로 유저의 행동을
|
||||
> 예측하여 정의합니다. 실행할 필요가 없는 어플리케이션 작업은 작동하지 않을 때 반드시
|
||||
> 애플리케이션 작업은 프로그램의 기능 그리고 주요사양 두가지를 기반으로 유저의 행동을
|
||||
> 예측하여 정의합니다. 실행할 필요가 없는 애플리케이션 작업은 작동하지 않을 때 반드시
|
||||
> context-free를 유지해야 합니다. 작업은 일반 사용자가 프로그램을 실행하거나 이메일
|
||||
> 프로그램으로 이메일을 작성하거나 달력을 불러오고, 워드 프로세서로 새 문서를 작성,
|
||||
> 특정 모드, 부속 명령으로 프로그램을 실행하는 등의 통계적, 일반적으로 가장 많이
|
||||
> 사용되는 작업인지를 고려해야 합니다. 어플리케이션 작업은 일반 유저가 필요로 하지
|
||||
> 사용되는 작업인지를 고려해야 합니다. 애플리케이션 작업은 일반 유저가 필요로 하지
|
||||
> 않는 고급 기능을 조잡하게 채우거나 등록과 같은 일회성의 작업을 포함해선 안됩니다.
|
||||
> 또한 작업에 특별 이벤트 또는 업그레이드 등의 홍보성 작업을 추가하면 안됩니다.
|
||||
>
|
||||
|
@ -147,8 +147,8 @@ __Internet Explorer의 작업:__
|
|||
|
||||
![IE](http://i.msdn.microsoft.com/dynimg/IC420539.png)
|
||||
|
||||
OS X의 dock menu(진짜 메뉴)와는 달리 Windows의 사용자 작업은 어플리케이션 바로
|
||||
가기처럼 작동합니다. 유저가 작업을 클릭할 때 설정한 인수와 함께 새로운 어플리케이션이
|
||||
OS X의 dock menu(진짜 메뉴)와는 달리 Windows의 사용자 작업은 애플리케이션 바로
|
||||
가기처럼 작동합니다. 유저가 작업을 클릭할 때 설정한 인수와 함께 새로운 애플리케이션이
|
||||
실행됩니다.
|
||||
|
||||
사용자 작업을 설정하려면 [app.setUserTasks][setusertaskstasks] 메서드를 통해 구현할
|
||||
|
@ -175,12 +175,12 @@ app.setUserTasks([]);
|
|||
```
|
||||
|
||||
|
||||
사용자 작업 리스트는 어플리케이션이 삭제되지 않는 한 종료되어도 태스크바에 보존됩니다.
|
||||
사용자 작업 리스트는 애플리케이션이 삭제되지 않는 한 종료되어도 태스크바에 보존됩니다.
|
||||
이러한 이유로 반드시 프로그램 경로와 아이콘 경로를 지정해야 합니다.
|
||||
|
||||
## 미리보기 툴바
|
||||
|
||||
Windows에선 작업 표시줄의 어플리케이션 선택시 나오는 미리보기에 특정한 미리보기 툴바를
|
||||
Windows에선 작업 표시줄의 애플리케이션 선택시 나오는 미리보기에 특정한 미리보기 툴바를
|
||||
추가할 수 있습니다. 이 기능은 유저가 윈도우를 활성화 하지 않고 특정한 커맨드를 실행시킬
|
||||
수 있도록 할 수 있습니다.
|
||||
|
||||
|
@ -188,7 +188,7 @@ MSDN의 설명에 의하면:
|
|||
|
||||
> 이 툴바는 표준 툴바의 공통 컨트롤과 비슷한 역할을 합니다. 버튼은 최대 7개 까지
|
||||
> 만들 수 있습니다. 각 버튼의 구조엔 ID, 이미지, 툴팁, 상태 등이 정의되어있습니다.
|
||||
> 작업표시줄에 구조가 전달되면 어플리케이션이 상태에 따라 버튼을 숨기거나, 활성화하거나,
|
||||
> 작업표시줄에 구조가 전달되면 애플리케이션이 상태에 따라 버튼을 숨기거나, 활성화하거나,
|
||||
> 비활성화 할 수 있습니다.
|
||||
>
|
||||
> 예를 들어, 윈도우 미디어 플레이어는(WMP) 미디어 플레이어가 공통적으로 사용하는
|
||||
|
@ -198,7 +198,7 @@ __Windows Media Player의 미리보기 툴바:__
|
|||
|
||||
![player](https://i-msdn.sec.s-msft.com/dynimg/IC420540.png)
|
||||
|
||||
[BrowserWindow.setThumbarButtons][setthumbarbuttons] API를 통해 어플리케이션에
|
||||
[BrowserWindow.setThumbarButtons][setthumbarbuttons] API를 통해 애플리케이션에
|
||||
미리보기 툴바를 설정할 수 있습니다:
|
||||
|
||||
```javascript
|
||||
|
@ -243,8 +243,8 @@ __Audacious의 런처 숏컷:__
|
|||
|
||||
## 작업 표시줄 안의 프로그래스 바 (Windows, OS X, Unity)
|
||||
|
||||
Windows에선 작업 표시줄의 어플리케이션 버튼에 프로그래스 바를 추가할 수 있습니다.
|
||||
이 기능은 사용자가 어플리케이션의 창을 열지 않고도 어플리케이션의 작업의 상태 정보를
|
||||
Windows에선 작업 표시줄의 애플리케이션 버튼에 프로그래스 바를 추가할 수 있습니다.
|
||||
이 기능은 사용자가 애플리케이션의 창을 열지 않고도 애플리케이션의 작업의 상태 정보를
|
||||
시각적으로 보여줄 수 있도록 해줍니다.
|
||||
|
||||
OS X에선 프로그래스바가 dock 아이콘의 일부에 표시됩니다.
|
||||
|
@ -265,7 +265,7 @@ win.setProgressBar(0.5);
|
|||
|
||||
## 작업 표시줄의 아이콘 오버레이 (Windows)
|
||||
|
||||
Windows에선 작업 표시줄 버튼에 어플리케이션의 상태를 표시하는 작은 오버레이를 사용할
|
||||
Windows에선 작업 표시줄 버튼에 애플리케이션의 상태를 표시하는 작은 오버레이를 사용할
|
||||
수 있습니다. MSDN에서 인용하자면 (영문):
|
||||
|
||||
> Icon overlays serve as a contextual notification of status, and are intended
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# 개발자 도구 확장 기능
|
||||
|
||||
어플리케이션의 디버깅을 쉽게 하기 위해 Electron은 기본적으로
|
||||
애플리케이션의 디버깅을 쉽게 하기 위해 Electron은 기본적으로
|
||||
[Chrome DevTools Extension][devtools-extension]을 지원합니다.
|
||||
|
||||
Electron은 유명한 웹 프레임워크를 디버깅하기 위해 사용할 수 있는 개발자 도구 확장
|
||||
|
|
|
@ -8,12 +8,12 @@ Electron은 Node와 Chromium에 큰 의존성을 지니고 있는 만큼, 유의
|
|||
버전 숫자는 다음과 같은 규칙으로 올라갑니다:
|
||||
|
||||
* Major: Electron API의 주요 변경 사항을 반영합니다 - 만약 `0.37.0`에서 `1.0.0`로
|
||||
업그레이드하는 경우, 어플리케이션을 업데이트해야 합니다.
|
||||
업그레이드하는 경우, 애플리케이션을 업데이트해야 합니다.
|
||||
* Minor: 주요 Chrome과 Node 버전의 업그레이드를 반영하거나; Electron의 중요한 변경
|
||||
사항을 반영합니다 - 만약 `1.0.0`에서 `1.1.0`로 업그레이드하는 경우, 어플리케이션은
|
||||
사항을 반영합니다 - 만약 `1.0.0`에서 `1.1.0`로 업그레이드하는 경우, 애플리케이션은
|
||||
여전히 작동하겠지만, 약간의 업데이트가 필요할 수 있습니다.
|
||||
* Patch: 새로운 기능과 버그 수정을 반영합니다 - 만약 `1.0.0`에서 `1.0.1`로
|
||||
업그레이드하는 경우, 어플리케이션은 잘 작동할 것입니다.
|
||||
업그레이드하는 경우, 애플리케이션은 잘 작동할 것입니다.
|
||||
|
||||
`electron-prebuilt`를 사용하고 있다면, Electron의 변경 사항을 확실하게 인지하고
|
||||
개발자 스스로 업그레이드를 적용하기 위해 고정된 버전 숫자를 사용하는 것을 권장합니다.
|
||||
|
|
|
@ -1,38 +1,38 @@
|
|||
# Mac 앱 스토어 어플리케이션 제출 가이드
|
||||
# Mac 앱 스토어 애플리케이션 제출 가이드
|
||||
|
||||
Electron은 v0.34.0 버전부터 앱 패키지를 Mac App Store(MAS)에 제출할 수 있게
|
||||
되었습니다. 이 가이드는 어플리케이션을 앱 스토어에 등록하는 방법과 빌드의 한계에 대한
|
||||
되었습니다. 이 가이드는 애플리케이션을 앱 스토어에 등록하는 방법과 빌드의 한계에 대한
|
||||
설명을 제공합니다.
|
||||
|
||||
**참고:** Mac App Store에 어플리케이션을 등록하려면
|
||||
**참고:** Mac App Store에 애플리케이션을 등록하려면
|
||||
[Apple Developer Program][developer-program]에 등록되어 있어야 하며 비용이 발생할
|
||||
수 있습니다.
|
||||
|
||||
## 앱 스토어에 어플리케이션을 등록하는 방법
|
||||
## 앱 스토어에 애플리케이션을 등록하는 방법
|
||||
|
||||
다음 몇 가지 간단한 절차에 따라 앱 스토어에 어플리케이션을 등록하는 방법을 알아봅니다.
|
||||
다음 몇 가지 간단한 절차에 따라 앱 스토어에 애플리케이션을 등록하는 방법을 알아봅니다.
|
||||
한가지, 이 절차는 제출한 앱이 Apple로부터 승인되는 것을 보장하지 않습니다. 따라서
|
||||
여전히 Apple의 [Submitting Your App][submitting-your-app] 가이드를 숙지하고 있어야
|
||||
하며 앱 스토어 제출 요구 사항을 확실히 인지하고 있어야 합니다.
|
||||
|
||||
### 인증서 취득
|
||||
|
||||
앱 스토어에 어플리케이션을 제출하려면, 먼저 Apple로부터 인증서를 취득해야 합니다. 취득
|
||||
앱 스토어에 애플리케이션을 제출하려면, 먼저 Apple로부터 인증서를 취득해야 합니다. 취득
|
||||
방법은 웹에서 찾아볼 수 있는 [가이드][nwjs-guide]를 참고하면 됩니다.
|
||||
|
||||
### Team ID 얻기
|
||||
|
||||
어플리케이션에 서명하기 전에, 먼저 개발 계정의 Team ID를 알아야 합니다. Team ID를
|
||||
애플리케이션에 서명하기 전에, 먼저 개발 계정의 Team ID를 알아야 합니다. Team ID를
|
||||
알아보려면 [Apple Developer Center](https://developer.apple.com/account/)에
|
||||
로그인한 후, 사이드바의 Membership을 클릭합니다. Team ID는 Membership Information
|
||||
섹션의 팀 이름 밑에 위치합니다.
|
||||
|
||||
### 앱에 서명하기
|
||||
|
||||
준비 작업이 끝난 후, [어플리케이션 배포](application-distribution.md) 문서에 따라
|
||||
어플리케이션을 패키징한 후 어플리케이션에 서명합니다.
|
||||
준비 작업이 끝난 후, [애플리케이션 배포](application-distribution.md) 문서에 따라
|
||||
애플리케이션을 패키징한 후 애플리케이션에 서명합니다.
|
||||
|
||||
먼저, Team ID를 키로 가지고 있는 어플리케이션의 `Info.plist`에 `ElectronTeamID` 키를
|
||||
먼저, Team ID를 키로 가지고 있는 애플리케이션의 `Info.plist`에 `ElectronTeamID` 키를
|
||||
추가해야 합니다:
|
||||
|
||||
```xml
|
||||
|
@ -77,17 +77,17 @@ Electron은 v0.34.0 버전부터 앱 패키지를 Mac App Store(MAS)에 제출
|
|||
</plist>
|
||||
```
|
||||
|
||||
`TEAM_ID` 부분은 Team ID로 치환하고, `your.bundle.id` 부분은 어플리케이션의 Bundle
|
||||
`TEAM_ID` 부분은 Team ID로 치환하고, `your.bundle.id` 부분은 애플리케이션의 Bundle
|
||||
ID로 치환해야 합니다.
|
||||
|
||||
그리고 다음 스크립트를 통해 어플리케이션에 서명합니다:
|
||||
그리고 다음 스크립트를 통해 애플리케이션에 서명합니다:
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
|
||||
# 어플리케이션의 이름.
|
||||
# 애플리케이션의 이름.
|
||||
APP="YourApp"
|
||||
# 서명할 어플리케이션의 경로.
|
||||
# 서명할 애플리케이션의 경로.
|
||||
APP_PATH="/path/to/YourApp.app"
|
||||
# 서명된 패키지의 출력 경로.
|
||||
RESULT_PATH="~/Desktop/$APP.pkg"
|
||||
|
@ -118,7 +118,7 @@ productbuild --component "$APP_PATH" /Applications --sign "$INSTALLER_KEY" "$RES
|
|||
|
||||
만약 OS X의 샌드박스 개념에 대해 처음 접한다면 Apple의 [Enabling App Sandbox][enable-app-sandbox]
|
||||
문서를 참고하여 기본적인 개념을 이해해야 합니다. 그리고 자격(plist) 파일에
|
||||
어플리케이션에서 요구하는 권한의 키를 추가합니다.
|
||||
애플리케이션에서 요구하는 권한의 키를 추가합니다.
|
||||
|
||||
그 외에 [electron-osx-sign][electron-osx-sign] 모듈을 이용해서 직접 서명할 수도 있습니다.
|
||||
|
||||
|
@ -135,19 +135,19 @@ electron-osx-sign YourApp.app YourApp.app/Contents/Resources/app/node_modules/na
|
|||
이 경우 오브젝트 파일들의 서명을 해야할 수도 있습니다.
|
||||
[electron-packager][electron-packager]를 사용한다면, 빌드 과정에 `--ignore=.+\.o$` 코드를 추가해 해당 파일을 무시해줍시다.
|
||||
|
||||
### 어플리케이션 업로드
|
||||
### 애플리케이션 업로드
|
||||
|
||||
어플리케이션 서명을 완료한 후 iTunes Connect에 업로드하기 위해 Application Loader를
|
||||
애플리케이션 서명을 완료한 후 iTunes Connect에 업로드하기 위해 Application Loader를
|
||||
사용할 수 있습니다. 참고로 업로드하기 전에 [레코드][create-record]를 만들었는지
|
||||
확인해야 합니다.
|
||||
|
||||
### 어플리케이션을 심사에 제출
|
||||
### 애플리케이션을 심사에 제출
|
||||
|
||||
위 과정을 마치면 [어플리케이션을 심사를 위해 제출][submit-for-review]할 수 있습니다.
|
||||
위 과정을 마치면 [애플리케이션을 심사를 위해 제출][submit-for-review]할 수 있습니다.
|
||||
|
||||
## MAS 빌드의 한계
|
||||
|
||||
모든 어플리케이션 샌드박스에 대한 요구 사항을 충족시키기 위해, 다음 모듈들은 MAS
|
||||
모든 애플리케이션 샌드박스에 대한 요구 사항을 충족시키기 위해, 다음 모듈들은 MAS
|
||||
빌드에서 비활성화됩니다:
|
||||
|
||||
* `crashReporter`
|
||||
|
@ -157,15 +157,15 @@ electron-osx-sign YourApp.app YourApp.app/Contents/Resources/app/node_modules/na
|
|||
|
||||
* 비디오 캡쳐 기능은 몇몇 장치에서 작동하지 않을 수 있습니다.
|
||||
* 특정 접근성 기능이 작동하지 않을 수 있습니다.
|
||||
* 어플리케이션이 DNS의 변경을 감지하지 못할 수 있습니다.
|
||||
* 애플리케이션이 DNS의 변경을 감지하지 못할 수 있습니다.
|
||||
|
||||
또한 어플리케이션 샌드박스 개념으로 인해 어플리케이션에서 접근할 수 있는 리소스는
|
||||
또한 애플리케이션 샌드박스 개념으로 인해 애플리케이션에서 접근할 수 있는 리소스는
|
||||
엄격하게 제한되어 있습니다. 자세한 내용은 [앱 샌드박싱][app-sandboxing] 문서를
|
||||
참고하세요.
|
||||
|
||||
## Electron에서 사용하는 암호화 알고리즘
|
||||
|
||||
국가와 살고 있는 지역에 따라, 맥 앱스토어는 제출한 어플리케이션에서 사용하는 암호화
|
||||
국가와 살고 있는 지역에 따라, 맥 앱스토어는 제출한 애플리케이션에서 사용하는 암호화
|
||||
알고리즘의 문서를 요구할 수 있습니다. 심지어 U.S. Encryption Registration (ERN)의
|
||||
승인 사본을 제출하라고 할 수도 있습니다.
|
||||
|
||||
|
@ -196,7 +196,7 @@ Electron은 다음과 같은 암호화 알고리즘을 사용합니다:
|
|||
* RIPEMD - [ISO/IEC 10118-3](http://webstore.ansi.org/RecordDetail.aspx?sku=ISO%2FIEC%2010118-3:2004)
|
||||
|
||||
ERN의 승인을 얻는 방법은, 다음 글을 참고하는 것이 좋습니다:
|
||||
[어플리케이션이 암호화를 사용할 때, 합법적으로 Apple의 앱 스토어에 제출하는 방법 (또는 ERN의 승인을 얻는 방법)][ern-tutorial].
|
||||
[애플리케이션이 암호화를 사용할 때, 합법적으로 Apple의 앱 스토어에 제출하는 방법 (또는 ERN의 승인을 얻는 방법)][ern-tutorial].
|
||||
|
||||
**역주:** [Mac 앱 배포 가이드 공식 한국어 문서](https://developer.apple.com/osx/distribution/kr/)
|
||||
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
## 소개
|
||||
|
||||
Electron은 자바스크립트와 함께 제공된 풍부한 네이티브 API를 사용하여 멋진 데스크탑
|
||||
어플리케이션을 만들 수 있도록 해주는 프레임워크입니다. 이 프레임워크의 Node.js는 웹
|
||||
서버 개발이 아닌 데스크탑 어플리케이션 개발에 초점을 맞췄습니다.
|
||||
애플리케이션을 만들 수 있도록 해주는 프레임워크입니다. 이 프레임워크의 Node.js는 웹
|
||||
서버 개발이 아닌 데스크탑 애플리케이션 개발에 초점을 맞췄습니다.
|
||||
|
||||
이 말은 Electron이 GUI 라이브러리의 자바스크립트 바인딩이라는 뜻이 아닙니다. 대신,
|
||||
Electron은 웹 페이지의 GUI를 사용합니다. 쉽게 말해 Electron은 자바스크립트를 사용하여
|
||||
|
@ -77,7 +77,7 @@ __알림__: 만약 `main` 필드가 `package.json`에 설정되어 있지 않으
|
|||
|
||||
```javascript
|
||||
const electron = require('electron');
|
||||
// 어플리케이션 생명주기를 조작 하는 모듈.
|
||||
// 애플리케이션 생명주기를 조작 하는 모듈.
|
||||
const {app} = electron;
|
||||
// 네이티브 브라우저 창을 만드는 모듈.
|
||||
const {BrowserWindow} = electron;
|
||||
|
@ -110,9 +110,9 @@ function createWindow () {
|
|||
// 사용할 수 있습니다.
|
||||
app.on('ready', createWindow);
|
||||
|
||||
// 모든 창이 닫히면 어플리케이션 종료.
|
||||
// 모든 창이 닫히면 애플리케이션 종료.
|
||||
app.on('window-all-closed', () => {
|
||||
// OS X의 대부분의 어플리케이션은 유저가 Cmd + Q 커맨드로 확실하게
|
||||
// OS X의 대부분의 애플리케이션은 유저가 Cmd + Q 커맨드로 확실하게
|
||||
// 종료하기 전까지 메뉴바에 남아 계속 실행됩니다.
|
||||
if (process.platform !== 'darwin') {
|
||||
app.quit();
|
||||
|
@ -127,7 +127,7 @@ app.on('activate', () => {
|
|||
}
|
||||
});
|
||||
|
||||
// 이 파일엔 제작할 어플리케이션에 특화된 메인 프로세스 코드를
|
||||
// 이 파일엔 제작할 애플리케이션에 특화된 메인 프로세스 코드를
|
||||
// 포함할 수 있습니다. 또한 파일을 분리하여 require하는 방법으로
|
||||
// 코드를 작성할 수도 있습니다.
|
||||
```
|
||||
|
@ -143,7 +143,7 @@ app.on('activate', () => {
|
|||
</head>
|
||||
<body>
|
||||
<h1>헬로 월드!</h1>
|
||||
이 어플리케이션은 node <script>document.write(process.version)</script>,
|
||||
이 애플리케이션은 node <script>document.write(process.version)</script>,
|
||||
Chrome <script>document.write(process.versions.chrome)</script>,
|
||||
Electron <script>document.write(process.versions.electron)</script>을 사용합니다.
|
||||
</body>
|
||||
|
@ -152,7 +152,7 @@ app.on('activate', () => {
|
|||
|
||||
## 앱 실행하기
|
||||
|
||||
앱을 작성한 후 [어플리케이션 배포](application-distribution.md) 가이드를 따라 앱을
|
||||
앱을 작성한 후 [애플리케이션 배포](application-distribution.md) 가이드를 따라 앱을
|
||||
패키징 하고 패키징한 앱을 실행할 수 있습니다. 또한 Electron 실행파일을 다운로드 받아
|
||||
바로 실행해 볼 수도 있습니다.
|
||||
|
||||
|
@ -161,7 +161,7 @@ app.on('activate', () => {
|
|||
[`electron-prebuilt`](https://github.com/electron-userland/electron-prebuilt)는
|
||||
Electron의 미리 컴파일된 바이너리를 포함하는 `npm` 모듈입니다.
|
||||
|
||||
만약 `npm`을 통해 전역에 이 모듈을 설치했다면, 어플리케이션 소스 디렉터리에서 다음
|
||||
만약 `npm`을 통해 전역에 이 모듈을 설치했다면, 애플리케이션 소스 디렉터리에서 다음
|
||||
명령을 실행하면 바로 실행할 수 있습니다:
|
||||
|
||||
```bash
|
||||
|
@ -202,12 +202,12 @@ $ ./electron/electron your-app/
|
|||
$ ./Electron.app/Contents/MacOS/Electron your-app/
|
||||
```
|
||||
|
||||
어플리케이션 실행파일은 `Electron`의 release 패키지에 포함되어 있습니다.
|
||||
애플리케이션 실행파일은 `Electron`의 release 패키지에 포함되어 있습니다.
|
||||
[여기](https://github.com/electron/electron/releases)에서 다운로드 받을 수 있습니다.
|
||||
|
||||
### 배포용 실행 파일 만들기
|
||||
|
||||
어플리케이션 작성을 모두 끝냈다면 [어플리케이션 배포](application-distribution.md)
|
||||
애플리케이션 작성을 모두 끝냈다면 [애플리케이션 배포](application-distribution.md)
|
||||
가이드를 통해 제작한 앱을 패키징하고 배포할 수 있습니다.
|
||||
|
||||
### 미리 작성된 앱 실행하기
|
||||
|
@ -226,7 +226,7 @@ $ ./Electron.app/Contents/MacOS/Electron your-app/
|
|||
$ git clone https://github.com/electron/electron-quick-start
|
||||
# 저장소 안으로 들어갑니다
|
||||
$ cd electron-quick-start
|
||||
# 어플리케이션의 종속성 모듈을 설치한 후 실행합니다
|
||||
# 애플리케이션의 종속성 모듈을 설치한 후 실행합니다
|
||||
$ npm install && npm start
|
||||
```
|
||||
|
||||
|
|
|
@ -8,16 +8,16 @@
|
|||
|
||||
하지만 Electron을 사용하여 작업한다면, Electron은 웹 브라우저가 아니라는 것을 기억해
|
||||
두어야 합니다. Electron은 친근한 웹 기술을 사용하여 풍부한 기능의 데스크톱
|
||||
어플리케이션을 만들 수 있도록 해주지만 그만큼 코드가 더 큰 힘을 사용합니다.
|
||||
애플리케이션을 만들 수 있도록 해주지만 그만큼 코드가 더 큰 힘을 사용합니다.
|
||||
JavaScript가 파일 시스템, 유저 쉘, 그외 여러가지 기능에 접근할 수 있습니다. 이러한
|
||||
능력은 높은 퀄리티를 가진 네이티브 어플리케이션을 개발할 수 있도록 해주지만 코드에
|
||||
능력은 높은 퀄리티를 가진 네이티브 애플리케이션을 개발할 수 있도록 해주지만 코드에
|
||||
부여된 추가적인 기능만큼 고유한 보안 문제가 발생할 가능성이 있습니다.
|
||||
|
||||
이를 염두해두고, 신뢰할 수 없는 출처의 임의의 콘텐츠를 표시할 때 Electron에서
|
||||
자체적으로 처리하지 않는 심각한 보안 문제를 야기할 수 있다는 점을 주의해야 합니다.
|
||||
실제로도, 가장 유명한 Electron 어플리케이션들은 (Atom, Slack, Visual Studio Code,
|
||||
실제로도, 가장 유명한 Electron 애플리케이션들은 (Atom, Slack, Visual Studio Code,
|
||||
등) 주로 로컬 콘텐츠를 (또는 Node 통합이 제외된 신뢰된, 보안된 원격 콘텐츠) 사용합니다
|
||||
- 만약 어플리케이션이 온라인 출처에서 가져온 코드를 실행한다면, 그 코드가 악성 코드가
|
||||
- 만약 애플리케이션이 온라인 출처에서 가져온 코드를 실행한다면, 그 코드가 악성 코드가
|
||||
아닌지 판별하는 것은 본인의 책임입니다.
|
||||
|
||||
## Chromium 보안 문제와 업그레이드
|
||||
|
@ -29,7 +29,7 @@ Electron이 새로운 버전의 Chromium을 가능한 한 빠르게 지원하려
|
|||
며칠부터 몇 주까지 더 걸릴 수 있습니다.
|
||||
|
||||
현재 Chromium 구성 요소를 업데이트하는 시스템은 우리가 사용할 수 있는 자원과 이
|
||||
프레임워크를 기반으로 구축된 대부분의 어플리케이션이 요구하는 것 사이에서 적절한 균형을
|
||||
프레임워크를 기반으로 구축된 대부분의 애플리케이션이 요구하는 것 사이에서 적절한 균형을
|
||||
유지하고 있다고 느끼고 있습니다. 우리는 확실히 Electron 위에 무언가를 만드는 사람들의
|
||||
사용 사례에 대한 자세한 내용을 듣는 것에 관심이 있습니다. 이러한 노력을 지원하는 Pull
|
||||
request와 기여는 언제나 환영합니다.
|
||||
|
@ -39,11 +39,11 @@ request와 기여는 언제나 환영합니다.
|
|||
원격 위치에서 받아온 코드를 로컬에서 실행하는 경우 언제나 보안 문제가 존재합니다.
|
||||
예를 들어, 원격 웹 사이트가 브라우저 윈도우에서 표시될 때를 생각해볼 때, 만약 공격자가
|
||||
어떠한 방법으로 웹 페이지의 콘텐츠를 변경하는 경우 (소스를 직접적으로 공격하거나
|
||||
어플리케이션과 실질적인 위치 사이에서 공격하는 등), 공갹자는 사용자의 기기에서 네이티브
|
||||
애플리케이션과 실질적인 위치 사이에서 공격하는 등), 공갹자는 사용자의 기기에서 네이티브
|
||||
코드를 실행할 수 있습니다.
|
||||
|
||||
> :warning: 어떠한 상황에서도 원격 코드를 로드하고 실행할 땐 Node 통합 기능을
|
||||
비활성화하고, 로컬 파일만 (어플리케이션 패키지 내부에 포함된) Node 코드를 실행시킬 수
|
||||
비활성화하고, 로컬 파일만 (애플리케이션 패키지 내부에 포함된) Node 코드를 실행시킬 수
|
||||
있도록 하는 것이 좋습니다. 원격 콘텐츠를 표시할 땐, 항상 `webview`를 사용하고
|
||||
`nodeIntegration`이 비활성화되어있는지 확인하세요.
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
Chromium을 기반으로 한 Electron은 작업을 위해 디스플레이 드라이버가 필요합니다.
|
||||
만약 Chromium이 디스플레이 드라이버를 찾기 못한다면, Electron은 그대로 실행에
|
||||
실패할 것입니다. 따라서 실행하는 방법에 관계없이 모든 테스트를 실행하지 못하게 됩니다.
|
||||
Electron 기반 어플리케이션을 Travis, Circle, Jenkins 또는 유사한 시스템에서 테스팅을
|
||||
Electron 기반 애플리케이션을 Travis, Circle, Jenkins 또는 유사한 시스템에서 테스팅을
|
||||
진행하려면 약간의 설정이 필요합니다. 요점만 말하자면, 가상 디스플레이 드라이버가
|
||||
필요합니다.
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# Pepper 플래시 플러그인 사용하기
|
||||
|
||||
Electron은 Pepper 플래시 플러그인을 지원합니다. Electron에서 Pepper 플래시
|
||||
플러그인을 사용하려면 Pepper 플래시 플러그인의 위치를 지정한 후 어플리케이션 내에서
|
||||
플러그인을 사용하려면 Pepper 플래시 플러그인의 위치를 지정한 후 애플리케이션 내에서
|
||||
활성화 시켜야 합니다.
|
||||
|
||||
## 플래시 플러그인 준비하기
|
||||
|
|
|
@ -40,7 +40,7 @@ app.start().then(function () {
|
|||
// 윈도우의 제목을 검증합니다.
|
||||
assert.equal(title, 'My App')
|
||||
}).then(function () {
|
||||
// 어플리케이션을 중지합니다.
|
||||
// 애플리케이션을 중지합니다.
|
||||
return app.stop()
|
||||
}).catch(function (error) {
|
||||
// 테스트의 실패가 있다면 로깅합니다.
|
||||
|
@ -159,11 +159,11 @@ client
|
|||
|
||||
## 작업 환경
|
||||
|
||||
따로 Electron을 다시 빌드하지 않는 경우 간단히 어플리케이션을 Electron의 리소스
|
||||
따로 Electron을 다시 빌드하지 않는 경우 간단히 애플리케이션을 Electron의 리소스
|
||||
디렉터리에 [배치](application-distribution.md)하여 바로 테스트 할 수 있습니다.
|
||||
|
||||
또한, Electron 바이너리의 명령줄 인수에 어플리케이션 폴더를 지정하는 방법으로 실행할
|
||||
수도 있습니다. 이 방법을 사용하면 어플리케이션 폴더를 Electron의 `resource`
|
||||
또한, Electron 바이너리의 명령줄 인수에 애플리케이션 폴더를 지정하는 방법으로 실행할
|
||||
수도 있습니다. 이 방법을 사용하면 애플리케이션 폴더를 Electron의 `resource`
|
||||
디렉터리로 복사하는 불필요한 과정을 생략할 수 있습니다.
|
||||
|
||||
[chrome-driver]: https://sites.google.com/a/chromium.org/chromedriver/
|
||||
|
|
|
@ -19,7 +19,7 @@ Chrome 브라우저에서 `chrome://components/`를 열고 `WidevineCdm`을 찾
|
|||
`APP_DATA/Google/Chrome/WidevineCDM/VERSION/_platform_specific/PLATFORM_ARCH/`
|
||||
디렉터리에서 찾을 수 있습니다.
|
||||
|
||||
`APP_DATA`는 어플리케이션 데이터를 저장하고 있는 시스템 경로입니다. Windows에선
|
||||
`APP_DATA`는 애플리케이션 데이터를 저장하고 있는 시스템 경로입니다. Windows에선
|
||||
`%LOCALAPPDATA%`로 접근할 수 있고 OS X에선 `~/Library/Application Support`로
|
||||
접근할 수 있습니다. `VERSION`은 `1.4.8.866` 같은 Widevine CDM 플러그인의 버전
|
||||
문자열입니다. `PLATFORM`은 플랫폼을 뜻하며 `mac` 또는 `win`이 될 수 있으며 `ARCH`는
|
||||
|
|
|
@ -4,8 +4,8 @@ Windows 8부터, 오래되고 좋은 win32 실행 파일이 새로운 형제를
|
|||
Windows Platform. 새로운 `.appx` 포맷은 Cortana와 푸시 알림과 같은 다수의 강력한
|
||||
API뿐만 아니라, Windows Store를 통해 설치와 업데이트를 단순화합니다.
|
||||
|
||||
Microsoft는 개발자들이 새로운 어플리케이션 모델의 좋은 기능들을 사용할 수 있도록
|
||||
[Electron 어플리케이션을 `.appx` 패키지로 컴파일시키는 도구를 개발했습니다](http://github.com/catalystcode/electron-windows-store).
|
||||
Microsoft는 개발자들이 새로운 애플리케이션 모델의 좋은 기능들을 사용할 수 있도록
|
||||
[Electron 애플리케이션을 `.appx` 패키지로 컴파일시키는 도구를 개발했습니다](http://github.com/catalystcode/electron-windows-store).
|
||||
이 가이드는 이 도구를 사용하는 방법과 Electron AppX 패키지의 호환성과 한정 사항을
|
||||
설명합니다.
|
||||
|
||||
|
@ -13,19 +13,19 @@ Microsoft는 개발자들이 새로운 어플리케이션 모델의 좋은 기
|
|||
|
||||
Windows 10 "기념일 업데이트"는 win32 `.exe` 바이너리를 가상화된 파일 시스템과
|
||||
레지스트리를 함께 실행시킬 수 있도록 만들었습니다. 두 가지 모두 실행 중인
|
||||
어플리케이션과 Windows 컨테이너 안의 인스톨러에 의해 컴파일되는 동안 만들어지며,
|
||||
애플리케이션과 Windows 컨테이너 안의 인스톨러에 의해 컴파일되는 동안 만들어지며,
|
||||
설치가 되는 동안 Windows가 확실하게 어떤 변경 사항이 운영 체제에 적용되는지 식별할 수
|
||||
있도록 합니다. 가상 파일 시스템과 가상 레지스트리를 페어링 하는 실행 파일은 Windows가
|
||||
원-클릭으로 설치와 삭제를 할 수 있도록 만듭니다.
|
||||
|
||||
더 나아가서, exe는 appx 모델 안에서 실행됩니다 - 이 말은 즉 Universial Windows
|
||||
Platform에서 제공되는 수많은 API를 사용할 수 있다는 이야기입니다. 더 많은 기능을
|
||||
사용하기 위해, Electron 어플리케이션은 숨겨진 UWP 앱과 페어링 하여 `exe`와 같이
|
||||
사용하기 위해, Electron 애플리케이션은 숨겨진 UWP 앱과 페어링 하여 `exe`와 같이
|
||||
실행할 수 있습니다 - 이렇게 헬퍼와 비슷하게 실행되고 작업을 실행하기 위해
|
||||
백그라운드에서 작동하며, 푸시 알림을 받거나, 다른 UWP 어플리케이션과 통신하는 역할을
|
||||
백그라운드에서 작동하며, 푸시 알림을 받거나, 다른 UWP 애플리케이션과 통신하는 역할을
|
||||
합니다.
|
||||
|
||||
현재 존재하는 Electron 어플리케이션을 컴파일 하려면, 다음 요구 사항을 충족해야 합니다:
|
||||
현재 존재하는 Electron 애플리케이션을 컴파일 하려면, 다음 요구 사항을 충족해야 합니다:
|
||||
|
||||
* Windows 10 기념일 업데이트 - 엔터프라이즈 에디션 (이 업데이트는 빌드 번호가 14316
|
||||
이거나, 더 높습니다 - 2016년 5월, Windows Insiders Preview 업데이트에 포함되어
|
||||
|
@ -58,13 +58,13 @@ npm install -g electron-windows-store
|
|||
전달하고 설치를 진행합니다.
|
||||
3. 만약 위 명령이 재시작을 요구하면, 기기를 재시작하고 위 명령을 다시 실행시키세요.
|
||||
|
||||
설치가 완료되면, 컴파일할 Electron 어플리케이션 경로로 이동합니다.
|
||||
설치가 완료되면, 컴파일할 Electron 애플리케이션 경로로 이동합니다.
|
||||
|
||||
## Electron 어플리케이션 패키지 만들기
|
||||
## Electron 애플리케이션 패키지 만들기
|
||||
|
||||
[electron-packager](https://github.com/electron-userland/electron-packager)를
|
||||
사용하여 어플리케이션을 패키징합니다. (또는 비슷한 도구를 사용합니다) 마지막으로 최종
|
||||
어플리케이션에선 `node_modules`가 필요 없으며 그저 어플리케이션의 크기를 늘릴 뿐이니
|
||||
사용하여 애플리케이션을 패키징합니다. (또는 비슷한 도구를 사용합니다) 마지막으로 최종
|
||||
애플리케이션에선 `node_modules`가 필요 없으며 그저 애플리케이션의 크기를 늘릴 뿐이니
|
||||
확실하게 지웠는지 확인합니다.
|
||||
|
||||
출력된 파일들은 대충 다음과 같아야 합니다:
|
||||
|
@ -101,7 +101,7 @@ npm install -g electron-windows-store
|
|||
## 명령줄 도구 실행하기
|
||||
|
||||
관리자 권한의 PowerShell ("관리자 권한으로 실행")을 실행하고, 디렉토리 입력과 출력,
|
||||
어플리케이션의 이름과 버전, 마지막으로 `node_modules`를 평탄화시키는 인수들과 함께
|
||||
애플리케이션의 이름과 버전, 마지막으로 `node_modules`를 평탄화시키는 인수들과 함께
|
||||
`electron-windows-store`를 실행합니다.
|
||||
|
||||
```
|
||||
|
@ -113,8 +113,8 @@ electron-windows-store `
|
|||
--package-name myelectronapp
|
||||
```
|
||||
|
||||
명령이 실행되면, 도구는 다음과 같이 작동합니다: Electron 어플리케이션을 입력으로 받고,
|
||||
`node_modules`를 평탄화하고 어플리케이션을 `app.zip`으로 압축합니다. 그리고
|
||||
명령이 실행되면, 도구는 다음과 같이 작동합니다: Electron 애플리케이션을 입력으로 받고,
|
||||
`node_modules`를 평탄화하고 애플리케이션을 `app.zip`으로 압축합니다. 그리고
|
||||
인스톨러와 Windows Container를 사용하여, "확장된" AppX 패키지를 만듭니다 -
|
||||
Windows Application Manifest (`AppXManifest.xml`)와 동시에 가상 파일 시스템과 가상
|
||||
레지스트리를 포함하여 출력 폴더로 내보냅니다.
|
||||
|
@ -127,10 +127,10 @@ Windows Application Manifest (`AppXManifest.xml`)와 동시에 가상 파일 시
|
|||
## AppX 패키지 사용하기
|
||||
|
||||
Windows 기념일 업데이트 (코드네임 Windows 레드스톤)가 아직 모든 일반 사용자에게
|
||||
배포되지 않았기 때문에, 올해까지는 어플리케이션을 Windows Store에 올릴 수 없을 것
|
||||
배포되지 않았기 때문에, 올해까지는 애플리케이션을 Windows Store에 올릴 수 없을 것
|
||||
입니다 - 하지만 개발자 또는 회사 환경에서 `Add-AppxPackage`
|
||||
[PowerShell Cmdlet을 통해](https://technet.microsoft.com/en-us/library/hh856048.aspx)
|
||||
기기에 어플리케이션을 설치할 수 있습니다.
|
||||
기기에 애플리케이션을 설치할 수 있습니다.
|
||||
|
||||
또 다른 중요한 제약은 컴파일된 AppX 패키지는 여전히 win32 실행 파일이 담겨있다는
|
||||
것입니다 - 따라서 Xbox, HoloLen, Phone에서 실행할 수 없습니다.
|
||||
|
|
Loading…
Reference in a new issue