Как читать свойства MSI в C #

Я хочу прочитать свойства MSI в C # в настольном приложении. Я использую следующий код:

    public static string GetMSIProperty( string msiFile, string msiProperty)
    {
        string retVal= string.Empty ;

        Type classType = Type.GetTypeFromProgID("WindowsInstaller.Installer");
        Object installerObj = Activator.CreateInstance(classType);
        WindowsInstaller.Installer installer = installerObj as WindowsInstaller.Installer;

        Database database = installer.OpenDatabase("C:\\DataP\\sqlncli.msi",0 );   

        string sql = String.Format("SELECT Value FROM Property WHERE Property=’{0}’", msiProperty);

        View view = database.OpenView(sql);

        Record record = view.Fetch();

        if (record != null)
        {
            retVal = record.get_StringData(1);
        }
        else
            retVal = "Property Not Found";

        return retVal;            
    }

Но я получаю сообщение об ошибке, так как исключение System.Runtime.InteropServices.COME было обработано.

файл sqlncli.msi физически находится в каталоге c: \ DataP. Во время отладки я обнаружил, что база данных не содержит данных после инструкции installer.OpenDatabase ().

Пожалуйста, предложите мне, как решить эту проблему и получить свойства MSI в c #.

Заранее спасибо.

Ответы на вопрос(4)

Ваш ответ на вопрос