a
This commit is contained in:
@@ -0,0 +1,499 @@
|
||||
# 安装与配置
|
||||
|
||||
<cite>
|
||||
**本文档中引用的文件**
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi)
|
||||
- [config.ini](file://Install/Geomative Studio/config.ini)
|
||||
- [database_modify.xml](file://Install/Geomative Studio/database_modify.xml)
|
||||
- [version_info.txt](file://Install/Geomative Studio/version_info.txt)
|
||||
- [数据库字段修改记录.txt](file://DB/数据库字段修改记录.txt)
|
||||
- [IAP-GD10.bat](file://Install/Geomative Studio/tools/IAP-GD10.bat)
|
||||
- [License-GD10.bat](file://Install/Geomative Studio/tools/License-GD10.bat)
|
||||
- [project.xml](file://CACHE/project.xml)
|
||||
- [testzone.xml](file://CACHE/testzone.xml)
|
||||
</cite>
|
||||
|
||||
## 目录
|
||||
1. [系统安装要求](#系统安装要求)
|
||||
2. [安装程序工作流程](#安装程序工作流程)
|
||||
3. [安装目录结构](#安装目录结构)
|
||||
4. [配置文件详解](#配置文件详解)
|
||||
5. [数据库字段修改记录](#数据库字段修改记录)
|
||||
6. [配置最佳实践](#配置最佳实践)
|
||||
7. [常见配置错误排查](#常见配置错误排查)
|
||||
8. [不同部署环境的配置差异](#不同部署环境的配置差异)
|
||||
|
||||
## 系统安装要求
|
||||
|
||||
Geomative Studio 应用程序的安装需要满足以下系统要求:
|
||||
|
||||
- **操作系统**:Windows 7/8/10(32位或64位)
|
||||
- **权限要求**:必须以管理员身份运行安装程序,NSIS安装脚本通过`RequestExecutionLevel admin`指令确保安装过程具有管理员权限
|
||||
- **运行时依赖**:安装程序会自动安装Visual C++ Redistributable(vc_redist.x64.exe和vc_redist.x86.exe),这是应用程序运行所必需的C++运行时库
|
||||
- **数据库引擎**:安装程序包含AccessDatabaseEngine.exe,用于支持Access数据库文件(.accdb)的连接和操作
|
||||
- **硬件驱动**:安装程序包含GD-10设备的驱动程序,包括STM32 USB CDC驱动(stmcdc.inf)和ST Tube驱动(STtube.inf),支持x86和x64架构
|
||||
|
||||
**Section sources**
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L45)
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L81-L84)
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L142)
|
||||
|
||||
## 安装程序工作流程
|
||||
|
||||
Geomative Studio的安装程序使用NSIS(Nullsoft Scriptable Install System)创建,其工作流程如下:
|
||||
|
||||
1. **初始化阶段**:
|
||||
- 设置产品信息(名称、版本、发布者、网站)
|
||||
- 配置安装向导界面,包括欢迎页、安装进度页和完成页
|
||||
- 设置安装目录为`$PROGRAMFILES\GeomativeStudio`
|
||||
- 验证管理员权限,通过`EnsureAdminRights`宏检查当前用户是否具有管理员权限
|
||||
|
||||
2. **安装阶段**:
|
||||
- **主程序安装**(Geomative Studio部分):复制主程序文件、配置文件、数据库文件、日志文件和工具脚本到安装目录
|
||||
- **驱动程序安装**(Drivers部分):复制x86和x64架构的设备驱动程序到相应目录
|
||||
- **数据库连接引擎安装**(DBConntEngine部分):复制Access数据库引擎安装程序
|
||||
- **管理员权限配置**(ASADMIN部分):在注册表中设置应用程序以管理员身份运行
|
||||
|
||||
3. **条件执行阶段**:
|
||||
- 根据系统架构(x64或x86)执行相应的Visual C++ Redistributable安装程序
|
||||
- 根据系统架构执行相应的驱动程序安装程序(dpinst_amd64.exe用于64位系统,dpinst_x86.exe用于32位系统)
|
||||
- 执行Access数据库引擎安装程序
|
||||
|
||||
4. **安装后处理阶段**:
|
||||
- 创建卸载程序(uninst.exe)
|
||||
- 在注册表中写入安装信息,包括程序路径和卸载信息
|
||||
- 创建开始菜单快捷方式和桌面快捷方式
|
||||
|
||||
5. **卸载流程**:
|
||||
- 删除所有安装的文件和目录
|
||||
- 删除开始菜单和桌面快捷方式
|
||||
- 删除注册表中的安装信息
|
||||
- 清理安装目录
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[开始安装] --> B[验证管理员权限]
|
||||
B --> C[安装主程序文件]
|
||||
C --> D[安装驱动程序]
|
||||
D --> E[安装数据库引擎]
|
||||
E --> F[配置管理员运行权限]
|
||||
F --> G[根据系统架构安装VC++运行库]
|
||||
G --> H[根据系统架构安装驱动]
|
||||
H --> I[安装数据库连接引擎]
|
||||
I --> J[创建快捷方式]
|
||||
J --> K[写入注册表信息]
|
||||
K --> L[完成安装]
|
||||
```
|
||||
|
||||
**Diagram sources**
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L58-L61)
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L69-L287)
|
||||
|
||||
**Section sources**
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L1-L287)
|
||||
|
||||
## 安装目录结构
|
||||
|
||||
安装完成后,Geomative Studio的目录结构如下:
|
||||
|
||||
```
|
||||
GeomativeStudio/
|
||||
├── DB/ # 数据库目录
|
||||
│ └── GeoMativeDB.accdb # 主数据库文件
|
||||
├── LOG/ # 日志目录
|
||||
│ ├── commLog.txt # 通信日志
|
||||
│ ├── detect_gd20_log.txt # GD20设备检测日志
|
||||
│ ├── device_log.txt # 设备日志
|
||||
│ ├── td_time_error.txt # 时间错误日志
|
||||
│ ├── update_db.log # 数据库更新日志
|
||||
│ └── general/ # 通用日志目录
|
||||
│ └── 20211110.txt # 日期日志文件
|
||||
├── tools/ # 工具目录
|
||||
│ └── dfu_tools/ # DFU工具目录
|
||||
│ ├── COPYING.txt # 版权信息
|
||||
│ ├── dfu-suffix.exe # DFU后缀工具
|
||||
│ ├── dfu-util.exe # DFU实用工具
|
||||
│ ├── DfuCreateFile.exe # DFU文件创建工具
|
||||
│ ├── STDFU.dll # ST DFU动态链接库
|
||||
│ ├── STDFUFiles.dll # ST DFU文件处理库
|
||||
│ ├── STDFUPRT.dll # ST DFU协议库
|
||||
│ └── STTubeDevice30.dll # ST Tube设备库
|
||||
├── x64/ # 64位驱动目录
|
||||
│ ├── dpinst.xml # 驱动安装配置
|
||||
│ ├── dpinst_amd64.exe # 64位驱动安装程序
|
||||
│ ├── mdmcpq.inf # MDM/COM端口驱动信息
|
||||
│ ├── stmcdc.cat # STM32 CDC驱动证书
|
||||
│ ├── stmcdc.inf # STM32 CDC驱动信息
|
||||
│ ├── stmcdc_g.inf # STM32 CDC通用驱动信息
|
||||
│ ├── STTub30.sys # ST Tube驱动系统文件
|
||||
│ ├── sttube.cat # ST Tube驱动证书
|
||||
│ ├── STtube.inf # ST Tube驱动信息
|
||||
│ └── usbser.sys # USB串行驱动系统文件
|
||||
├── x86/ # 32位驱动目录
|
||||
│ ├── dpinst.xml # 驱动安装配置
|
||||
│ ├── dpinst_x86.exe # 32位驱动安装程序
|
||||
│ ├── mdmcpq.inf # MDM/COM端口驱动信息
|
||||
│ ├── stmcdc.cat # STM32 CDC驱动证书
|
||||
│ ├── stmcdc.inf # STM32 CDC驱动信息
|
||||
│ ├── stmcdc_g.inf # STM32 CDC通用驱动信息
|
||||
│ ├── STTub30.sys # ST Tube驱动系统文件
|
||||
│ ├── sttube.cat # ST Tube驱动证书
|
||||
│ ├── STtube.inf # ST Tube驱动信息
|
||||
│ └── usbser.sys # USB串行驱动系统文件
|
||||
├── config.ini # 主配置文件
|
||||
├── database_modify.xml # 数据库修改记录文件
|
||||
├── Geomative Studio.exe # 主程序可执行文件
|
||||
├── msado15.dll # ADO数据对象库
|
||||
├── msadox.dll # ADOX扩展库
|
||||
├── upGeoMative.exe # 更新程序
|
||||
├── vc_redist.x64.exe # 64位VC++运行库安装程序
|
||||
├── vc_redist.x86.exe # 32位VC++运行库安装程序
|
||||
└── version_info.txt # 版本信息文件
|
||||
```
|
||||
|
||||
**Section sources**
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L71-L108)
|
||||
|
||||
## 配置文件详解
|
||||
|
||||
### config.ini 文件结构
|
||||
|
||||
`config.ini`是Geomative Studio的主要配置文件,采用INI文件格式,包含多个节区(section),每个节区包含特定功能的配置参数。
|
||||
|
||||
#### [UI] 节区
|
||||
用户界面相关配置:
|
||||
- **Language**:语言设置,1表示中文,2表示英文。此参数控制应用程序的界面语言。
|
||||
|
||||
#### [TRANSFER_INFO] 节区
|
||||
数据传输和网络相关配置:
|
||||
- **Url**:软件更新服务器地址,用于检查和下载新版本。
|
||||
- **HomePage**:公司主页URL,可能在应用程序中作为链接提供。
|
||||
|
||||
#### [EXPORT_DATA] 节区
|
||||
数据导出相关配置:
|
||||
- **2dDataExpStyle**:2D数据导出样式,0表示默认导出格式。
|
||||
|
||||
#### [ONLINE_DEVICE] 节区
|
||||
在线设备连接配置:
|
||||
- **RemoteType**:远程设备类型,2表示特定类型的在线设备。
|
||||
- **IP**:远程设备的IP地址。
|
||||
- **Port**:远程设备的通信端口。
|
||||
|
||||
#### [ONLINE_VERSION] 节区
|
||||
在线版本配置:
|
||||
- **VERID**:版本ID,用于标识当前版本系列。
|
||||
|
||||
#### [ONLINE_TIMEZONE] 节区
|
||||
时区配置:
|
||||
- **TIMEZONE**:时区设置,8表示UTC+8(中国标准时间)。
|
||||
|
||||
#### [CHANNEL_INFO] 节区
|
||||
通道信息配置:
|
||||
- **IsMultiChannel**:是否多通道模式,0表示单通道,1表示多通道。
|
||||
|
||||
#### [USER_INFO] 和 [USER_Pwd] 节区
|
||||
用户认证配置:
|
||||
- **UserID**:用户ID,用于身份验证。
|
||||
- **UserPwd**:用户密码,明文存储(存在安全风险)。
|
||||
- **UserSave**:是否保存用户信息,1表示保存,0表示不保存。
|
||||
- **UserAuto**:是否自动登录,1表示自动登录,0表示需要手动登录。
|
||||
|
||||
#### [CROSS_HOLE_CFG] 和 [CFG_X] 节区
|
||||
跨孔测量配置:
|
||||
- **Number**:跨孔配置数量,6表示有6种预设配置。
|
||||
- **[CFG_X]**:具体的跨孔配置,每个配置包含:
|
||||
- **Name**:配置名称
|
||||
- **FirstPoleDep**:第一电极深度
|
||||
- **HoleSpace**:孔间距
|
||||
|
||||
#### [PLC_SET] 节区
|
||||
PLC(可编程逻辑控制器)设置:
|
||||
- **TimeInterval**:时间间隔,600表示600秒(10分钟)的间隔。
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class ConfigFile {
|
||||
+string filePath
|
||||
+readConfig()
|
||||
+writeConfig()
|
||||
+validateConfig()
|
||||
}
|
||||
class Section {
|
||||
+string name
|
||||
+Map~string,string~ parameters
|
||||
+getParameter(key)
|
||||
+setParameter(key, value)
|
||||
}
|
||||
class UISection {
|
||||
+int language
|
||||
+setLanguage(lang)
|
||||
+getLanguage()
|
||||
}
|
||||
class TransferInfoSection {
|
||||
+string url
|
||||
+string homePage
|
||||
+setUrl(url)
|
||||
+setHomePage(homePage)
|
||||
}
|
||||
class UserInfoSection {
|
||||
+string userId
|
||||
+string userPwd
|
||||
+int userSave
|
||||
+int userAuto
|
||||
+setUserId(id)
|
||||
+setUserPwd(pwd)
|
||||
+setUserSave(save)
|
||||
+setUserAuto(auto)
|
||||
}
|
||||
class OnlineDeviceSection {
|
||||
+int remoteType
|
||||
+string ip
|
||||
+int port
|
||||
+setRemoteType(type)
|
||||
+setIp(ip)
|
||||
+setPort(port)
|
||||
}
|
||||
class CrossHoleConfig {
|
||||
+int number
|
||||
+CFGSection[] cfgList
|
||||
+setNumber(num)
|
||||
+addCFG(cfg)
|
||||
}
|
||||
class CFGSection {
|
||||
+string name
|
||||
+double firstPoleDep
|
||||
+double holeSpace
|
||||
+setName(name)
|
||||
+setFirstPoleDep(dep)
|
||||
+setHoleSpace(space)
|
||||
}
|
||||
class PLCSetSection {
|
||||
+int timeInterval
|
||||
+setTimeInterval(interval)
|
||||
+getTimeInterval()
|
||||
}
|
||||
ConfigFile --> Section : "contains"
|
||||
Section <|-- UISection
|
||||
Section <|-- TransferInfoSection
|
||||
Section <|-- UserInfoSection
|
||||
Section <|-- OnlineDeviceSection
|
||||
Section <|-- CrossHoleConfig
|
||||
Section <|-- PLCSetSection
|
||||
CrossHoleConfig --> CFGSection : "contains"
|
||||
```
|
||||
|
||||
**Diagram sources**
|
||||
- [config.ini](file://Install/Geomative Studio/config.ini#L1-L73)
|
||||
|
||||
**Section sources**
|
||||
- [config.ini](file://Install/Geomative Studio/config.ini#L1-L73)
|
||||
- [config.ini](file://config.ini#L1-L73)
|
||||
|
||||
## 数据库字段修改记录
|
||||
|
||||
### database_modify.xml 文件
|
||||
|
||||
`database_modify.xml`文件用于记录数据库结构的修改历史,采用XML格式,包含当前版本和预版本的修改信息。
|
||||
|
||||
文件结构:
|
||||
- **current_version**:当前数据库版本号
|
||||
- **pre_version**:前一个版本号
|
||||
- **table**:表修改信息,包含:
|
||||
- **name**:表名
|
||||
- **modify_type**:修改类型,1表示增加表,2表示删除表,3表示修改表
|
||||
- **column**:列信息,包含:
|
||||
- **name**:列名
|
||||
- **is_primary_key**:是否为主键
|
||||
- **value_type**:值类型(1:text, 2:Memo, 3:Byte, 4:Integer, 5:Long, 6:Single, 7:Double, 8:Currency, 9:AutoNumber, 10:Date/Time, 11:Yes/No等)
|
||||
- **attribute_value**:属性值(对于文本类型表示长度)
|
||||
- **index**:索引类型(0:无索引, 1:允许重复, 2:不允许重复)
|
||||
- **is_empty**:是否允许为空
|
||||
- **is_compress**:是否压缩
|
||||
|
||||
### 数据库字段修改记录.txt 文件
|
||||
|
||||
`数据库字段修改记录.txt`文件以文本形式记录了数据库字段的修改历史,按日期组织,便于追溯数据库结构的演变。
|
||||
|
||||
主要修改记录包括:
|
||||
- **2015年6月2日**:在td2dcon、td3dcon、td1dcon表中增加bUse字段,用于标记记录的有效性
|
||||
- **2015年6月12日**:在Td表中增加rect和rect_loc字段,用于记录测试任务的矩形大小和位置;修改Espace和Edistance字段为文本类型
|
||||
- **2016年12月2日**:在ac、acds、td_spc_attr表中增加10个时窗信息;在cm表中增加发射频率0.03125Hz
|
||||
- **2017年9月12日**:在project和tz表中加入默认的工程和测区
|
||||
- **2017年9月18日**:在device表中增加GPS字段;在desetting表中增加CableType、LowPowerAlarm、AutoStack字段
|
||||
- **2017年9月23日**:新增task_timer表
|
||||
- **2017年9月25日**:在td表中添加IsAutoGenerate字段
|
||||
- **2017年9月26日**:在timer_task表中增加PLCID字段
|
||||
- **2019年7月4日**:medium表新增加强梯度装置
|
||||
- **2019年7月14日**:medium表新增跨孔装置;新增TTaskInfoCoordinetes表用于保存电极坐标信息
|
||||
- **2019年12月3日**:新增TPictureInfo表存放图片信息;新增TPictureCode表存放岩性编辑图片二维码
|
||||
- **2019年12月11日**:新增TLoggingTaskInfo表存放新建任务信息;新增TLoggingTaskContent表保存测点数据信息
|
||||
|
||||
```mermaid
|
||||
erDiagram
|
||||
table "test" {
|
||||
id AutoNumber PK
|
||||
col1 Memo
|
||||
col2 Long
|
||||
col3 Long
|
||||
}
|
||||
table "td2dcon" {
|
||||
bUse Yes/No
|
||||
}
|
||||
table "td3dcon" {
|
||||
bUse Yes/No
|
||||
}
|
||||
table "td1dcon" {
|
||||
bUse Yes/No
|
||||
}
|
||||
table "Td" {
|
||||
rect Text
|
||||
rect_loc Text
|
||||
SkipCable Yes/No
|
||||
IsAutoGenerate Yes/No
|
||||
}
|
||||
table "device" {
|
||||
GPS Text
|
||||
}
|
||||
table "desetting" {
|
||||
CableType Text
|
||||
LowPowerAlarm Yes/No
|
||||
AutoStack Yes/No
|
||||
}
|
||||
table "task_timer" {
|
||||
PLCID Text
|
||||
}
|
||||
table "medium" {
|
||||
加强梯度装置 Yes/No
|
||||
跨孔装置 Yes/No
|
||||
}
|
||||
table "TTaskInfoCoordinetes" {
|
||||
电极坐标信息 Text
|
||||
}
|
||||
table "TPictureInfo" {
|
||||
图片信息 Text
|
||||
}
|
||||
table "TPictureCode" {
|
||||
二维码信息 Text
|
||||
}
|
||||
table "TLoggingTaskInfo" {
|
||||
测试任务信息 Text
|
||||
}
|
||||
table "TLoggingTaskContent" {
|
||||
测点数据信息 Text
|
||||
}
|
||||
```
|
||||
|
||||
**Diagram sources**
|
||||
- [database_modify.xml](file://Install/Geomative Studio/database_modify.xml#L1-L25)
|
||||
- [数据库字段修改记录.txt](file://DB/数据库字段修改记录.txt#L1-L61)
|
||||
|
||||
**Section sources**
|
||||
- [database_modify.xml](file://Install/Geomative Studio/database_modify.xml#L1-L25)
|
||||
- [database_modify.xml](file://database_modify.xml#L1-L25)
|
||||
- [数据库字段修改记录.txt](file://DB/数据库字段修改记录.txt#L1-L61)
|
||||
|
||||
## 配置最佳实践
|
||||
|
||||
### 安全配置
|
||||
1. **用户凭证保护**:避免在config.ini中明文存储密码,建议使用加密存储或外部认证机制。
|
||||
2. **管理员权限**:确保安装程序以管理员身份运行,但运行时尽量使用普通用户权限。
|
||||
3. **驱动程序签名**:确保所有驱动程序都经过数字签名,防止恶意驱动安装。
|
||||
|
||||
### 性能优化
|
||||
1. **日志管理**:定期清理LOG目录中的日志文件,避免占用过多磁盘空间。
|
||||
2. **数据库维护**:定期备份GeoMativeDB.accdb数据库文件,防止数据丢失。
|
||||
3. **缓存配置**:合理配置CACHE目录中的project.xml和testzone.xml文件,提高项目加载速度。
|
||||
|
||||
### 网络配置
|
||||
1. **服务器地址**:确保TRANSFER_INFO节区中的URL和IP地址正确,能够访问更新服务器和远程设备。
|
||||
2. **端口配置**:确保ONLINE_DEVICE节区中的端口未被其他应用程序占用。
|
||||
3. **时区设置**:根据实际地理位置正确设置ONLINE_TIMEZONE节区的TIMEZONE值。
|
||||
|
||||
### 跨孔测量配置
|
||||
1. **预设配置**:根据实际测量需求,在CFG_X节区中配置常用的跨孔测量参数。
|
||||
2. **参数验证**:确保HoleSpace(孔间距)和FirstPoleDep(第一电极深度)的值在合理范围内。
|
||||
3. **配置管理**:通过CROSS_HOLE_CFG节区的Number参数控制预设配置的数量。
|
||||
|
||||
## 常见配置错误排查
|
||||
|
||||
### 安装问题
|
||||
1. **权限不足**:如果安装失败,确保以管理员身份运行安装程序。NSIS脚本会检查管理员权限并提示用户。
|
||||
2. **驱动安装失败**:检查系统是否禁用了驱动程序安装,或尝试手动运行dpinst_amd64.exe或dpinst_x86.exe。
|
||||
3. **VC++运行库缺失**:如果程序无法启动,尝试手动安装vc_redist.x64.exe或vc_redist.x86.exe。
|
||||
|
||||
### 配置文件问题
|
||||
1. **config.ini格式错误**:确保文件使用正确的INI格式,节区用方括号包围,参数用等号分隔。
|
||||
2. **参数值错误**:检查关键参数如IP地址、端口号、用户ID等是否正确。
|
||||
3. **文件编码问题**:确保config.ini文件保存为ANSI或UTF-8编码,避免中文乱码。
|
||||
|
||||
### 数据库问题
|
||||
1. **数据库连接失败**:确保AccessDatabaseEngine.exe已正确安装,且GeoMativeDB.accdb文件存在。
|
||||
2. **字段缺失**:如果程序报错字段不存在,检查数据库字段修改记录,确保数据库结构与程序版本匹配。
|
||||
3. **权限问题**:确保程序对DB目录有读写权限。
|
||||
|
||||
### 网络连接问题
|
||||
1. **无法连接远程设备**:检查IP地址和端口是否正确,防火墙是否阻止了连接。
|
||||
2. **更新失败**:检查Url参数是否正确,网络连接是否正常。
|
||||
3. **时区错误**:如果时间显示不正确,检查TIMEZONE参数是否与本地时区匹配。
|
||||
|
||||
## 不同部署环境的配置差异
|
||||
|
||||
### 开发环境
|
||||
- **配置特点**:
|
||||
- 启用详细日志记录,便于调试
|
||||
- 使用测试服务器地址和端口
|
||||
- 用户认证可能简化或禁用
|
||||
- 数据库使用测试数据
|
||||
- **示例配置**:
|
||||
```ini
|
||||
[TRANSFER_INFO]
|
||||
Url=http://dev.update.geomative.com/Upgrade/software/V2.0
|
||||
[ONLINE_DEVICE]
|
||||
IP=192.168.1.100
|
||||
Port=8769
|
||||
[USER_INFO]
|
||||
UserID=testuser
|
||||
UserPwd=test123
|
||||
```
|
||||
|
||||
### 测试环境
|
||||
- **配置特点**:
|
||||
- 使用预生产服务器
|
||||
- 启用部分日志记录
|
||||
- 使用测试用户账户
|
||||
- 数据库使用模拟生产数据
|
||||
- **示例配置**:
|
||||
```ini
|
||||
[TRANSFER_INFO]
|
||||
Url=http://test.update.geomative.com/Upgrade/software/V2.0
|
||||
[ONLINE_DEVICE]
|
||||
IP=10.0.1.50
|
||||
Port=8769
|
||||
[USER_INFO]
|
||||
UserID=testuser
|
||||
UserPwd=securepassword
|
||||
```
|
||||
|
||||
### 生产环境
|
||||
- **配置特点**:
|
||||
- 最小化日志记录,仅记录关键信息
|
||||
- 使用正式服务器地址和端口
|
||||
- 严格的安全认证
|
||||
- 数据库使用真实生产数据
|
||||
- 定期备份和监控
|
||||
- **示例配置**:
|
||||
```ini
|
||||
[TRANSFER_INFO]
|
||||
Url=http://update.geomative.com/Upgrade/software/V2.0
|
||||
[ONLINE_DEVICE]
|
||||
IP=120.31.131.181
|
||||
Port=8769
|
||||
[USER_INFO]
|
||||
UserID=productionuser
|
||||
UserPwd=strongpassword123!
|
||||
```
|
||||
|
||||
**Section sources**
|
||||
- [config.ini](file://Install/Geomative Studio/config.ini#L1-L73)
|
||||
- [config.ini](file://config.ini#L1-L73)
|
||||
- [config.ini](file://Release/config.ini#L1-L3)
|
||||
@@ -0,0 +1,237 @@
|
||||
# 安装指南
|
||||
|
||||
<cite>
|
||||
**本文引用的文件**
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi)
|
||||
- [dpinst.xml(x64)](file://Install/GD_10/x64/dpinst.xml)
|
||||
- [dpinst.xml(x86)](file://Install/GD_10/x86/dpinst.xml)
|
||||
- [config.ini](file://Install/Geomative Studio/config.ini)
|
||||
- [version_info.txt](file://Install/Geomative Studio/version_info.txt)
|
||||
- [Setup.rul](file://Install/test1/Script Files/Setup.rul)
|
||||
- [Setup.map](file://Install/test1/Script Files/Setup.map)
|
||||
</cite>
|
||||
|
||||
## 目录
|
||||
1. [简介](#简介)
|
||||
2. [项目结构与安装包组成](#项目结构与安装包组成)
|
||||
3. [系统要求与兼容性](#系统要求与兼容性)
|
||||
4. [安装流程总览](#安装流程总览)
|
||||
5. [NSIS安装脚本工作机制](#nsis安装脚本工作机制)
|
||||
6. [组件部署顺序与职责](#组件部署顺序与职责)
|
||||
7. [驱动程序安装与dpinst.xml作用](#驱动程序安装与dpinstxml作用)
|
||||
8. [卸载程序生成与注册表清理](#卸载程序生成与注册表清理)
|
||||
9. [安装失败常见原因与排查](#安装失败常见原因与排查)
|
||||
10. [故障排除清单](#故障排除清单)
|
||||
11. [结论](#结论)
|
||||
|
||||
## 简介
|
||||
本指南面向GeomativeStudio桌面应用的完整安装流程,基于仓库中的NSIS安装脚本与配套驱动、运行库、数据库引擎等组件,系统化说明安装目录设置、注册表写入、快捷方式创建、卸载程序生成,以及驱动安装时dpinst.xml的自动安装逻辑。同时提供安装前权限要求、兼容性配置(RUNASADMIN)说明,并结合实际脚本代码路径,帮助用户与运维人员快速定位问题并完成安装。
|
||||
|
||||
## 项目结构与安装包组成
|
||||
- 安装脚本与组件:
|
||||
- NSIS安装脚本:Install/geomativestudio.nsi
|
||||
- GD10设备驱动(x64/x86):Install/GD_10/x64、Install/GD_10/x86
|
||||
- 运行库:vc_redist.x64.exe、vc_redist.x86.exe
|
||||
- Access数据库引擎:AccessDatabaseEngine.exe
|
||||
- 应用程序与工具:Geomative Studio.exe、tools、LOG、DB等
|
||||
- 兼容性配置:RUNASADMIN注册表项(脚本中预留)
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
A["安装包根目录<br/>Install/"] --> B["NSIS脚本<br/>geomativestudio.nsi"]
|
||||
A --> C["GD10驱动(x64/x86)"]
|
||||
A --> D["VC++运行库<br/>vc_redist.x64.exe / vc_redist.x86.exe"]
|
||||
A --> E["Access数据库引擎<br/>AccessDatabaseEngine.exe"]
|
||||
A --> F["应用与工具<br/>Geomative Studio.exe / tools / LOG / DB"]
|
||||
C --> C1["x64/dpinst.xml"]
|
||||
C --> C2["x86/dpinst.xml"]
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L70-L110)
|
||||
- [dpinst.xml(x64)](file://Install/GD_10/x64/dpinst.xml#L1-L19)
|
||||
- [dpinst.xml(x86)](file://Install/GD_10/x86/dpinst.xml#L1-L19)
|
||||
|
||||
**章节来源**
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L70-L110)
|
||||
|
||||
## 系统要求与兼容性
|
||||
- 权限要求:安装需以管理员身份运行,脚本在初始化阶段强制校验管理员权限。
|
||||
- 兼容性配置:脚本中包含为可执行文件写入“以管理员身份运行”的注册表项(RUNASADMIN),便于后续兼容旧版系统行为。
|
||||
- 架构匹配:根据系统位数选择对应组件(x64或x86),确保驱动与运行库正确安装。
|
||||
|
||||
**章节来源**
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L41-L61)
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L145-L149)
|
||||
|
||||
## 安装流程总览
|
||||
安装流程由NSIS脚本控制,按以下顺序执行:
|
||||
1. 初始化与权限检查(管理员)
|
||||
2. 部署核心程序与工具
|
||||
3. 部署VC++运行库(按系统架构选择)
|
||||
4. 部署Access数据库引擎
|
||||
5. 部署GD10驱动(按系统架构选择)
|
||||
6. 写入注册表与卸载程序
|
||||
7. 创建开始菜单与桌面快捷方式
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant U as "用户"
|
||||
participant NSIS as "NSIS安装器"
|
||||
participant OS as "操作系统/注册表/文件系统"
|
||||
U->>NSIS : 运行安装包
|
||||
NSIS->>NSIS : 初始化并请求管理员权限
|
||||
NSIS->>OS : 写入安装目录与注册表
|
||||
NSIS->>OS : 部署核心程序与工具
|
||||
NSIS->>OS : 部署VC++运行库x64/x86
|
||||
NSIS->>OS : 部署Access数据库引擎
|
||||
NSIS->>OS : 部署GD10驱动x64/x86
|
||||
NSIS->>OS : 写入卸载程序与注册表项
|
||||
NSIS->>OS : 创建开始菜单/桌面快捷方式
|
||||
NSIS-->>U : 安装完成
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L58-L61)
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L70-L110)
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L111-L138)
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L140-L143)
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L158-L163)
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L166-L175)
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L191-L200)
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L185-L189)
|
||||
|
||||
## NSIS安装脚本工作机制
|
||||
- 安装目录与注册表:
|
||||
- 默认安装目录为Program Files下的GeomativeStudio。
|
||||
- 写入应用路径到注册表,供卸载程序与开始菜单使用。
|
||||
- 快捷方式:
|
||||
- 在开始菜单创建程序组,并在开始菜单与桌面创建快捷方式。
|
||||
- 卸载程序:
|
||||
- 生成uninst.exe并在注册表中登记卸载字符串,支持卸载流程。
|
||||
- 权限与兼容性:
|
||||
- 请求管理员权限;可选写入RUNASADMIN注册表项以提升兼容性。
|
||||
|
||||
**章节来源**
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L41-L45)
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L58-L61)
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L185-L189)
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L191-L200)
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L145-L149)
|
||||
|
||||
## 组件部署顺序与职责
|
||||
- 核心程序与工具(Section “Geomative Studio” SEC01):
|
||||
- 配置文件、数据库、日志、工具集、版本信息等。
|
||||
- 驱动程序(Section “Drivers” SEC02):
|
||||
- x64与x86目录下分别包含dpinst.xml、驱动INF与SYS文件。
|
||||
- 数据库引擎(Section “DBConntEngine” SEC03):
|
||||
- AccessDatabaseEngine.exe用于支持Access数据库连接。
|
||||
- 兼容性配置(Section “ASADMIN” SEC04):
|
||||
- 可选写入RUNASADMIN注册表项,提升兼容性。
|
||||
- 运行库安装(Section 自定义段):
|
||||
- 按系统架构选择vc_redist.x64.exe或vc_redist.x86.exe执行安装。
|
||||
- 驱动安装(Section 自定义段):
|
||||
- 调用dpinst_amd64.exe或dpinst_x86.exe,指定安装路径参数。
|
||||
- 卸载清理(Section 卸载):
|
||||
- 删除所有已安装文件与注册表项,清理开始菜单与桌面快捷方式。
|
||||
|
||||
**章节来源**
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L70-L110)
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L111-L138)
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L140-L143)
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L145-L149)
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L158-L163)
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L166-L175)
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L213-L287)
|
||||
|
||||
## 驱动程序安装与dpinst.xml作用
|
||||
- dpinst.xml的作用:
|
||||
- 提供驱动安装向导的标题、欢迎语、安装头信息与完成提示。
|
||||
- 启用静默安装模式与严格静默策略,减少交互,便于自动化安装。
|
||||
- 自动安装逻辑:
|
||||
- NSIS在安装阶段调用dpinst_amd64.exe(x64)或dpinst_x86.exe(x86),并传入安装路径参数,使驱动INF/SYS文件被自动安装。
|
||||
- 该逻辑通过NSIS内置命令实现,无需用户手动确认。
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Start(["开始"]) --> DetectArch["检测系统架构"]
|
||||
DetectArch --> IsX64{"是否x64系统?"}
|
||||
IsX64 --> |是| RunDpinst64["执行dpinst_amd64.exe<br/>参数:/PATH \"$INSTDIR\\x64\""]
|
||||
IsX64 --> |否| RunDpinst32["执行dpinst_x86.exe<br/>参数:/PATH \"$INSTDIR\\x86\""]
|
||||
RunDpinst64 --> ReadXml64["读取x64/dpinst.xml<br/>启用静默安装策略"]
|
||||
RunDpinst32 --> ReadXml32["读取x86/dpinst.xml<br/>启用静默安装策略"]
|
||||
ReadXml64 --> InstallDrv64["安装驱动INF/SYSx64"]
|
||||
ReadXml32 --> InstallDrv32["安装驱动INF/SYSx86"]
|
||||
InstallDrv64 --> End(["结束"])
|
||||
InstallDrv32 --> End
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L158-L163)
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L166-L175)
|
||||
- [dpinst.xml(x64)](file://Install/GD_10/x64/dpinst.xml#L1-L19)
|
||||
- [dpinst.xml(x86)](file://Install/GD_10/x86/dpinst.xml#L1-L19)
|
||||
|
||||
**章节来源**
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L158-L175)
|
||||
- [dpinst.xml(x64)](file://Install/GD_10/x64/dpinst.xml#L1-L19)
|
||||
- [dpinst.xml(x86)](file://Install/GD_10/x86/dpinst.xml#L1-L19)
|
||||
|
||||
## 卸载程序生成与注册表清理
|
||||
- 卸载程序生成:
|
||||
- 在Post阶段生成uninst.exe并写入注册表卸载字符串。
|
||||
- 注册表清理:
|
||||
- 卸载时删除应用路径、卸载字符串、显示图标、显示版本、发布者等注册表项。
|
||||
- 文件与快捷方式清理:
|
||||
- 删除所有安装文件、开始菜单与桌面快捷方式、空目录。
|
||||
|
||||
**章节来源**
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L191-L200)
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L213-L287)
|
||||
|
||||
## 安装失败常见原因与排查
|
||||
- 权限不足(需要管理员):
|
||||
- 现象:安装启动即退出或提示无权限。
|
||||
- 排查:右键安装包选择“以管理员身份运行”,确保当前用户属于管理员组。
|
||||
- 参考:脚本在初始化阶段强制校验管理员权限。
|
||||
- 系统架构不匹配:
|
||||
- 现象:VC++运行库或驱动安装失败。
|
||||
- 排查:确认目标系统为x64或x86,确保对应组件被正确选择与安装。
|
||||
- 参考:脚本根据系统架构选择vc_redist与dpinst。
|
||||
- 依赖组件安装失败:
|
||||
- 现象:Access数据库引擎或VC++运行库安装中断。
|
||||
- 排查:检查系统是否已安装更高版本的运行库或数据库引擎;必要时先卸载冲突版本再重试。
|
||||
- 目标路径无写权限:
|
||||
- 现象:安装到Program Files失败或部分文件无法写入。
|
||||
- 排查:确保安装目录对当前用户具有完全控制权;避免安装到受保护路径。
|
||||
- 驱动安装异常:
|
||||
- 现象:驱动安装界面弹出或失败。
|
||||
- 排查:确认dpinst.xml静默策略生效;检查系统安全策略(如驱动签名);必要时临时关闭驱动强制签名限制(仅限测试环境)。
|
||||
|
||||
**章节来源**
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L41-L61)
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L158-L175)
|
||||
- [Setup.rul](file://Install/test1/Script Files/Setup.rul#L232-L248)
|
||||
|
||||
## 故障排除清单
|
||||
- 安装前准备
|
||||
- 以管理员身份运行安装包
|
||||
- 关闭杀毒软件或防火墙(临时)
|
||||
- 确认磁盘空间充足
|
||||
- 安装中关注
|
||||
- VC++运行库安装是否出现静默窗口
|
||||
- Access数据库引擎是否静默完成
|
||||
- 驱动安装是否静默完成(dpinst.xml启用quietInstallStrict)
|
||||
- 安装后验证
|
||||
- 开始菜单与桌面快捷方式是否存在
|
||||
- 应用程序可正常启动
|
||||
- 数据库连接功能可用
|
||||
- 设备驱动已加载(可在设备管理器查看)
|
||||
|
||||
**章节来源**
|
||||
- [geomativestudio.nsi](file://Install/geomativestudio.nsi#L158-L175)
|
||||
- [dpinst.xml(x64)](file://Install/GD_10/x64/dpinst.xml#L1-L19)
|
||||
- [dpinst.xml(x86)](file://Install/GD_10/x86/dpinst.xml#L1-L19)
|
||||
|
||||
## 结论
|
||||
本指南基于仓库中的NSIS安装脚本与驱动、运行库、数据库引擎等组件,给出了完整的安装流程说明与排障建议。通过理解安装目录设置、注册表写入、快捷方式创建、卸载程序生成以及驱动安装的自动逻辑,用户与运维人员可以更高效地完成GeomativeStudio的部署与维护工作。遇到问题时,优先检查管理员权限、系统架构匹配与依赖组件状态,通常可快速定位并解决问题。
|
||||
@@ -0,0 +1,254 @@
|
||||
# 应用配置详解
|
||||
|
||||
<cite>
|
||||
**本文档引用的文件**
|
||||
- [config.ini](file://config.ini)
|
||||
- [Install/Geomative Studio/config.ini](file://Install/Geomative Studio/config.ini)
|
||||
- [Release/config.ini](file://Release/config.ini)
|
||||
- [cpp/Main/GeoMative.cpp](file://cpp/Main/GeoMative.cpp)
|
||||
- [cpp/Views/DailLogin.cpp](file://cpp/Views/DailLogin.cpp)
|
||||
</cite>
|
||||
|
||||
## 目录
|
||||
1. [简介](#简介)
|
||||
2. [配置文件结构](#配置文件结构)
|
||||
3. [核心配置节分析](#核心配置节分析)
|
||||
4. [多环境配置示例](#多环境配置示例)
|
||||
5. [配置加载优先级](#配置加载优先级)
|
||||
6. [配置维护最佳实践](#配置维护最佳实践)
|
||||
7. [结论](#结论)
|
||||
|
||||
## 简介
|
||||
GeomativeStudio是一款专业的地球物理数据处理软件,其行为和功能通过`config.ini`配置文件进行控制。本文档深入解析该配置文件的结构与各项参数的具体含义,涵盖用户界面、数据传输、设备连接、用户认证及跨孔测量等关键配置。通过分析代码实现,我们将揭示配置参数如何影响系统行为,并提供实际应用场景下的配置建议。
|
||||
|
||||
## 配置文件结构
|
||||
GeomativeStudio的`config.ini`文件采用标准的INI文件格式,由多个节(section)组成,每个节包含若干键值对(key-value pairs)。配置文件定义了软件的用户界面语言、数据传输设置、导出格式、远程设备连接信息、用户认证凭据以及跨孔测量参数等核心功能。
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[config.ini] --> B[UI]
|
||||
A --> C[TRANSFER_INFO]
|
||||
A --> D[EXPORT_DATA]
|
||||
A --> E[ONLINE_DEVICE]
|
||||
A --> F[USER_INFO]
|
||||
A --> G[CROSS_HOLE_CFG]
|
||||
B --> B1[Language]
|
||||
C --> C1[Url]
|
||||
C --> C2[HomePage]
|
||||
D --> D1[2dDataExpStyle]
|
||||
E --> E1[RemoteType]
|
||||
E --> E2[IP]
|
||||
E --> E3[Port]
|
||||
F --> F1[UserID]
|
||||
F --> F2[UserPwd]
|
||||
G --> G1[Number]
|
||||
G --> G2[CFG_1...CFG_N]
|
||||
```
|
||||
|
||||
**Diagram sources**
|
||||
- [config.ini](file://config.ini)
|
||||
|
||||
## 核心配置节分析
|
||||
|
||||
### [UI] 节:界面语言控制
|
||||
`[UI]`节中的`Language`参数控制软件界面的显示语言。
|
||||
|
||||
- **Language=1**:表示界面语言为中文
|
||||
- **Language=2**:表示界面语言为英文
|
||||
|
||||
该参数在软件启动时被读取,并通过`WM_CHANGE_LANGUAGE`消息通知主窗口切换语言。代码实现中,系统会根据当前线程的区域设置(LCID)和配置值共同决定最终的语言显示。
|
||||
|
||||
```cpp
|
||||
int iLanguage = GetPrivateProfileInt(_T("UI"), _T("Language"), 0, _T("./config.ini"));
|
||||
if (LANG_ZHCN == iLanguage && (LANG_CHINESE_SIMPLIFIED == PRIMARYLANGID(LANGIDFROMLCID(lcidNew))))
|
||||
{
|
||||
WritePrivateProfileString(_T("UI"), _T("Language"), _T("1"), _T("./config.ini"));
|
||||
m_pMainWnd->SendMessage(WM_CHANGE_LANGUAGE, (WPARAM)LANG_ZHCN, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
WritePrivateProfileString(_T("UI"), _T("Language"), _T("2"), _T("./config.ini"));
|
||||
m_pMainWnd->SendMessage(WM_CHANGE_LANGUAGE, (WPARAM)LANG_ENUS, 0);
|
||||
}
|
||||
```
|
||||
|
||||
**Section sources**
|
||||
- [config.ini](file://config.ini#L1-L3)
|
||||
- [cpp/Main/GeoMative.cpp](file://cpp/Main/GeoMative.cpp#L446-L458)
|
||||
|
||||
### [TRANSFER_INFO] 节:数据传输与系统更新
|
||||
`[TRANSFER_INFO]`节定义了软件的数据传输和系统更新相关URL。
|
||||
|
||||
- **Url**:系统更新服务器地址,用于检查和下载软件更新
|
||||
- **HomePage**:公司主页URL,可能用于用户引导或信息展示
|
||||
|
||||
这些参数在`GetCfgUrl()`函数中被读取,如果获取失败,系统会弹出错误提示。该配置支持软件的在线升级功能,确保用户能够及时获取最新版本。
|
||||
|
||||
```cpp
|
||||
::GetPrivateProfileString(_T("TRANSFER_INFO"), _T("Url"),_T("NULL"), chUrl, 150,_T("./config.ini"));
|
||||
::GetPrivateProfileString(_T("TRANSFER_INFO"), _T("HomePage"),_T("NULL"), chHomePage, 150,_T("./config.ini"));
|
||||
```
|
||||
|
||||
**Section sources**
|
||||
- [config.ini](file://config.ini#L4-L7)
|
||||
- [cpp/Main/GeoMative.cpp](file://cpp/Main/GeoMative.cpp#L1116-L1135)
|
||||
|
||||
### [EXPORT_DATA] 节:导出数据格式
|
||||
`[EXPORT_DATA]`节中的`2dDataExpStyle`参数控制二维数据的导出格式。
|
||||
|
||||
- **2dDataExpStyle=0**:表示一种特定的二维数据导出样式
|
||||
|
||||
该参数在软件初始化时被读取,影响数据导出模块的行为。不同的值可能对应不同的文件格式、坐标系统或数据组织方式。
|
||||
|
||||
```cpp
|
||||
m_i2dDataExpStyle = GetPrivateProfileInt(_T("EXPORT_DATA"), _T("2dDataExpStyle"), 0, _T("./config.ini"));
|
||||
```
|
||||
|
||||
**Section sources**
|
||||
- [config.ini](file://config.ini#L8-L10)
|
||||
- [cpp/Main/GeoMative.cpp](file://cpp/Main/GeoMative.cpp#L624)
|
||||
|
||||
### [ONLINE_DEVICE] 节:远程设备连接
|
||||
`[ONLINE_DEVICE]`节配置了与远程设备的网络连接参数。
|
||||
|
||||
- **RemoteType**:传输模式,如USB、云端或WiFi
|
||||
- **IP**:远程服务器或设备的IP地址
|
||||
- **Port**:通信端口号
|
||||
|
||||
在软件启动时,如果选择云端或WiFi模式,系统会读取这些参数并尝试建立网络连接。如果IP或端口配置错误,会弹出相应的错误提示。
|
||||
|
||||
```cpp
|
||||
char chIP[30]="NULL";
|
||||
GetPrivateProfileString(_T("ONLINE_DEVICE"),_T("IP"), "NULL",chIP, sizeof(chIP),_T("./config.ini"));
|
||||
WORD wPort = GetPrivateProfileInt(_T("ONLINE_DEVICE"), _T("Port"), 0, _T("./config.ini"));
|
||||
```
|
||||
|
||||
**Section sources**
|
||||
- [config.ini](file://config.ini#L11-L15)
|
||||
- [cpp/Main/GeoMative.cpp](file://cpp/Main/GeoMative.cpp#L492-L502)
|
||||
|
||||
### [USER_INFO] 节:用户认证机制
|
||||
`[USER_INFO]`节包含用户认证相关的信息。
|
||||
|
||||
- **UserID**:用户的唯一标识符
|
||||
- **UserPwd**:用户密码,存储在单独的`[USER_Pwd]`节中
|
||||
- **UserSave**:是否保存用户凭据
|
||||
- **UserAuto**:是否自动登录
|
||||
|
||||
用户在登录界面输入凭据后,如果选择保存,系统会将用户名和密码写回配置文件。认证机制通过`DailLogin`对话框实现,确保只有授权用户才能访问系统。
|
||||
|
||||
```cpp
|
||||
WritePrivateProfileString(_T("USER_INFO"), _T("UserID"), csID, _T("./config.ini"));
|
||||
WritePrivateProfileString(_T("USER_Pwd"), _T("UserPwd"), csPwd, _T("./config.ini"));
|
||||
```
|
||||
|
||||
**Section sources**
|
||||
- [config.ini](file://config.ini#L25-L38)
|
||||
- [cpp/Views/DailLogin.cpp](file://cpp/Views/DailLogin.cpp#L137-L140)
|
||||
|
||||
### [CROSS_HOLE_CFG] 节:跨孔测量参数
|
||||
`[CROSS_HOLE_CFG]`节定义了跨孔测量的相关物理参数。
|
||||
|
||||
- **Number**:配置组的数量
|
||||
- **CFG_1...CFG_N**:每个配置组的具体参数
|
||||
- **Name**:配置名称
|
||||
- **FirstPoleDep**:第一电极深度(单位:米)
|
||||
- **HoleSpace**:孔间距(单位:米)
|
||||
|
||||
这些参数通过`GeCrossHoleCfg()`函数解析,用于地质勘探中的跨孔电阻率成像。系统会根据配置数量循环读取每个`CFG_X`节的参数,并存储在内存映射中供后续处理使用。
|
||||
|
||||
```cpp
|
||||
int iNumber = ::GetPrivateProfileInt(_T("CROSS_HOLE_CFG"), _T("Number"),255,_T("./config.ini"));
|
||||
for (int i = 1; i <= iNumber; i++)
|
||||
{
|
||||
if (!ParserSigCrossHole(i))
|
||||
{
|
||||
bRes = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Section sources**
|
||||
- [config.ini](file://config.ini#L39-L73)
|
||||
- [cpp/Main/GeoMative.cpp](file://cpp/Main/GeoMative.cpp#L1182-L1221)
|
||||
|
||||
## 多环境配置示例
|
||||
|
||||
### 开发环境配置
|
||||
```ini
|
||||
[UI]
|
||||
Language=1
|
||||
|
||||
[TRANSFER_INFO]
|
||||
Url=http://dev.update.geomative.com/Upgrade/software/V2.0
|
||||
HomePage=http://dev.geomative.com/
|
||||
|
||||
[ONLINE_DEVICE]
|
||||
RemoteType=2
|
||||
IP=192.168.1.100
|
||||
Port=8769
|
||||
```
|
||||
|
||||
### 测试环境配置
|
||||
```ini
|
||||
[UI]
|
||||
Language=2
|
||||
|
||||
[TRANSFER_INFO]
|
||||
Url=http://test.update.geomative.com/Upgrade/software/V2.0
|
||||
HomePage=http://test.geomative.com/
|
||||
|
||||
[ONLINE_DEVICE]
|
||||
RemoteType=2
|
||||
IP=10.0.0.50
|
||||
Port=8769
|
||||
```
|
||||
|
||||
### 生产环境配置
|
||||
```ini
|
||||
[UI]
|
||||
Language=1
|
||||
|
||||
[TRANSFER_INFO]
|
||||
Url=http://update.geomative.com/Upgrade/software/V2.0
|
||||
HomePage=http://www.geomative.com/
|
||||
|
||||
[ONLINE_DEVICE]
|
||||
RemoteType=2
|
||||
IP=120.31.131.181
|
||||
Port=8769
|
||||
```
|
||||
|
||||
## 配置加载优先级
|
||||
GeomativeStudio遵循特定的配置文件加载优先级:
|
||||
|
||||
1. **根目录优先**:位于软件根目录的`config.ini`具有最高优先级
|
||||
2. **安装目录次之**:`Install/Geomative Studio/`目录下的配置文件作为备选
|
||||
3. **运行时动态更新**:某些配置(如用户凭据)可在运行时修改并立即生效
|
||||
|
||||
这种设计允许用户在不同环境中灵活切换配置,同时确保关键设置不会被意外覆盖。例如,`Release/config.ini`中的`Language=2`会覆盖安装目录中相同文件的设置。
|
||||
|
||||
## 配置维护最佳实践
|
||||
|
||||
### 参数修改后的生效机制
|
||||
- **重启生效**:大多数配置需要重启软件才能生效
|
||||
- **即时生效**:用户界面语言等少数配置可在运行时动态切换
|
||||
- **验证机制**:关键参数(如IP地址)在读取后会进行有效性验证
|
||||
|
||||
### 常见配置错误排查方法
|
||||
1. **连接失败**:检查`ONLINE_DEVICE`节的IP和Port是否正确
|
||||
2. **语言不切换**:确认`UI`节的`Language`值是否为1或2
|
||||
3. **更新失败**:验证`TRANSFER_INFO`中的URL是否可访问
|
||||
4. **认证失败**:检查`USER_INFO`和`USER_Pwd`节的凭据是否正确
|
||||
5. **跨孔数据异常**:核对`CROSS_HOLE_CFG`中各孔的间距和深度设置
|
||||
|
||||
建议在修改配置前备份原文件,并在修改后通过日志文件(位于`LOG/`目录)验证配置是否正确加载。
|
||||
|
||||
**Section sources**
|
||||
- [config.ini](file://config.ini)
|
||||
- [Release/config.ini](file://Release/config.ini)
|
||||
- [Install/Geomative Studio/config.ini](file://Install/Geomative Studio/config.ini)
|
||||
|
||||
## 结论
|
||||
GeomativeStudio的`config.ini`文件是控制系统行为的核心组件。通过深入分析其结构和参数含义,我们可以更好地理解软件的工作机制,并根据实际需求进行定制化配置。遵循最佳实践进行配置维护,可以确保系统的稳定运行和高效管理。
|
||||
@@ -0,0 +1,238 @@
|
||||
# 版本与数据库配置
|
||||
|
||||
<cite>
|
||||
**本文档中引用的文件**
|
||||
- [version_info.txt](file://version_info.txt)
|
||||
- [database_modify.xml](file://database_modify.xml)
|
||||
- [DB\数据库字段修改记录.txt](file://DB/数据库字段修改记录.txt)
|
||||
- [cpp\Operator\UpdateDataBase.cpp](file://cpp/Operator/UpdateDataBase.cpp)
|
||||
- [h\UpdateDataBase.h](file://h/UpdateDataBase.h)
|
||||
- [cpp\Tools\checkupdate.cpp](file://cpp/Tools/checkupdate.cpp)
|
||||
- [h\checkupdate.h](file://h/checkupdate.h)
|
||||
</cite>
|
||||
|
||||
## 目录
|
||||
1. [版本控制机制](#版本控制机制)
|
||||
2. [数据库变更管理](#数据库变更管理)
|
||||
3. [XML与文本格式对比](#xml与文本格式对比)
|
||||
4. [系统升级流程](#系统升级流程)
|
||||
5. [部署与维护建议](#部署与维护建议)
|
||||
|
||||
## 版本控制机制
|
||||
|
||||
`version_info.txt` 文件是系统版本控制的核心元数据文件,其主要作用是存储当前软件的版本信息,支持自动更新功能。该文件位于安装目录中,其内容结构简单,仅包含一个版本号字段。
|
||||
|
||||
根据文件内容分析,当前版本号为 `2.4.1`。该版本号在系统启动时被读取,并与服务器端的最新版本进行比对,以判断是否需要执行更新操作。
|
||||
|
||||
版本比对逻辑主要在 `checkupdate.cpp` 文件中实现。系统通过 `GetGeoMativeVersion()` 函数从可执行文件的资源中提取版本信息,并通过 HTTP 请求从服务器获取最新的版本号(`GeomativeVersion.txt`)。如果本地版本低于服务器版本,则触发更新流程。
|
||||
|
||||
版本控制流程如下:
|
||||
1. 系统启动时读取 `version_info.txt` 中的版本号
|
||||
2. 通过 HTTP 请求获取服务器端最新版本号
|
||||
3. 比较本地与远程版本号
|
||||
4. 若本地版本较旧,则提示用户更新或自动下载更新包
|
||||
5. 更新完成后,更新本地版本信息
|
||||
|
||||
该机制确保了软件能够及时获取最新功能和安全补丁,同时避免了不必要的更新操作。
|
||||
|
||||
**本节来源**
|
||||
- [version_info.txt](file://version_info.txt)
|
||||
- [cpp\Tools\checkupdate.cpp](file://cpp/Tools/checkupdate.cpp)
|
||||
- [h\checkupdate.h](file://h/checkupdate.h)
|
||||
|
||||
## 数据库变更管理
|
||||
|
||||
`database_modify.xml` 文件是数据库结构变更管理的核心配置文件,采用 XML 格式存储数据库的变更历史。该文件详细记录了数据库表结构的增删改操作,包括字段属性、主键、索引、外键等元数据信息。
|
||||
|
||||
### XML结构分析
|
||||
|
||||
该文件采用分层结构,根节点为 `current_version`,包含当前版本号。其子节点 `pre_version` 记录了历史版本的变更信息。每个 `pre_version` 节点包含一个 `value` 属性,表示该版本号。
|
||||
|
||||
在 `pre_version` 节点下,`table` 元素表示对数据库表的操作,其 `modify_type` 属性定义了操作类型:
|
||||
- `1`: 增加表
|
||||
- `2`: 删除表
|
||||
- `3`: 修改表
|
||||
|
||||
`column` 元素描述了字段的详细属性:
|
||||
- `name`: 字段名称
|
||||
- `is_primary_key`: 是否为主键
|
||||
- `value_type`: 字段类型(1:text, 2:Memo, 3:Byte, 4:Integer, 5:Long, 6:Single, 7:Double, 8:Currency, 9:AutoNumber, 10:Date/Time, 11:Yes/No)
|
||||
- `attribute_value`: 字段长度(仅对文本类型有效)
|
||||
- `index`: 索引类型(0:无索引, 1:允许重复, 2:不允许重复)
|
||||
- `is_foreign_key`: 是否为外键
|
||||
- `is_empty`: 是否允许为空
|
||||
- `is_compress`: 是否压缩
|
||||
|
||||
### 变更执行流程
|
||||
|
||||
数据库变更的执行由 `UpdateDataBase.cpp` 中的 `CUpdateDataBase` 类负责。其工作流程如下:
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[启动系统] --> B{是否存在database_modify.xml?}
|
||||
B --> |否| C[无需更新数据库]
|
||||
B --> |是| D[解析XML文件]
|
||||
D --> E[获取当前数据库版本]
|
||||
E --> F[查找匹配的pre_version]
|
||||
F --> G[提取变更指令]
|
||||
G --> H{遍历变更指令}
|
||||
H --> I[增加表]
|
||||
H --> J[删除表]
|
||||
H --> K[修改表]
|
||||
I --> L[生成CREATE TABLE语句]
|
||||
J --> M[生成DROP TABLE语句]
|
||||
K --> N[生成ALTER TABLE语句]
|
||||
L --> O[执行SQL]
|
||||
M --> O
|
||||
N --> O
|
||||
O --> P[更新versioninfo表]
|
||||
P --> Q[完成数据库更新]
|
||||
```
|
||||
|
||||
**图示来源**
|
||||
- [database_modify.xml](file://database_modify.xml)
|
||||
- [cpp\Operator\UpdateDataBase.cpp](file://cpp/Operator/UpdateDataBase.cpp)
|
||||
- [h\UpdateDataBase.h](file://h/UpdateDataBase.h)
|
||||
|
||||
当系统检测到数据库需要更新时,会按照以下步骤执行:
|
||||
1. 读取 `database_modify.xml` 文件
|
||||
2. 解析当前版本号,查找对应的变更记录
|
||||
3. 根据 `modify_type` 执行相应的数据库操作
|
||||
4. 更新数据库中的 `versioninfo` 表,记录新的版本号
|
||||
5. 记录更新日志到 `LOG\update_db.log`
|
||||
|
||||
**本节来源**
|
||||
- [database_modify.xml](file://database_modify.xml)
|
||||
- [cpp\Operator\UpdateDataBase.cpp](file://cpp/Operator/UpdateDataBase.cpp)
|
||||
- [h\UpdateDataBase.h](file://h/UpdateDataBase.h)
|
||||
|
||||
## XML与文本格式对比
|
||||
|
||||
系统中存在两种数据库变更记录格式:结构化的 XML 格式和纯文本格式。`database_modify.xml` 采用 XML 格式,而 `DB\数据库字段修改记录.txt` 则采用纯文本格式。
|
||||
|
||||
### 文本格式分析
|
||||
|
||||
纯文本格式的变更记录位于 `DB\数据库字段修改记录.txt` 文件中,其内容为人工编写的变更日志,按时间顺序记录了数据库的变更历史。例如:
|
||||
|
||||
```
|
||||
2015年6月2日---
|
||||
1:td2dcon增加字段bUse,用于标记该条记录是否有效
|
||||
2:td3dcon增加字段bUse,用于标记该条记录是否有效
|
||||
3: td1dcon增加字段bUse,用于标记该条记录是否有效
|
||||
```
|
||||
|
||||
这种格式的优点是易于人类阅读和编写,但存在以下局限性:
|
||||
- 缺乏结构化,难以自动化解析
|
||||
- 没有标准化的字段类型定义
|
||||
- 无法精确描述索引、外键等复杂约束
|
||||
- 容易出现格式不一致的问题
|
||||
|
||||
### XML格式优势
|
||||
|
||||
相比之下,`database_modify.xml` 的 XML 格式具有显著优势:
|
||||
|
||||
1. **结构化存储**:采用标准化的标签和属性,便于程序解析和处理
|
||||
2. **自动化处理**:可以直接映射到数据库操作指令,实现自动化迁移
|
||||
3. **完整性**:包含完整的字段属性定义,包括数据类型、长度、约束等
|
||||
4. **可验证性**:可以通过 XML Schema 进行格式验证
|
||||
5. **版本控制**:支持多版本变更记录的嵌套管理
|
||||
|
||||
XML 格式特别适合在自动化部署和持续集成环境中使用,能够确保数据库结构变更的准确性和一致性。
|
||||
|
||||
**本节来源**
|
||||
- [database_modify.xml](file://database_modify.xml)
|
||||
- [DB\数据库字段修改记录.txt](file://DB/数据库字段修改记录.txt)
|
||||
|
||||
## 系统升级流程
|
||||
|
||||
当系统需要进行数据库结构升级时,会依据 `version_info.txt` 和 `database_modify.xml` 两个文件执行完整的迁移流程。
|
||||
|
||||
### 升级触发条件
|
||||
|
||||
系统在启动时会检查以下条件来决定是否需要升级:
|
||||
1. 本地版本号与服务器版本号不一致
|
||||
2. 数据库版本号与 `database_modify.xml` 中的版本号不一致
|
||||
3. 存在未应用的 `pre_version` 变更记录
|
||||
|
||||
### 升级执行过程
|
||||
|
||||
升级过程由 `CUpdateDataBase` 类的 `ParserUpdateDBXml()` 方法驱动,其核心逻辑如下:
|
||||
|
||||
1. **版本比对**:比较 `m_strCurVer`(当前版本)与 XML 中的 `current_version` 值
|
||||
2. **变更查找**:遍历 `pre_version` 节点,找到与当前数据库版本匹配的变更记录
|
||||
3. **指令解析**:根据 `modify_type` 解析表结构变更指令
|
||||
4. **SQL生成**:将 XML 指令转换为具体的 SQL 语句
|
||||
5. **事务执行**:在数据库事务中执行所有变更操作
|
||||
6. **版本更新**:更新 `versioninfo` 表中的版本号
|
||||
|
||||
### 实际案例
|
||||
|
||||
假设系统从版本 `1.1.1` 升级到 `1.1.2`,需要在 `test` 表中添加新字段。`database_modify.xml` 中的配置如下:
|
||||
|
||||
```xml
|
||||
<table name="test" modify_type="1">
|
||||
<column name="id" is_primary_key="1" value_type="9" attribute_value="1"/>
|
||||
<column name="col1" value_type="2" attribute_value="20" is_empty="1" is_compress="1"/>
|
||||
<column name="col2" value_type="5" is_foreign_key="0" refer_table_name="FK_test" refer_table_col="fk1"/>
|
||||
<column name="col3" value_type="5" index="2"/>
|
||||
</table>
|
||||
```
|
||||
|
||||
系统将生成以下 SQL 语句并执行:
|
||||
```sql
|
||||
CREATE TABLE test (
|
||||
id counter primary key,
|
||||
col1 text(20) with compression null,
|
||||
col2 integer,
|
||||
col3 integer
|
||||
);
|
||||
CREATE UNIQUE INDEX iCol3 ON test (col3);
|
||||
ALTER TABLE test ADD CONSTRAINT FK_col2 FOREIGN KEY (col2) REFERENCES FK_test(fk1) ON UPDATE CASCADE ON DELETE CASCADE;
|
||||
```
|
||||
|
||||
此过程确保了数据库结构变更的原子性和一致性。
|
||||
|
||||
**本节来源**
|
||||
- [version_info.txt](file://version_info.txt)
|
||||
- [database_modify.xml](file://database_modify.xml)
|
||||
- [cpp\Operator\UpdateDataBase.cpp](file://cpp/Operator/UpdateDataBase.cpp)
|
||||
|
||||
## 部署与维护建议
|
||||
|
||||
`version_info.txt` 和 `database_modify.xml` 作为关键的元数据文件,在部署、备份和故障恢复中扮演着重要角色。
|
||||
|
||||
### 部署注意事项
|
||||
|
||||
1. **文件完整性**:确保两个文件在部署包中完整存在
|
||||
2. **版本同步**:确保 `version_info.txt` 中的版本号与实际软件版本一致
|
||||
3. **权限设置**:确保应用程序有读写这两个文件的权限
|
||||
4. **路径正确**:确认文件位于正确的安装目录中
|
||||
|
||||
### 备份策略
|
||||
|
||||
建议将这两个文件纳入常规备份范围:
|
||||
- `version_info.txt`:记录当前系统状态,便于版本追溯
|
||||
- `database_modify.xml`:包含数据库变更历史,是数据恢复的关键
|
||||
|
||||
### 故障恢复
|
||||
|
||||
当系统出现故障时,这两个文件可帮助快速恢复:
|
||||
1. 通过 `version_info.txt` 确定系统版本
|
||||
2. 通过 `database_modify.xml` 重建数据库结构
|
||||
3. 按照变更历史逐步恢复数据
|
||||
|
||||
### 维护建议
|
||||
|
||||
为确保文件的准确性和完整性,建议:
|
||||
1. **变更审计**:每次数据库结构变更都必须更新 `database_modify.xml`
|
||||
2. **版本递增**:每次发布新版本都必须更新 `version_info.txt`
|
||||
3. **格式验证**:使用 XML 验证工具确保 `database_modify.xml` 的格式正确
|
||||
4. **文档同步**:保持 XML 文件与数据库实际结构的一致性
|
||||
5. **测试验证**:在测试环境中验证变更脚本的正确性
|
||||
|
||||
通过严格维护这两个元数据文件,可以确保系统的稳定运行和可维护性。
|
||||
|
||||
**本节来源**
|
||||
- [version_info.txt](file://version_info.txt)
|
||||
- [database_modify.xml](file://database_modify.xml)
|
||||
- [cpp\Operator\UpdateDataBase.cpp](file://cpp/Operator/UpdateDataBase.cpp)
|
||||
@@ -0,0 +1,352 @@
|
||||
# 配置说明
|
||||
|
||||
<cite>
|
||||
**本文档引用的文件**
|
||||
- [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)
|
||||
</cite>
|
||||
|
||||
## 目录
|
||||
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 version="1.0" encoding="UTF-8"?>
|
||||
<current_version value = "1.1.2">
|
||||
<pre_version value = "1.1.2">
|
||||
<!-- modify_type值含义 1 : 增加表 2 : 删除表 3 : 修改表 -->
|
||||
|
||||
<!-- 列的属性在这里只为名称,主键,值的属性,索引信息,外键,和是否为空,其中是否压缩.
|
||||
其中 vallue_type的值域 1: text 最多255个字节 2: Memo 最多65535个字节 3: Byte
|
||||
4: Integer 5: Long 6: Single 7: Double 8:Currency 9 AutoNumber 10: Date/Time
|
||||
11: Yes/No 12 : Ole Object 13: Hyperlink 暂时不支持Lookup Wizard
|
||||
其中在1,2 中,attribute_value表示的是字符的长度,其他值时,attribute_value没有含义。
|
||||
index值得含义: 0 : 表示没有索引, 1: 有索引并允许重复 2: 有索引不允许重复
|
||||
is_primary_key, index, is_foreign_key,is_empty, is_compress默认值为0 -->
|
||||
<table name = "test" modify_type= "1" >
|
||||
<column name = "id" is_primary_key = "1" value_type = "9" attribute_value="1" is_foreign_key = "0" is_empty="0" is_compress="0"/>
|
||||
<column name = "col1" value_type = "2" attribute_value="20" is_empty="1" is_compress="1"/>
|
||||
<column name = "col2" value_type = "5" attribute_value="30" is_foreign_key = "0" refer_table_name="FK_test" refer_table_col="fk1"/>
|
||||
<column name = "col3" value_type = "5" index ="2" />
|
||||
</table>
|
||||
</pre_version>
|
||||
</current_version>
|
||||
```
|
||||
|
||||
该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. 在防火墙设置中开放指定端口。
|
||||
Reference in New Issue
Block a user