Как читать свойства 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 #.
Заранее спасибо.