读取msi文件内容

读取msi文件内容

  (2011-12-29 10:34:22)
标签: 

msi

 

it

分类: WindowsInstaller
所需要的库:Msi.lib; 头文件:Msiquery.h 函数调用顺序:(函数的具体用法查看MSDN,msi文件内部结构可通过Orca工具察看)    MSIHANDLE hMsiHandle,  hView,  hRecord; 1.  MsiOpenDatabase(strMsiPath, MSIDBOPEN_READONLY, &hMsiHandle);//strMsiPath是msi文件的完整路径,路      经中的"\"要替换为"\\"。函数返回ERROR_SUCCESS表示成功。 2.  MsiDatabaseOpenView(hMsiHandle, _T("Select * from CustomAction"), &hView);    MsiViewExecute(hView, NULL);    //SQL Syntax: "Select * from Binary WHERE Name = 'NewBinary20'"从Binary中读取Name为NewBinary20的      //一行信息,具体语法在MSDN中输入 SQL Syntax。 3.  while(MsiViewFetch(hView, &hRecord) == ERROR_SUCCESS)    {      LPTSTR Action, Type, Source, Target;      DWORD  dwStringLen = MAX_PATH;      int    dwCustomAction;
     MsiRecordGetString(hRecord, 1, Action, &dwStringLen);   //每次调用要保证第三个参数的值足够大,         //由于此处是引用,所以每次调用完以后dwStringLen的值会改变成此次实际读取的内容长度。下次不进行         //初始化而直接用此变量就可能出错。       dwCustomType = MsiRecordGetInteger(hRecord, 2);        //Type的类型是int型      dwStringLen = MAX_PATH;      MsiRecordGetString(hRecord, 3, Source, &dwStringLen );      dwStringLen = MAX_PATH;      MsiRecordGetString(hRecord, 4, Target, &dwStringLen );    } 4.  MsiCloseHandle(hView);    MsiCloseHandle(hMsiHandle);


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部