RocketChat/Rocket.Chat.Electron
GitHub: RocketChat/Rocket.Chat.Electron
Rocket.Chat 的跨平台桌面客户端,支持预配置服务器、设置覆盖和单服务器模式,适合企业级安全通信场景的批量部署与管控。
Stars: 1676 | Forks: 809
# Rocket.Chat 桌面应用
[](https://github.com/RocketChat/Rocket.Chat.Electron/actions)

[](https://github.com/RocketChat/Rocket.Chat.Electron/releases/latest)

[Rocket.Chat][] 的桌面应用程序,适用于 macOS、Windows 和 Linux,
使用 [Electron][] 构建。

## 支持的平台
| 平台 | 最低版本 | 架构 | 格式 |
| ------- | -------------------- | ------------------------ | --------------------------------- |
| Windows | 10 | x64, ia32, arm64 | NSIS, MSI |
| macOS | 12 (Monterey) | Universal (x64 + Apple Silicon) | DMG, PKG, ZIP |
| Linux | Ubuntu 22.04+ 或同等版本 | x64 | AppImage, deb, rpm, snap, tar.gz |
## 下载
您可以从 [Releases][] 页面下载最新版本。
## 安装
启动安装程序并按照说明进行安装。
### Windows 选项
在 Windows 上,您可以通过添加 `/S` 标志来执行静默安装。您还可以添加以下选项:
- `/S` - 静默安装
- `/allusers` - 为所有用户安装(需要管理员权限)
- `/currentuser` - 仅为当前用户安装(默认)
- `/disableAutoUpdates` - 禁用自动更新
## 开发
### 快速开始
前置条件:
- [Git](http://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
- [Node.js](https://nodejs.org) >= 24.11.1
- [Yarn](http://yarnpkg.com/) >= 4.0.2
现在只需克隆并启动应用:
```
git clone https://github.com/RocketChat/Rocket.Chat.Electron.git
cd Rocket.Chat.Electron
yarn
yarn start
```
### 项目结构
源代码位于 `src` 文件夹中。当使用 `yarn start` 运行应用时,此文件夹中的所有内容都会被自动构建。
构建过程会编译 `src` 文件夹中的所有内容,并将其放入 `app` 文件夹,因此构建完成后,您的 `app` 文件夹将包含完整的、可运行的应用程序。
### TypeScript
随着 [Rocket.Chat 代码库的不断变化][ongoing changes in Rocket.Chat codebase],该应用程序已使用 TypeScript 5 重写,以解决可维护性方面的问题。
### 构建流水线
构建过程基于 [rollup][] bundler。代码有三个入口文件:
- `src/main.ts`,在 Electron 主进程运行的脚本,负责编排整个应用程序;
- `src/rootWindow.ts`,负责渲染 _根窗口_(即应用主窗口)UI 的脚本;
- 以及 `src/preload.ts`,它以特权模式运行,用于连接应用和渲染 Rocket.Chat Web 客户端的 webviews。
#### 添加 Node.js 模块
请记住在 `package.json` 文件中遵守 `dependencies` 和 `devDependencies` 的区分。只有列在 `dependencies` 中的模块才会被包含到可分发的应用中。
### 故障排除
#### Ubuntu/Debian
您可能需要安装以下软件包以进行开发:
```
sudo apt install build-essential libxss-dev
```
#### Fedora/RHEL
您可能需要安装以下软件包以进行开发:
```
sudo dnf install libX11-devel libXScrnSaver-devel gcc-c++
```
### 测试
#### 单元测试
```
yarn test
```
我们使用 [Jest][] 测试框架和 [Jest electron runner][]。它会搜索 `src` 目录中所有匹配 glob 模式 `*.(spec|test).{js,ts,tsx}` 的文件。
### 发布版本
要将您的应用程序打包成安装程序,请使用以下命令:
```
yarn release
```
它将为您运行此命令的操作系统启动打包过程。准备分发的文件将输出到 `dist` 目录。
所有打包操作均由 [electron-builder][] 处理。它有许多[自定义选项][customization options]。
## 默认服务器
`servers.json` 文件将定义客户端连接的服务器,并将在侧边栏中填充服务器列表。它包含一个默认服务器列表,该列表将在用户首次运行应用程序时添加(或者当列表中所有服务器都被移除时)。
文件语法如下:
```
{
"Demo Rocket Chat": "https://demo.rocket.chat",
"Open Rocket Chat": "https://open.rocket.chat"
}
```
### 预安装配置
您可以将 `servers.json` 捆绑在安装包中,该文件应位于项目应用程序的根目录(与 `package.json` 同级)。如果找到该文件,将跳过初始的“连接到服务器”屏幕,并尝试连接到数组中定义的第一个服务器,直接将用户带到登录屏幕。请注意,只有在尚未添加其他服务器的情况下才会检查 `servers.json`,即使您卸载了应用程序但未删除旧的偏好设置,也不会再次触发此检查。
### 安装后配置
如果您不能(或不想)将文件捆绑在应用程序内部,您可以在用户偏好设置文件夹中创建一个 `servers.json`,它将覆盖打包的文件。该文件应位于 `%APPDATA%/Rocket.Chat/` 文件夹中,或者在为所有用户安装的情况下,位于安装文件夹中(仅限 Windows)。
对于 Windows,完整路径为:
- `~\Users\\AppData\Roaming\Rocket.Chat\`
- `~\Program Files\Rocket.Chat\Resources\`
在 macOS 上,完整路径为:
- `~/Users//Library/Application Support/Rocket.Chat/`
- `/Library/Preferences/Rocket.Chat/`
在 Linux 上,完整路径为:
- `/home//.config/Rocket.Chat/`
- `/opt/Rocket.Chat/resources/`
### 覆盖设置
您可以通过在用户偏好设置文件夹中创建 `overridden-settings.json` 来覆盖用户设置。
该文件应位于 `%APPDATA%/Rocket.Chat/` 文件夹中,或者在为所有用户安装的情况下,位于安装文件夹中(仅限 Windows)。
文件中设置的每个设置都将覆盖默认设置和用户设置。然后,您可以使用它来禁用自动更新等默认功能,甚至可以创建单服务器模式。
#### 可以被覆盖的设置包括:
| 设置 | 描述 |
| ------------------------------------------ | ----------------------------------------------------------------------------------------------------- |
| `"isReportEnabled": true` | 设置是否向开发人员报告 Bug。 |
| `"isInternalVideoChatWindowEnabled": true` | 设置是否在内部窗口中打开视频通话。 |
| `"isFlashFrameEnabled": true` | 设置是否启用闪烁帧。 |
| `"isMinimizeOnCloseEnabled": false` | 设置关闭时是否最小化应用程序。 |
| `"doCheckForUpdatesOnStartup": true` | 设置应用程序是否在启动时检查更新。 |
| `"isMenuBarEnabled": true` | 设置是否启用菜单栏。 |
| `"isTrayIconEnabled": true` | 启用托盘图标,关闭时应用程序将隐藏到托盘。覆盖 `"isMinimizeOnCloseEnabled"` |
| `"isUpdatingEnabled": true` | 设置用户是否可以更新应用程序。 |
| `"isAddNewServersEnabled": true` | 设置用户是否可以添加新服务器。 |
##### 单服务器模式
如果设置了 `"isAddNewServersEnabled": false`,用户将无法添加新服务器。
按钮和快捷键将被禁用。因此,您必须将服务器添加到 `servers.json` 文件中。
通过这种方式,您可以创建单服务器模式,或者只是不让用户自行添加新服务器。
##### 配置示例
`overridden-settings.json` 文件:
```
{
"isTrayIconEnabled": false,
"isMinimizeOnCloseEnabled": false
}
```
如果启用了 `isTrayIconEnabled`,应用程序在关闭时将被隐藏。
如果启用了 `isMinimizeOnCloseEnabled`,应用程序在关闭时将被最小化。
如果两者都禁用,应用程序将在关闭时退出。
## 许可证
根据 MIT 许可证发布。
标签:CMS安全, DNS 反向解析, Electron, GNU通用公共许可证, JavaScript, MITM代理, Node.js, Rocket.Chat, WebSocket, 任务关键型通信, 企业通讯, 依赖分析, 内部沟通, 医疗通信, 即时通讯, 合规通信, 团队协作, 国防通信, 安全通信, 实时聊天, 开源, 政府通信, 数据主权, 文件共享, 桌面客户端, 私有部署, 端到端加密, 自动化攻击, 自动化攻击, 自托管, 视频会议, 远程办公