# 致信客开常见问题
注:根目录是 源码的根目录或者致信安装位置的 resources/app 目录
# Q1. 如何更换客户端图标、名称以及窗口中的【致信】字样?
# 1). 客户端图标文件介绍
项目的 根目录/res 目录下,详细介绍如下:
- app.icns:MacOS 应用图标(1024 * 1024)
- app.ico:Windows 应用图标, 安装包图标(256 * 256)
- app.png:Linux 应用图标,任务栏图标,启动页面背景图标(1024 * 1024)
- bg.png: Mac 安装界面背景(600 * 400)
- Windows_icon.png: Windows、Linux 托盘图标(64 * 64)
- Windows_Remind_icon.png:Windows、Linux 托盘闪烁时图标(64 * 64)
- remind_ZXlogo_normalTemplate@2x.png:Mac 托盘图标(64 * 64)
- Mac_Remind_icon_white.png:Mac 托盘闪烁时图标(64 * 64)
备注:请分别替换掉上述图标文件,保持命名一样即可。 图标用法请参考https://www.electronjs.org/docs/latest/api/native-image
# 2). 修改客户端名称和图标(基于上方图标介绍)
- Linux和国产化机器: 项目的 根目录/script/forge.config.js 文件里配置客户端打包信息,如下图:
- MacOS 和 Windows: 项目的 根目录/src/local_config.json 文件里修改名称、版本号,如下图: 项目的 根目录/src/config.js 文件里修改图标(建议不修改),如下图:
# 3). 修改窗口中显示的【致信】
- 项目的 根目录/src/locales 文件夹里, 如下文件,修改文件中致信: en.json zh-CN.json zh-TW.json
- 项目的 根目录/src/modules/page_addr/i18n.js 文件。
- 项目的 根目录/src/modules/page_addr/index.html 文件。
# Q2. 任务栏图标不显示或修改任务栏的图标?
项目的 项目根目录/src/main.js 找到创建窗口的方法,添加或修改图标,如下图:
# Q3. 修改窗口大小,位置等信息?
项目的 项目根目录/src/main.js 找到创建窗口的方法,参考文档https://www.electronjs.org/docs/latest/api/browser-window,如下图:
# Q4. 修改系统托盘菜单、图标、提示文字?
- 系统托盘显示如图:
- 系统托盘修改:
项目根目录/src/modules/tray/tray.set.js 设置托盘提示文字和图标,如下代码:
const Config = require('../../config.js');
const path = require('path');
const baseDir = path.join(__dirname, '../../../res');
let TrayImg = platform.darwin ? Config.MAC.TRAY : Config.WIN.TRAY; // 根目录/src/config.js 中配置
TrayImg = path.join(baseDir, TrayImg); // 托盘显示图标
let tray = {}
if (appTray) {
tray = appTray
} else {
tray = new Tray(TrayImg);
}
let trayMenu = Utils.getMenu(menus);
tray.on('click', () => {
openMainWindow()
});
tray.on('right-click', () => {
tray.popUpContextMenu(trayMenu)
});
tray.setImage(TrayImg); // 设置图标
tray.setToolTip(Config.MAIN_WINDOW.title); // 设置提示文字
- 登录前的菜单:
项目根目录/src/modules/tray/tray.main.js 设置托盘菜单、闪烁,如下代码:
```javascript
const Config = require('../../config.js');
const setMenu = require('./tray.set.js')(electron);
const path = require('path');
const baseDir = path.join(__dirname, '../../../res');
const TrayImg = path.join(baseDir, platform.darwin ? Config.MAC.TRAY : Config.WIN.TRAY); // 闪烁图标 根目录/src/config.js 中配置
const TrayOffImg = path.join(baseDir, platform.darwin ? Config.MAC.TRAY_OFF : Config.WIN.TRAY_OFF); // 闪烁图标 根目录/src/config.js 中配置
const defaultMenus = () => { // 登录前的默认菜单
let locale = global.locale;
let template = [
{
label: locale.__('winTrayMenus.Open'), // 打开致信
click () {
openMainWindow() // 显示窗口
}
},
{
type: 'separator'
},
{
label: locale.__('winTrayMenus.Exit'), // 退出
click () {
app.quit(); // 退出程序
}
}
];
return template;
};
// 托盘闪烁操作
const BlinkHandler = {
interval: null,
set: (enabled) => {
if (enabled) {
BlinkHandler.start();
} else {
BlinkHandler.stop();
}
},
start: () => {
BlinkHandler.stop();
let flag;
let iconFile = [ TrayImg, TrayOffImg ];
BlinkHandler.interval = setInterval(() => {
flag = !flag;
// 设置全局 tray 的 icon
if (BrowserWindow.tray && BrowserWindow.tray.setImage) {
BrowserWindow.tray.setImage(iconFile[ flag ? 1 : 0 ]);
}
}, 500);
},
stop: () => {
clearInterval(BlinkHandler.interval);
BlinkHandler.interval = null;
// 设置全局 tray 的 icon
if (BrowserWindow.tray) {
BrowserWindow.tray.setImage(TrayImg);
}
}
};
ipcMain.on('tray-blink', (event, enabled) => {
BlinkHandler.set(enabled);
});
- 登录后托盘设置: 项目根目录/src/adapt-old.js 搜索 setTrayMenu 方法,设置登录后和锁定时的托盘菜单, 如下:
/**
* 设置托盘菜单
*
* @param {string} type 托盘菜单类型
*
* Tray 文档地址
* https://electronjs.org/docs/api/tray
*
* PS:执行下面的命令设置托盘菜单
* ZX_CLIENT.setTrayMenu('login')
*/
function setTrayMenu(type) {
var Tray = ZxDesktop.require('Tray');
const locale = remote.getGlobal('locale');
var BrowserWindow = ZxDesktop.require('BrowserWindow');
var app = ZxDesktop.require('App');
// 登录之前,和锁定的菜单
var loginMenus = [
{
label: locale.__('winTrayMenus.Open'), 打开致信
click: function () {
console.log(locale.__('winTrayMenus.Open'))
BrowserWindow.show();
}
},
{
type: 'separator'
},
{
label: locale.__('winTrayMenus.Exit'), // 退出
click: function () {
console.log(locale.__('winTrayMenus.Exit'))
app.quit();
}
}
];
// 登录之后的菜单
var loggedMenus = [
{
label: locale.__('winTrayMenus.Open'), // 打开致信
click: function () {
console.log(locale.__('winTrayMenus.Open'))
BrowserWindow.show();
}
},
{
label: locale.__('winTrayMenus.lock'), // 锁定
click: function () {
console.log(locale.__('winTrayMenus.lock'))
ipcRenderer.send('lock-screen');
}
},
{
type: 'separator'
},
{
label: locale.__('winTrayMenus.logout'), // 注销
click: function () {
console.log(locale.__('winTrayMenus.logout'))
ZX_CLIENT.setTrayMenu("login")
ipcRenderer.send('go-logout');
}
},
{
label: locale.__('winTrayMenus.Exit'), // 退出
click: function () {
console.log(locale.__('winTrayMenus.Exit'))
app.quit();
}
}
];
switch (type) {
case 'login': // 锁定
Tray.setMenu({menus: loginMenus});
break;
case 'logged': // 登录后
Tray.setMenu({menus: loggedMenus});
setLoginAppMenus();
break;
default:
break;
}
}
# Q5. 启动致信客户端,配置IP页面,文字不显示 ?
删除 appdata/zhixin/uc.cfg 文件, APPDATA 路径:%APPDATA% Windows 中 $XDG_CONFIG_HOME or ~/.config Linux 中~/Library/Application macOS 中
# Q6. 使用ZX_CLIENT.getMAC()获取mac地址时会出现为null的情况 ?
- 终端里 cd 到源码所在目录,执行 npm uninstall getmac ;
- 然后 npm install getmac , 安装新版本getmac 模块;
- 修改 文件 \src\modules\system\system.render.js
const mac = require('getmac') // 修改成 ->
const getMac = require('getmac').default;
// 注释或删除下面代码
// mac.getMac(function(err, mac) {
// if (err) throw err
// macAddress = mac;
// });
deviceId: {
get: () => {
return macAddress;
}
}
// 修改成 ->
deviceId: {
get: () => {
if (!macAddress) {
macAddress = getMac();
}
return macAddress;
}
}
← 致信后端开发文档 致信客开开发环境说明 →