# 配置说明
**本文档引用的文件**
- [config.ini](file://config.ini)
- [Install\Geomative Studio\config.ini](file://Install/Geomative Studio/config.ini)
- [database_modify.xml](file://database_modify.xml)
- [version_info.txt](file://version_info.txt)
- [cpp\Main\GeoMative.cpp](file://cpp/Main/GeoMative.cpp)
- [cpp\Tools\checkupdate.cpp](file://cpp/Tools/checkupdate.cpp)
## 目录
1. [项目结构](#项目结构)
2. [核心配置文件分析](#核心配置文件分析)
3. [配置加载与优先级](#配置加载与优先级)
4. [版本管理与更新机制](#版本管理与更新机制)
5. [数据库变更管理](#数据库变更管理)
6. [配置最佳实践](#配置最佳实践)
## 项目结构
GeomativeStudio项目的目录结构清晰地分为多个功能区域,包括缓存、数据库、安装包、日志、发布版本和源代码等。项目根目录下的`config.ini`文件是主要的配置文件,而`Install`目录下也包含了一个`config.ini`副本,用于安装过程中的配置。
```mermaid
graph TD
A[GeomativeStudio] --> B[CACHE]
A --> C[DB]
A --> D[Install]
A --> E[LOG]
A --> F[Release]
A --> G[cpp]
A --> H[h]
A --> I[res]
A --> J[tools]
A --> K[config.ini]
A --> L[database_modify.xml]
A --> M[version_info.txt]
D --> N[GD_10]
D --> O[Geomative Studio]
O --> P[LOG]
O --> Q[tools]
O --> R[config.ini]
O --> S[database_modify.xml]
O --> T[version_info.txt]
F --> U[DB]
F --> V[config.ini]
```
**Diagram sources**
- [config.ini](file://config.ini)
- [Install\Geomative Studio\config.ini](file://Install/Geomative Studio/config.ini)
- [database_modify.xml](file://database_modify.xml)
- [version_info.txt](file://version_info.txt)
**Section sources**
- [config.ini](file://config.ini)
- [Install\Geomative Studio\config.ini](file://Install/Geomative Studio/config.ini)
- [database_modify.xml](file://database_modify.xml)
- [version_info.txt](file://version_info.txt)
## 核心配置文件分析
### UI配置节
[UI]配置节主要控制用户界面的语言设置。Language参数决定了应用程序的显示语言。
- **Language**: 语言设置参数,值为1表示中文,2表示英文。该参数在程序启动时被读取,并通过`WM_CHANGE_LANGUAGE`消息通知主窗口切换语言。
```ini
[UI]
Language=1
```
**Section sources**
- [config.ini](file://config.ini#L1-L3)
- [cpp\Main\GeoMative.cpp](file://cpp/Main/GeoMative.cpp#L447-L458)
### 传输信息配置节
[TRANSFER_INFO]配置节定义了软件更新和主页的URL地址。
- **Url**: 自动更新服务器的URL地址,用于检查和下载新版本。
- **HomePage**: 公司官方网站地址,用于用户访问更多信息。
```ini
[TRANSFER_INFO]
Url=http://update.geomative.com/Upgrade/software/V2.0
HomePage=http://www.geomative.com/
```
**Section sources**
- [config.ini](file://config.ini#L4-L7)
- [cpp\Main\GeoMative.cpp](file://cpp/Main/GeoMative.cpp#L1116-L1135)
### 数据导出配置节
[EXPORT_DATA]配置节控制数据导出的样式设置。
- **2dDataExpStyle**: 二维数据导出样式,值为0表示默认样式。
```ini
[EXPORT_DATA]
2dDataExpStyle=0
```
**Section sources**
- [config.ini](file://config.ini#L8-L10)
### 在线设备配置节
[ONLINE_DEVICE]配置节定义了远程设备连接的网络参数。
- **RemoteType**: 远程传输类型,值为2表示云传输模式。
- **IP**: 远程服务器IP地址。
- **Port**: 远程服务器端口号。
```ini
[ONLINE_DEVICE]
RemoteType=2
IP=120.31.131.181
Port=8769
```
**Section sources**
- [config.ini](file://config.ini#L11-L15)
- [cpp\Main\GeoMative.cpp](file://cpp/Main/GeoMative.cpp#L492-L500)
### 用户信息配置节
[USER_INFO]、[USER_Pwd]、[USER_Save]和[USER_Auto]配置节共同管理用户认证信息。
- **UserID**: 用户ID,用于身份识别。
- **UserPwd**: 用户密码,用于身份验证。
- **UserSave**: 是否保存密码,1表示保存,0表示不保存。
- **UserAuto**: 是否自动登录,1表示自动登录,0表示手动登录。
```ini
[USER_INFO]
UserID=12345637
[USER_Pwd]
UserPwd=123456
[USER_Save]
UserSave=1
[USER_Auto]
UserAuto=0
```
**Section sources**
- [config.ini](file://config.ini#L25-L38)
- [cpp\Main\GeoMative.cpp](file://cpp/Main/GeoMative.cpp#L434-L442)
- [cpp\Views\DailLogin.cpp](file://cpp/Views/DailLogin.cpp#L19-L30)
### 跨孔测量配置节
[CROSS_HOLE_CFG]配置节定义了跨孔测量的配置组,包含多个CFG_n子节。
- **Number**: 配置组数量,表示有多少个CFG_n配置节。
- **CFG_n**: 每个配置组包含Name、FirstPoleDep和HoleSpace三个参数。
```ini
[CROSS_HOLE_CFG]
Number=6
[CFG_1]
Name=1_2
FirstPoleDep=1
HoleSpace=2.66
[CFG_2]
Name=1_3
FirstPoleDep=1
HoleSpace=2.78
```
**Section sources**
- [config.ini](file://config.ini#L39-L73)
- [cpp\Main\GeoMative.cpp](file://cpp/Main/GeoMative.cpp#L1138-L1221)
## 配置加载与优先级
GeomativeStudio的配置加载遵循特定的优先级规则。根目录下的`config.ini`文件优先于安装目录中的副本。程序启动时,会从根目录的`config.ini`文件中读取配置信息。
配置加载过程如下:
1. 程序启动时,首先读取`config.ini`文件中的各种配置参数。
2. 使用Windows API `GetPrivateProfileString`和`GetPrivateProfileInt`函数读取INI文件中的字符串和整数参数。
3. 对于跨孔测量配置,程序会先读取`[CROSS_HOLE_CFG]`节的`Number`参数,然后循环读取每个`[CFG_n]`节的配置。
4. 如果配置文件中缺少必要的参数,程序会记录错误日志并可能显示错误消息。
```mermaid
sequenceDiagram
participant App as 应用程序
participant Config as config.ini
participant Memory as 内存
App->>Config : 读取Language参数
Config-->>App : 返回1(中文)
App->>Memory : 设置语言为中文
App->>Config : 读取Transfer_Info
Config-->>App : 返回URL和主页
App->>Config : 读取Online_Device
Config-->>App : 返回IP和端口
App->>Config : 读取Cross_Hole_Cfg
Config-->>App : 返回配置数量
loop 每个CFG_n配置
App->>Config : 读取CFG_n参数
Config-->>App : 返回Name, FirstPoleDep, HoleSpace
App->>Memory : 存储配置
end
```
**Diagram sources**
- [config.ini](file://config.ini)
- [cpp\Main\GeoMative.cpp](file://cpp/Main/GeoMative.cpp#L433-L624)
**Section sources**
- [config.ini](file://config.ini)
- [cpp\Main\GeoMative.cpp](file://cpp/Main/GeoMative.cpp#L433-L624)
## 版本管理与更新机制
### version_info.txt文件
`version_info.txt`文件用于存储软件的版本信息,支持自动更新功能。
```txt
geomative_version=2.4.1
```
该文件包含一个简单的键值对,`geomative_version`表示当前软件版本。在自动更新过程中,程序会读取此文件的版本号,并与服务器上的最新版本进行比较,以决定是否需要更新。
**Section sources**
- [version_info.txt](file://version_info.txt)
- [cpp\Tools\checkupdate.cpp](file://cpp/Tools/checkupdate.cpp#L833-L867)
### 自动更新流程
自动更新流程如下:
1. 程序启动时读取`version_info.txt`中的当前版本号。
2. 从`config.ini`中获取更新服务器URL。
3. 连接到更新服务器,获取最新版本信息。
4. 比较本地版本和服务器版本,如果服务器版本更高,则提示用户更新。
5. 下载并安装新版本。
## 数据库变更管理
### database_modify.xml文件
`database_modify.xml`文件记录了数据库结构的变更历史,用于数据库版本控制和迁移。
```xml
```
该XML文件的结构说明:
- **current_version**: 当前数据库版本号。
- **pre_version**: 前一版本号。
- **table**: 表示一个数据库表的变更。
- `name`: 表名
- `modify_type`: 变更类型,1表示新增,2表示删除,3表示修改
- **column**: 表示表中的一列。
- `name`: 列名
- `value_type`: 数据类型
- `is_primary_key`: 是否为主键
- `index`: 索引类型
**Section sources**
- [database_modify.xml](file://database_modify.xml)
- [cpp\ProblemZone\Device.cpp](file://cpp/ProblemZone/Device.cpp#L1144-L1202)
## 配置最佳实践
### 敏感信息保护
1. **密码保护**: 避免在配置文件中明文存储敏感密码,建议使用加密存储或环境变量。
2. **用户ID管理**: 用户ID不应包含敏感信息,建议使用随机生成的唯一标识符。
3. **配置文件权限**: 确保配置文件的访问权限受到限制,防止未授权访问。
### 多环境配置管理
1. **开发/生产分离**: 为不同环境(开发、测试、生产)维护不同的配置文件。
2. **配置模板**: 使用模板文件,通过脚本生成特定环境的配置。
3. **环境变量**: 将环境特定的配置(如数据库连接、API密钥)通过环境变量注入。
### 跨孔测量参数设置
正确设置跨孔测量参数的示例:
```ini
[CROSS_HOLE_CFG]
Number=3
[CFG_1]
Name=A_B
FirstPoleDep=1.5
HoleSpace=3.0
[CFG_2]
Name=A_C
FirstPoleDep=1.5
HoleSpace=4.5
[CFG_3]
Name=B_C
FirstPoleDep=1.5
HoleSpace=3.8
```
关键参数说明:
- **FirstPoleDep**: 第一电极深度,单位为米,表示测量起始深度。
- **HoleSpace**: 孔间距,单位为米,表示两个测量孔之间的距离。
### 网络通信参数设置
正确设置网络通信参数的示例:
```ini
[ONLINE_DEVICE]
RemoteType=2
IP=192.168.1.100
Port=8769
[TRANSFER_INFO]
Url=http://your-update-server.com/Upgrade/software/V2.0
HomePage=http://your-company.com/
```
注意事项:
1. 确保IP地址和端口号正确无误。
2. 更新服务器URL应使用HTTPS以保证安全。
3. 在防火墙设置中开放指定端口。