如何对vc6.0环境下开发的MFC程序进行软件打包
事情是这样的,我在vc6.0环境下做了一个MFC程序~其中用到了数据库,数据库是用的SQLsever2000的开发环境,其中配置了一个ODBC数据源,我现在想对软件进行打...
事情是这样的,我在vc6.0环境下做了一个MFC程序~其中用到了数据库,数据库是用的SQL sever 2000的开发环境,其中配置了一个ODBC数据源,我现在想对软件进行打包,做成一个安装程序,但是我不知道编译后的程序还需要哪些动态链接库文件还有哪些文件需要被打包进去,还有我在里面用到了图片,是BMP的位图图片,编译之后还需要一块打包进去么~?
现在用过Inno Setup 但是呢,不行,没法配置数据源。
setup factory 也没法配置数据源,并且 貌似这个软件不能支持vc6.0只能支持vc++2008,也不行
installShield也不能配置odbc数据源。
请各位大侠告诉我怎么能打包这个程序并且做出的安装程序可以自动配置ODBC数据源而且把数据库一块给弄好?
小弟在此谢过各位,请大家帮帮忙。我是菜鸟,越详细越好。 展开
现在用过Inno Setup 但是呢,不行,没法配置数据源。
setup factory 也没法配置数据源,并且 貌似这个软件不能支持vc6.0只能支持vc++2008,也不行
installShield也不能配置odbc数据源。
请各位大侠告诉我怎么能打包这个程序并且做出的安装程序可以自动配置ODBC数据源而且把数据库一块给弄好?
小弟在此谢过各位,请大家帮帮忙。我是菜鸟,越详细越好。 展开
4个回答
展开全部
ODBC数据源可以在程序初始化时自动配置数据源。可用仿照以下代码完成注册数据源:BOOL C***App::InitInstance(){}里面添加代码如下:
/////////////////////////自动注册数据源驱动/////////////////////////
CString szPath;
GetModuleFileName(NULL,szPath.GetBufferSetLength (MAX_PATH+1),MAX_PATH);
szPath.ReleaseBuffer ();
int nPos;
nPos=szPath.ReverseFind ('\\');
szPath=szPath.Left (nPos);
CString szFile = szPath + "\\???.mdb";
char szAtr[256];
sprintf(szAtr,"DSN=%s!DBQ=%s!DEFAULTDIR=%s!! ","???",
szFile,szPath);
int nlen;
nlen = strlen(szAtr);
for (int i=0; i<nlen; i++)
{
if (szAtr [i] == '!')
szAtr [i] = '\0';
}
if (FALSE == SQLConfigDataSource(NULL, ODBC_ADD_DSN, "Microsoft Access Driver (*.mdb)\0", (LPCSTR)szAtr))
AfxMessageBox("自动注册数据源失败");
其中以上是ACCSESS,SQLServer类似,只是SQLConfigDataSource函数的参数不同,可搜索相关信息。
/////////////////////////自动注册数据源驱动/////////////////////////
CString szPath;
GetModuleFileName(NULL,szPath.GetBufferSetLength (MAX_PATH+1),MAX_PATH);
szPath.ReleaseBuffer ();
int nPos;
nPos=szPath.ReverseFind ('\\');
szPath=szPath.Left (nPos);
CString szFile = szPath + "\\???.mdb";
char szAtr[256];
sprintf(szAtr,"DSN=%s!DBQ=%s!DEFAULTDIR=%s!! ","???",
szFile,szPath);
int nlen;
nlen = strlen(szAtr);
for (int i=0; i<nlen; i++)
{
if (szAtr [i] == '!')
szAtr [i] = '\0';
}
if (FALSE == SQLConfigDataSource(NULL, ODBC_ADD_DSN, "Microsoft Access Driver (*.mdb)\0", (LPCSTR)szAtr))
AfxMessageBox("自动注册数据源失败");
其中以上是ACCSESS,SQLServer类似,只是SQLConfigDataSource函数的参数不同,可搜索相关信息。
展开全部
如果在程序中使用了第三方控件或组件(非使用MFC控件面板上默认的一些控件),就需要加入包中。还有你EXE编译时,如果运用的Using MFC in shared DLL,还要加上MFC42D.dll.其它的打包程序我不清楚,我用Wise9,是可以自动配置ODBC的。至于图片,如果你在工程中已经将它加入资源文件(如BitMAP)就不要另外打包加入了。如果是动态调用(指定路径),肯定是要打包了。希望你成功。做好后,最好在一个新机子上试一下,看是不是少什么文件没有被打入包中。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果是打包,最后不要用ODBC数据源。直接用ADOConn类
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ODBC数据源可以在程序初始化时自动配置数据源。可用仿照以下代码完成注册数据源:BOOL
C***App::InitInstance(){}里面添加代码如下:
/////////////////////////自动注册数据源驱动/////////////////////////
CString
szPath;
GetModuleFileName(NULL,szPath.GetBufferSetLength
(MAX_PATH+1),MAX_PATH);
szPath.ReleaseBuffer
();
int
nPos;
nPos=szPath.ReverseFind
('\\');
szPath=szPath.Left
(nPos);
CString
szFile
=
szPath
+
"\\???.mdb";
char
szAtr[256];
sprintf(szAtr,"DSN=%s!DBQ=%s!DEFAULTDIR=%s!!
","???",
szFile,szPath);
int
nlen;
nlen
=
strlen(szAtr);
for
(int
i=0;
i<nlen;
i++)
{
if
(szAtr
[i]
==
'!')
szAtr
[i]
=
'\0';
}
if
(FALSE
==
SQLConfigDataSource(NULL,
ODBC_ADD_DSN,
"Microsoft
Access
Driver
(*.mdb)\0",
(LPCSTR)szAtr))
AfxMessageBox("自动注册数据源失败");
其中以上是ACCSESS,SQLServer类似,只是SQLConfigDataSource函数的参数不同,可搜索相关信息。
C***App::InitInstance(){}里面添加代码如下:
/////////////////////////自动注册数据源驱动/////////////////////////
CString
szPath;
GetModuleFileName(NULL,szPath.GetBufferSetLength
(MAX_PATH+1),MAX_PATH);
szPath.ReleaseBuffer
();
int
nPos;
nPos=szPath.ReverseFind
('\\');
szPath=szPath.Left
(nPos);
CString
szFile
=
szPath
+
"\\???.mdb";
char
szAtr[256];
sprintf(szAtr,"DSN=%s!DBQ=%s!DEFAULTDIR=%s!!
","???",
szFile,szPath);
int
nlen;
nlen
=
strlen(szAtr);
for
(int
i=0;
i<nlen;
i++)
{
if
(szAtr
[i]
==
'!')
szAtr
[i]
=
'\0';
}
if
(FALSE
==
SQLConfigDataSource(NULL,
ODBC_ADD_DSN,
"Microsoft
Access
Driver
(*.mdb)\0",
(LPCSTR)szAtr))
AfxMessageBox("自动注册数据源失败");
其中以上是ACCSESS,SQLServer类似,只是SQLConfigDataSource函数的参数不同,可搜索相关信息。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询