From 6dd18678a9db5ab2891e6afd3ea1ab36fdd21f8e Mon Sep 17 00:00:00 2001 From: DemoPark <106856363@qq.com> Date: Thu, 16 Feb 2017 16:31:55 +0800 Subject: [PATCH] add translations files for zh-CN add zh-CN translations file - security.md add zh-CN translations file - repl.md add zh-CN translations file - windows-store-guide.md update zh-CN translations file - glossary.md update zh-CN translations file - README.md --- docs-translations/zh-CN/README.md | 6 +- docs-translations/zh-CN/glossary.md | 2 +- docs-translations/zh-CN/tutorial/repl.md | 22 ++++ docs-translations/zh-CN/tutorial/security.md | 46 +++++++ .../zh-CN/tutorial/windows-store-guide.md | 114 ++++++++++++++++++ 5 files changed, 186 insertions(+), 4 deletions(-) create mode 100644 docs-translations/zh-CN/tutorial/repl.md create mode 100644 docs-translations/zh-CN/tutorial/security.md create mode 100644 docs-translations/zh-CN/tutorial/windows-store-guide.md diff --git a/docs-translations/zh-CN/README.md b/docs-translations/zh-CN/README.md index 04167acf629c..fba7f3007f5d 100644 --- a/docs-translations/zh-CN/README.md +++ b/docs-translations/zh-CN/README.md @@ -12,7 +12,7 @@ * [术语表](glossary.md) * [支持平台](tutorial/supported-platforms.md) -* [安全性](tutorial/security.md) 未翻译 +* [安全性](tutorial/security.md) * [Electron 版本管理](tutorial/electron-versioning.md) * [分发应用](tutorial/application-distribution.md) * [提交应用到 Mac App Store](tutorial/mac-app-store-submission-guide.md) @@ -24,7 +24,7 @@ * [使用开发人员工具扩展](tutorial/devtools-extension.md) * [使用 Pepper Flash 插件](tutorial/using-pepper-flash-plugin.md) * [使用 Widevine CDM 插件](tutorial/using-widevine-cdm-plugin.md) -* [通过自动化持续集成系统(CI)进行测试 (Travis, Jenkins)](tutorial/testing-on-headless-ci.md) 未翻译 +* [通过自动化持续集成系统(CI)进行测试 (Travis, Jenkins)](tutorial/testing-on-headless-ci.md) * [离屏渲染](tutorial/offscreen-rendering.md) ## 教程 @@ -32,7 +32,7 @@ * [快速入门](tutorial/quick-start.md) * [桌面环境集成](tutorial/desktop-environment-integration.md) * [在线/离线事件探测](tutorial/online-offline-events.md) -* [应答式编译器(REPL)](tutorial/repl.md) 未翻译 +* [交互式解释器(REPL)](tutorial/repl.md) ## API文档 diff --git a/docs-translations/zh-CN/glossary.md b/docs-translations/zh-CN/glossary.md index 37ca43d9fb43..69465b537dc0 100644 --- a/docs-translations/zh-CN/glossary.md +++ b/docs-translations/zh-CN/glossary.md @@ -1,4 +1,4 @@ -# Glossary +# 术语表 这篇文档说明了一些经常在 Electron 开发中使用的专业术语。 diff --git a/docs-translations/zh-CN/tutorial/repl.md b/docs-translations/zh-CN/tutorial/repl.md new file mode 100644 index 000000000000..c23a4fc951ef --- /dev/null +++ b/docs-translations/zh-CN/tutorial/repl.md @@ -0,0 +1,22 @@ +# 交互式解释器 (REPL) + +读取(Read)-运算(Eval)-输出(Print)-循环(Loop) (REPL) 是很简单的, 交互式的计算机编程环境,它采用单个用户输入,运算并返回结果给用户。 + +在这里 `repl` 模块提供了一个 REPL 的实现, 可以这样使用: + +* 如果你的 `electron` 或 `electron-prebuilt` 已经安装为本地项目依赖项: + + ```sh + ./node_modules/.bin/electron --interactive + ``` +* 如果你的 `electron` 或 `electron-prebuilt` 已经为全局方式安装: + + ```sh + electron --interactive + ``` + +这里只会为主进程创建一个REPL。 您可以使用 Dev Tools 的“控制台”选项卡来为渲染器进程获取一个REPL。 + +**注意:** `electron --interactive` 在 Windows 上不可用. + +更多的内容可以在这里找到 [Node.js REPL docs](https://nodejs.org/dist/latest/docs/api/repl.html). diff --git a/docs-translations/zh-CN/tutorial/security.md b/docs-translations/zh-CN/tutorial/security.md new file mode 100644 index 000000000000..b546f5c5aef3 --- /dev/null +++ b/docs-translations/zh-CN/tutorial/security.md @@ -0,0 +1,46 @@ +# 安全,本地功能和你的责任 + +作为 web 开发人员,我们通常喜欢网络安全性更强大的浏览器 - 与我们编写的代码相关的风险相对较小。我们的网站在沙箱中获得有限的权限,我们相信我们的用户可以享受由大量工程师团队构建的浏览器,能够快速响应新发现的安全威胁。 + +当使用 Electron 时,要知道 Electron 不是一个 Web 浏览器很重要。它允许您使用熟悉的 Web 技术构建功能丰富的桌面应用程序,但是您的代码具有更强大的功能。 JavaScript 可以访问文件系统,用户 shell 等。这允许您构建更高质量的本机应用程序,但是内在的安全风险会随着授予您的代码的额外权力而增加。 + +考虑到这一点,请注意,在 Electron 不任何处理的情况下显示来自不受信任的来源的任何内容将带来了严重的安全风险。事实上,最流行的 Electron 应用程序(Atom,Slack,Visual Studio Code 等)主要显示本地内容(或没有 Node 集成的可信安全远程内容) - 如果您的应用程序从在线源执行代码,那么您有责任确保代码不是恶意的。 + +## 报告安全问题 + +有关如何正确上报 Electron 漏洞的信息,参阅 [SECURITY.md](https://github.com/electron/electron/tree/master/SECURITY.md) + +## Chromium 安全问题和升级 + +尽管 Electron 努力尽快支持新版本的 Chromium,但开发人员应该意识到,升级是一项严肃的工作 - 涉及手动编辑几十个甚至几百个文件。 考虑到当前的资源和贡献,Electron 通常不会是最新版本的 Chromium,总是落后于一两天或几周。 + +我们认为,我们当前的更新 Chromium 组件的系统在我们可用的资源和构建在框架之上的大多数应用程序的需求之间取得了适当的平衡。 我们绝对有兴趣听听更多关于在 Electron 上构建事物的人的具体用例。 非常欢迎提出请求并且捐助支持我们的努力。 + +## 除了以上建议 + +每当您从远程目标收到代码并在本地执行它时,就会存在安全问题。 举个例子,比如在浏览器窗口内显示的远程网站。 如果攻击者以某种方式设法改变所述内容(通过直接攻击源或者通过在应用和实际目的地之间进行攻击),他们将能够在用户的机器上执行本地代码。 + +> :警告: 在任何情况下都不应该在启用了 Node 集成时加载并执行远程代码. 反而应该只使用本地文件(与应用程序一起打包)来执行 Node 代码。要显示远程内容, 应使用 `webview` 标签并确保禁用了 `nodeIntegration`. + +#### 检查列表 + +这并不是万无一失的,但至少,你应该尝试以下内容: + +* 只显示安全的内容(https) +* 在显示远程内容的所有渲染器中禁用 Node 集成 (在 `webPreferences` 中设置 `nodeIntegration` 为 `false`) +* 在显示远程内容的所有渲染器中启用上下文隔离 (在 `webPreferences` 中设置 `contextIsolation` 为 `true`) +* 在所有加载远程内容的会话中使用 `ses.setPermissionRequestHandler()` . +* 不要禁用 `webSecurity`. 禁用它将禁用同源策略. +* 定义一个 [`Content-Security-Policy`](http://www.html5rocks.com/en/tutorials/security/content-security-policy/) +, 并使用限制规则 (即: `script-src 'self'`) +* 覆盖并禁用 [`eval`](https://github.com/nylas/N1/blob/0abc5d5defcdb057120d726b271933425b75b415/static/index.js#L6-L8) +, 它允许字符串作为代码执行. +* 不要设置 `allowRunningInsecureContent` 为 `true`. +* 不要启用 `experimentalFeatures` 或 `experimentalCanvasFeatures` 除非你知道你在做什么. +* 不要使用 `blinkFeatures` 除非你知道你在做什么. +* WebViews: 不要填加 `nodeintegration` 属性. +* WebViews: 不要使用 `disablewebsecurity` +* WebViews: 不要使用 `allowpopups` +* WebViews: 不要使用 `insertCSS` 或 `executeJavaScript` 操作远程 CSS/JS. + +强调一下,这份列表只是将风险降到最低,并不会完全屏蔽风险。 如果您的目的是展示一个网站,浏览器将是一个更安全的选择。 \ No newline at end of file diff --git a/docs-translations/zh-CN/tutorial/windows-store-guide.md b/docs-translations/zh-CN/tutorial/windows-store-guide.md new file mode 100644 index 000000000000..67cd39e5a520 --- /dev/null +++ b/docs-translations/zh-CN/tutorial/windows-store-guide.md @@ -0,0 +1,114 @@ +# Windows商店指南 + +在 Windows 8 中, 一些不错的旧 win32 程序迎来了一个新朋友: 通用Windows平台(UWP)。 新的 `.appx` 格式不仅启用了许多新的强大的 API,如 Cortana 或推送通知,而且通过Windows 应用商店,也同时简化了安装和更新。 + +Microsoft 开发了一个工具,将 Electron 应用程序[编译为 `.appx` 软件包][electron-windows-store],使开发人员能够使用新应用程序模型中的一些好东西。 本指南解释了如何使用它 - 以及 Electron AppX 包的功能和限制。 + +## 背景和要求 + +Windows 10 的 "周年更新" 能够运行 win32 `.exe` 程序并且它们的虚拟化文件系统和注册表跟随一起启动。 两者都是通过在 Windows 容器中运行应用程序和安装器编译后创建的,允许 Windows 在安装过程中正确识别操作系统进行了哪些修改。 将可执行文件和虚拟文件系统与虚拟注册表配对, 允许 Windows 启用一键安装和卸载。 + +此外,exe 在 appx 模型内启动 - 这意味着它可以使用通用 Windows 平台可用的许多 API。 为了获得更多的功能,Electron 应用程序可以与一个看不见的 UWP 后台任务配合使用,它与 `exe` 一起启动,作为后台运行任务的接收器,接收推送通知或与其他 UWP 应用程序通信 。 + +要编译任何现有的 Electron 应用程序,请确保满足以下要求: + +* Windows 10及周年更新 (2016年8月2日发布的) +* Windows 10 SDK, [这里下载][windows-sdk] +* 最新的 Node 4 (运行 `node -v` 来确认) + +然后, 安装 `electron-windows-store` CLI: + +``` +npm install -g electron-windows-store +``` + +## 步骤 1: 打包你的 Electron 应用程序 + +打包应用程序使用 [electron-packager][electron-packager] (或类似工具). 确保在最终的应用程序中删除不需要的 `node_modules`, 因为这些你不需要模块只会额外增加你的应用程序的大小. + +结构输出应该看起来大致像这样: + +``` +├── Ghost.exe +├── LICENSE +├── content_resources_200_percent.pak +├── content_shell.pak +├── d3dcompiler_47.dll +├── ffmpeg.dll +├── icudtl.dat +├── libEGL.dll +├── libGLESv2.dll +├── locales +│   ├── am.pak +│   ├── ar.pak +│   ├── [...] +├── natives_blob.bin +├── node.dll +├── resources +│   ├── app +│   └── atom.asar +├── snapshot_blob.bin +├── squirrel.exe +├── ui_resources_200_percent.pak +└── xinput1_3.dll +``` + +## 步骤 2: 运行 electron-windows-store + +从提权的 PowerShell(用管理员身份运行它)中,以所需的参数运行 `electron-windows-store`,传递输入和输出目录,应用程序的名称和版本,以及确认`node_modules`应该是扁平的。 + + +``` +electron-windows-store ` + --input-directory C:\myelectronapp ` + --output-directory C:\output\myelectronapp ` + --flatten true ` + --package-version 1.0.0.0 ` + --package-name myelectronapp +``` + +一旦执行,工具就开始工作:它接受您的 Electron 应用程序作为输入,展平 `node_modules`。 然后,它将应用程序归档为 `app.zip`。 使用安装程序和 Windows 容器,该工具创建一个“扩展的” AppX 包 - 包括 Windows 应用程序清单 (`AppXManifest.xml`)以及虚拟文件系统和输出文件夹中的虚拟注册表。 + +当创建扩展的 AppX 文件后,该工具使用 Windows App Packager(`MakeAppx.exe`)将磁盘上的这些文件创建为单文件 AppX 包。 最后,该工具可用于在计算机上创建可信证书,以签署新的 AppX 包。 使用签名的 AppX 软件包,CLI也可以自动在您的计算机上安装软件包。 + + +## 步骤 3: 使用 AppX 包 + +为了运行您的软件包,您的用户将需要将 Windows 10 安装“周年纪念更新” - 有关如何更新Windows的详细信息可以在[这里][how-to-update]找到 + +与传统的UWP应用程序不同,打包应用程序目前需要进行手动验证过程,您可以在[这里][centennial-campaigns]申请. +在此期间,所有用户都能够通过双击安装包来安装您的程序,所以如果您只是寻找一个更简单的安装方法,可能不需要提交到商店。 + +在受管理的环境中(通常是企业), `Add-AppxPackage` PowerShell Cmdlet 可用于以[自动方式安装][add-appxpackage]它。 + +另一个重要的限制是编译的 AppX 包仍然包含一个 win32 可执行文件,因此不会在 Xbox,HoloLens 或 Phones 中运行。 + +## 可选: 使用 BackgroundTask 添加 UWP 功能 + +您可以将 Electron 应用程序与不可见的 UWP 后台任务配对,以充分利用 Windows 10 功能,如推送通知,Cortana 集成或活动磁贴。 + +如何使用 Electron 应用程序通过后台任务发送 Toast 通知和活动磁贴,请查看[微软提供的案例][background-task]. + + +## 可选: 使用容器虚拟化进行转换 + +要生成 AppX 包,`electron-windows-store` CLI 使用的模板应该适用于大多数 Electron 应用程序。 但是,如果您使用自定义安装程序,或者您遇到生成的包的任何问题,您可以尝试使用 Windows 容器编译创建包 - 在该模式下,CLI 将在空 Windows 容器中安装和运行应用程序,以确定应用程序正在对操作系统进行哪些修改。 + +在运行 CLI 之前,您必须设置 “Windows Desktop App Converter” 。 这将需要几分钟,但不要担心 - 你只需要这样做一次。 从这里下载 [Desktop App Converter][app-converter] + +您将得到两个文件: `DesktopAppConverter.zip` 和 `BaseImage-14316.wim`. + +1. 解压 `DesktopAppConverter.zip`. 打开提权的 PowerShell (用"以管理员权限运行"打开, 确保您的系统执行策略允许我们通过调用 `Set-ExecutionPolicy bypass` 来运行我们想要运行的一切). +2. 然后, 通过调用 `.\DesktopAppConverter.ps1 -Setup -BaseImage .\BaseImage-14316.wim`, 运行 Desktop App Converter 安装,并传递 Windows 基本映像的位置 (下载的 `BaseImage-14316.wim`). +3. 如果运行以上命令提示您重新启动,请重新启动计算机,并在成功重新启动后再次运行上述命令。 + +当安装成功后,您可以继续编译你的 Electron 应用程序。 + +[windows-sdk]: https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk +[app-converter]: https://www.microsoft.com/en-us/download/details.aspx?id=51691 +[add-appxpackage]: https://technet.microsoft.com/en-us/library/hh856048.aspx +[electron-packager]: https://github.com/electron-userland/electron-packager +[electron-windows-store]: https://github.com/catalystcode/electron-windows-store +[background-task]: https://github.com/felixrieseberg/electron-uwp-background +[centennial-campaigns]: https://developer.microsoft.com/en-us/windows/projects/campaigns/desktop-bridge +[how-to-update]: https://blogs.windows.com/windowsexperience/2016/08/02/how-to-get-the-windows-10-anniversary-update