499 lines
18 KiB
Markdown
499 lines
18 KiB
Markdown
# 安装与配置
|
||
|
||
<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) |