0


Windows インストーラー自動化 API を呼び出す単純な c++ win32 コンソール アプリ (vs2010) を作成しようとしています。しかし、私はこれまでのところ失敗しています。このアプローチにより、"Microsoft C++ 例外: _com_error at memory location" エラーが発生します。
この API を正しく使用するには? .exe ファイルが 1 つしかない 32 ビットおよび 64 ビット システムで正しく動作させるにはどうすればよいですか?

どうもありがとう、
マレク

#include "stdafx.h"
#include <windows.h>
#include <atlstr.h>
#import "msi.dll"

using namespace WindowsInstaller;

_bstr_t GetInstalledProduct(InstallerPtr pInstaller,_bstr_t upgradeCode){
    StringListPtr installedProducts = pInstaller->GetRelatedProducts(upgradeCode); 

    return installedProducts->Count > 0 ? installedProducts->GetItem(0) : ""; 
}

int _tmain(int argc, _TCHAR* argv[])
{
    ::CoInitialize(NULL);
    InstallerPtr pInstaller("WindowsInstaller.Installer");
    _bstr_t upgradeCode("4C34BD16-CAD4-4059-B074-777793406C5F"); 
    _bstr_t installedProduct = GetInstalledProduct(pInstaller, upgradeCode); 

    StringListPtr features = pInstaller->GetFeatures(installedProduct); 

    ::CoUninitialize();

    return 0;
}
4

1 に答える 1