# 配置说明 **本文档引用的文件** - [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. 在防火墙设置中开放指定端口。