VC++创建msi文件的方法
来源:爱站网时间:2019-08-06编辑:网友分享
使用VC++可以编写自己的软件安装程序,其实这只是为了创建安装程序类型的msi文件,MSI数据库中的各种表都很复杂,无法清楚地研究出来。本文是爱站技术频道小编介绍的VC++创建msi文件的方法,一起来看看吧!
使用VC++可以编写自己的软件安装程序,其实这只是为了创建安装程序类型的msi文件,MSI数据库中的各种表都很复杂,无法清楚地研究出来。本文是爱站技术频道小编介绍的VC++创建msi文件的方法,一起来看看吧!
具体示例程序如下:
#pragma once //CRT headers. #include <TCHAR.H> //windows platform headers. #include <WINDOWS.H> //msi headers. #pragma comment(lib,"msi.lib") #include <MSI.H> #include <MSIQUERY.H> INT APIENTRY _tWinMain( HINSTANCE, HINSTANCE, LPTSTR, INT) { MSIHANDLE msiHandle=NULL; //create msi database. UINT openResult=MsiOpenDatabase( _T("Setup.msi"), MSIDBOPEN_CREATEDIRECT, &msiHandle); //create msil database failed. if(openResult != ERROR_SUCCESS) { LPVOID formatMsg=NULL; MSIHANDLE errorCode=MsiGetLastErrorRecord(); //format error code to string. FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, errorCode, MAKELANGID(LANG_NEUTRAL,SUBLANG_SYS_DEFAULT), (LPTSTR)&formatMsg, 0, NULL); //output error message. MessageBoxEx( NULL, (LPTSTR)formatMsg, _T("tip window"), MB_OK, MAKELANGID(LANG_NEUTRAL,SUBLANG_SYS_DEFAULT)); //free message buffer. LocalFree(formatMsg); formatMsg=NULL; return -1; } //commit msi database. UINT commitResult=MsiDatabaseCommit(msiHandle); if(commitResult != ERROR_SUCCESS) { LPVOID formatMsg=NULL; MSIHANDLE errorCode=MsiGetLastErrorRecord(); //format error code to string. FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, errorCode, MAKELANGID(LANG_NEUTRAL,SUBLANG_SYS_DEFAULT), (LPTSTR)&formatMsg, 0, NULL); //output error message. MessageBoxEx( NULL, (LPTSTR)formatMsg, _T("tip window"), MB_OK, MAKELANGID(LANG_NEUTRAL,SUBLANG_SYS_DEFAULT)); //free message buffer. LocalFree(formatMsg); formatMsg=NULL; return -1; } //close msi database handle. UINT closeResult=MsiCloseHandle(msiHandle); if(closeResult != ERROR_SUCCESS) { LPVOID formatMsg=NULL; MSIHANDLE errorCode=MsiGetLastErrorRecord(); //format error code to string. FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, errorCode, MAKELANGID(LANG_NEUTRAL,SUBLANG_SYS_DEFAULT), (LPTSTR)&formatMsg, 0, NULL); //output error message. MessageBoxEx( NULL, (LPTSTR)formatMsg, _T("tip window"), MB_OK, MAKELANGID(LANG_NEUTRAL,SUBLANG_SYS_DEFAULT)); //free message buffer. LocalFree(formatMsg); formatMsg=NULL; return -1; } return 0; } </SPAN>
上述是爱站技术频道小编为大家介绍的VC++创建msi文件的方法,其实这个程序都可以实现简单的基本功能,我们可以根据自己的需要进一步开发其他个性化功能,以满足自己的需求。
上一篇:VC中使用GDI+的配置方法概述
下一篇:详解Windows的钩子机制