117 lines
3.7 KiB
C
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 |