制作安装文件不一定需要使用专门的工具,对于一般的小软件而言,我们可以为它增加一个简单的安装功能。 基本过程如下:http://www.shengfang.org 将需要的数据文件http://www.shengfang.org放入资源文件中。 判断是否已经安装,如果没有,开始安装,否则直接运行。 提示用户选择http://www.shengfang.org安装目录 拷贝文件:将数据文件从资源文件中释放出来;拷贝自身; 创建快捷方式http://www.shengfang.org完成安装,设置标志表示安装完成。 下面我说明一些重点环节: 一、把数据文件http://www.shengfang.org放入资源文件中和进行释放 1、 加入资源文件 平常我们在VC6的IDE环境中添加资源,VC只会列出一些常见的类型,如菜单、对话框等,其实我们可以添加任意文件。http://www.shengfang.org在资源中选择 IMPORT,在对话框中选择我们需要的文件,例如 c:\io.sys,由于不是VC6默认的资源类型,所以会弹出对话框提示输入资源类型,我在这里定义为sf,确定后,IO.SYS文件就已经包含在我们程序的资源中了,ID号,默认为IDR_SF1。 2、 释放资源:http://www.shengfang.org HRSRChRes = FindResource(NULL,MAKEINTRESOURCE(IDR_SF1),_T("sf")); //获得IO.SYS资源的指针。参数1是程序的句柄,;参数2是资源名称;参数3是资源类型。 DWORDdwSize = SizeofResource(NULL , hRes); //获得指定资源的大小 HGLOBALMemoryHandle = LoadResource(NULL, hRes);//将资源载入内存 if(MemoryHandle!= NULL) { BYTE *MemPtr = (BYTE *)LockResource(MemoryHandle); //定位资源位置 CFilefile("c:\\iosf.sys",CFile::modeCreate &line; CFile::modeWrite); file.Write(MemoryHandle,dwSize); //创建一个临时文件,写入资源数据 } 这样,我们就把一http://www.shengfang.org个文件保存到资源文件并从资源中释放,最后,我们通过ULTRAEDIT或者WINDIFF进行一下比较,测试是否复制正常。 二、提示目录选择 1、显示目录选择对话框http://www.shengfang.org BROWSEINFO bBinfo; memset(&bBinfo,0,sizeof(BROWSEINFO)); //定义结构并初始化 bBinfo.hwndOwner=m_hWnd;//设置对话框所有者句柄 char strTmp[255]; bBinfo.lpszTitle="请选择安装路径:"; bBinfo.ulFlags = BIF_RETURNONLYFSDIRS; //设置标志只允许选择目录 LPITEMIDLISTlpDlist; //用来保存返回信息的IDList,使用SHGetPathFromIDList函数转换为字符串 lpDlist=SHBrowseForFolder(&bBinfo) ; //显示选择对话框 if(lpDlist!=NULL) { SHGetPathFromIDList(lpDlist,strTmp);//把项目标识列表转化成目录 TRACE(strTmp); } 2、 判断http://www.shengfang.org路径是否有效 一般大家可能以为http://www.shengfang.org上面步骤就已经完成了安装路径选择,但是不行,因为用户有可 能选择的是http://www.shengfang.org软驱或者光驱之类的文件夹,所以我们必须判断目录的有效性。 if(GetDriveType(CString(strTmp).Left(1))!=DRIVE_FIXED) 首先取出返回目录的前三个字符,用GetDriveType获得驱动器的类型属性,如果不是硬盘,那么我们就需要做相应的处理了
字体:大 中 小 |