描述:
希望客户端ie下载之后可以注册com,还能把控件需要的图片资源保存在我希望的目录下。
各位一般遇到类似情况,是把资源统统放在cab里,还是等控件安装好之后再去下载资源?
高手们帮帮忙吧~~
解决方案1:
[Version]
Signature="$Chicago$"
AdvancedINF=2.5
[DefaultInstall]
CopyFiles=InstallFilesSection,InstallInfSection
RegisterOCXs=RegisterOCXSection
[DefaultUninstall]
cleanup=1
Delfiles=InstallFilesSection
UnRegisterOCXs=UnRegisterOCXSection
;该节写入需要注册的路径和文件名
[RegisterOCXSection]
%11%\xxx.ocx
[UnRegisterOCXSection]
%11%\xxx.ocx
;该节写入你想要安装的所有文件
;YourActiveX、File1、File2代表需要安装的文件
[InstallFilesSection]
YourActiveX=xxx.ocx
File1=a.bmp
File2=b.wav
;inf文件的名称和节
[InstallInfSection]
infFile=your.inf
;文件,注册
[YourActiveX]
file-win32-x86=thiscab
RegisterServer=yes
;文件,不需注册
[File1]
file-win32-x86=thiscab
RegisterServer=no
;文件,不需注册
[File2]
file-win32-x86=thiscab
RegisterServer=no
;指明安装路径
[DestinationDirs]
InstallFilesSection=11
InstallInfSection=17
我这里有一个CAB包的链接,同你的情况很类似,多个需要安装的文件在同一个CAB包中,你可以下载回来研究研究,参考写一个应该就能解决问题。
http://diwww.globalenglish.com/@v=700@/html/setup/cabs/ge.cab
CString CDownInfoDlg::DownURL(CString strURL)
{
CInternetSession m_Session("DigitalTitan");
CHttpFile* pFile=NULL;
CException* e;
TCHAR szTempPath[MAX_PATH],szTempFile[MAX_PATH];
DWORD dwResult=::GetTempPath(MAX_PATH,szTempPath);
CString strURLPath;
GetTempFileName(szTempPath,_T("DigitalTitan_"),0,szTempFile);
strURLPath=szTempFile;
TRY
{
pFile=(CHttpFile*)m_Session.OpenURL(strURL);
}
CATCH_ALL(e)
{
pFile=NULL;
AfxMessageBox("URL地址不合法",MB_ICONINFORMATION);
return "";
}
END_CATCH_ALL
if(pFile)
{
DWORD dwStatus;
DWORD dwBufLen=sizeof(dwStatus);
BOOL bSuccess=pFile->QueryInfo(HTTP_QUERY_STATUS_CODE|HTTP_QUERY_FLAG_NUMBER,&dwStatus,&dwBufLen);
if(bSuccess&&dwStatus>=200&&dwStatus<300)
{
CStdioFile m_File;
if(m_File.Open(strURLPath,CFile::modeWrite|CFile::modeCreate|CFile::typeBinary))
{
BYTE pBuf[1024];
DWORD dwRead;
do
{
dwRead=pFile->Read(pBuf,1024);
m_File.Write(pBuf,dwRead);
}
while(dwRead>0);
m_File.Close();
}
}
pFile->Close();
delete pFile;
}
else
{
m_Session.Close();
}
return strURLPath;
}