Files
envi-code/SourceCode/Code2026/tg_shs/shs_public/LiveUpdateDefine.h
T
2026-09-28 15:28:50 +08:00

117 lines
3.7 KiB
C

#ifndef __LIVEUPDATE_DEFINE_H__
#define __LIVEUPDATE_DEFINE_H__
typedef struct DownloadInfo
{
int nSpec; // 专业(枚举值eTGSpeciality)
TCHAR szDownloadURL[MAX_PATH]; // 下载的地址,如:http://down.lltskb.com/lulutong.zip或ftp://192.168.0.2/TangentPackage/arxdev.pdf
TCHAR szSavePath[MAX_PATH]; // 下载后本地的保存路径,如"E:\\"
TCHAR szSaveOnlyFileName[MAX_PATH]; // 下载后保存的文件名,默认是下载地址最后的文件名
TCHAR szUsername[MAX_PATH]; // 远程登录时的用户名
TCHAR szPassword[MAX_PATH]; // 远程登录时的密码
TCHAR szTchIniPath[MAX_PATH]; // 专业软件的tch.ini的路径
BOOL bForceDownload; // 是否强制重新下载,FALSE为断点续传,TRUE为重新下载
BOOL bCloseDownloadWnd; // 下载完成后关闭默认的下载窗口
BOOL bShowDownloadWnd; // 更新过程中是否显示下载窗口
int nThreadCount; // 下载的线程数,默认值为4,最多支持16
TCHAR szLogPath[MAX_PATH]; // 下载日志文件的全路径,缺省为系统临时目录,文件可以不存在,文件夹必须存在
BOOL bCallComOnEnd; // 下载完成之后是否调用COM
BOOL bUseDefaultCLSID; // 下载完成后调用的是否是默认的COM,仅在bCallComOnEnd为TRUE时有效
CLSID rclsid; // 下载完成后调用COM的CLSID,仅在bUseDefaultCLSID为FALSE时有效
}DOWNLOADINFO,*PDownloadInfo;
enum eTGSpeciality
{
eTArch = 1, // 建筑
eTASD = 2, // 结构
eTElec = 3, // 电气
eTHvac = 6, // 暖通
eTSun = 7, // 日照
eTWT = 8, // 给排水
eTCAD = 10, // 蚂蚁
eTLEA = 11, // 光污染
eTBEC = 12, // 节能
eTSED = 15, // 太阳能
};
BOOL GetDownloadParam(PDownloadInfo pDI, CString &sParam, CString &sCLSID)
{
sParam.Empty();
if (pDI == NULL)
{
return FALSE;
}
sParam.Format(_T("%d\n%s\n%s\n%s\n%s\n%s\n%s\n%d\n%d\n%d\n%d\n%s\n%d\n%d\n"),
pDI->nSpec,
pDI->szDownloadURL,
pDI->szSavePath,
pDI->szSaveOnlyFileName,
pDI->szUsername,
pDI->szPassword,
pDI->szTchIniPath,
pDI->bForceDownload,
pDI->bCloseDownloadWnd,
pDI->bShowDownloadWnd,
pDI->nThreadCount,
pDI->szLogPath,
pDI->bCallComOnEnd,
pDI->bUseDefaultCLSID
);
BSTR bstrCLSID;
::StringFromCLSID(pDI->rclsid, &bstrCLSID);
sCLSID.Empty();
sCLSID = bstrCLSID;
CoTaskMemFree(bstrCLSID);
return TRUE;
}
BOOL ParseDownloadParam(PDownloadInfo pDI, const CString &sParam, const CString &sCLSID)
{
if (pDI == NULL)
{
return FALSE;
}
// 不使用_stscanf是因为结构体中变量值可能为空,_stscanf失败
CString sValue = _T("");
AfxExtractSubString(sValue, sParam, 0, _T('\n'));
pDI->nSpec = _ttoi(sValue);
AfxExtractSubString(sValue, sParam, 1, _T('\n'));
_tcscpy(pDI->szDownloadURL, sValue);
AfxExtractSubString(sValue, sParam, 2, _T('\n'));
_tcscpy(pDI->szSavePath, sValue);
AfxExtractSubString(sValue, sParam, 3, _T('\n'));
_tcscpy(pDI->szSaveOnlyFileName, sValue);
AfxExtractSubString(sValue, sParam, 4, _T('\n'));
_tcscpy(pDI->szUsername, sValue);
AfxExtractSubString(sValue, sParam, 5, _T('\n'));
_tcscpy(pDI->szPassword, sValue);
AfxExtractSubString(sValue, sParam, 6, _T('\n'));
_tcscpy(pDI->szTchIniPath, sValue);
AfxExtractSubString(sValue, sParam, 7, _T('\n'));
pDI->bForceDownload = _ttoi(sValue);
AfxExtractSubString(sValue, sParam, 8, _T('\n'));
pDI->bCloseDownloadWnd = _ttoi(sValue);
AfxExtractSubString(sValue, sParam, 9, _T('\n'));
pDI->bShowDownloadWnd = _ttoi(sValue);
AfxExtractSubString(sValue, sParam, 10, _T('\n'));
pDI->nThreadCount = _ttoi(sValue);
AfxExtractSubString(sValue, sParam, 11, _T('\n'));
_tcscpy(pDI->szLogPath, sValue);
AfxExtractSubString(sValue, sParam, 12, _T('\n'));
pDI->bCallComOnEnd = _ttoi(sValue);
AfxExtractSubString(sValue, sParam, 13, _T('\n'));
pDI->bUseDefaultCLSID = _ttoi(sValue);
BSTR bstrCLSID = sCLSID.AllocSysString();
::CLSIDFromString(bstrCLSID, &pDI->rclsid);
SysFreeString(bstrCLSID);
return TRUE;
}
#endif