Необходимо использовать:
Type installerType = Type.GetTypeFromProgID("WindowsInstaller.Installer");
Вот образец из части моего кода - в моем случае, я получаю версию установщика:
// Get the type of the Windows Installer object
Type installerType = Type.GetTypeFromProgID("WindowsInstaller.Installer");
// Create the Windows Installer object
Installer installer = (Installer)Activator.CreateInstance(installerType);
// Open the MSI database in the input file
Database database = installer.OpenDatabase(inputFile, MsiOpenDatabaseMode.msiOpenDatabaseModeReadOnly);
// Open a view on the Property table for the version property
View view = database.OpenView("SELECT * FROM Property WHERE Property = 'ProductVersion'");
// Execute the view query
view.Execute(null);
// Get the record from the view
Record record = view.Fetch();
// Get the version from the data
string version = record.get_StringData(2);
Не был бы это быть легче использовать этот код:
Type type = typeof(Windows.Installer);
Если Вы предпочитаете Тип. GetType (Строка) перегрузка необходимо включать корректное имя сборки после полного пути к классу, например:
Type type = Type.GetType("Windows.Installer, <assembly for MsiInstaller>");
Где Вы получали "Windows. Установщик" материал от?
... потому что:
Type.GetType
берет имя типа.NET, не COM ProgId.Таким образом: Используйте P/Invoke (DllImport
, и т.д.), чтобы говорить с API MSI.