Исключение при программной установке VFPOLEDB

Я пытаюсь установить драйвер VFPOLEDB через консольное приложение.

Я пытался сделать что-то вроде этого

public void InstallVfpOledb()
{
            Type type = Type.GetTypeFromProgID("WindowsInstaller.Installer");
            try
            {
                Installer installer = (Installer)Activator.CreateInstance(type);
                installer.InstallProduct(@"C:\VFPOLEDBSetup.msi");
            }
            catch (Exception e)
            {
                Console.Write(e.ToString());
            }
}

Поэтому, когда я запускаю программу, я получаю следующее исключение:

System.Runtime.InteropServices.COMException (0x80004005): InstallProduct,PackagePath,PropertyValues ​​в System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData) в WindowsInstaller.Installer.InstallProduct(String PackagePath, String PropertyValues) в installtest.Program.Main(String[] args) строка 22

Я считаю, что метод InstallProduct имеет значения пути и свойства в качестве параметров.

Мне не хватает этих значений, я думаю.

Может ли кто-нибудь указать мне правильное направление для того же самого?


person Aditya Korti    schedule 05.04.2017    source источник


Ответы (1)


Этот работает для меня:

// using Microsoft.Deployment.WindowsInstaller in 
// Microsoft.Deployment.WindowsInstaller.dll

try
{
    Installer.InstallProduct(@"C:\VFPOLEDBSetup.msi","");
}
catch (Exception e)
{
    Console.Write(e.Message);
}

Запрашивает разрешение, если не запускать от имени администратора.

person Cetin Basoz    schedule 05.04.2017
comment
Спасибо. Это решает половину проблемы. Теперь у меня есть еще одна ошибка VFPOLEDB, не зарегистрированная ошибка. Для решения этой проблемы, я думаю, мне нужно установить здесь некоторые свойства. - person Aditya Korti; 05.04.2017
comment
Нет. Я думаю, ваша проблема в том, что вы пытаетесь использовать VFPOLEDB в 64-битной компиляции. Попробуйте настроить таргетинг на x86 в свойствах проекта. VFPOLEDB — 32 бита. - person Cetin Basoz; 05.04.2017
comment
Нет, у меня компиляция x86. Я установил VFPOLEDB нормально, и мое приложение работает без сбоев уже около 6 месяцев. - person Aditya Korti; 06.04.2017
comment
Попробуйте установить драйвер, выбрав вариант «Только я», вы получите ту же ошибку. - person Aditya Korti; 06.04.2017
comment
И мое приложение VFP (которое тоже использует VFPOLEDB), и приложения C# по-прежнему работают без сбоев после того, как я установил его с помощью описанного выше метода. - person Cetin Basoz; 06.04.2017
comment
Кстати, возможно, я неправильно оцениваю это, попробуйте с ALLUSERS = 1) в параметре параметров. - person Cetin Basoz; 06.04.2017
comment
на всякий случай, если вы знаете, есть ли способ добавить драйвер oledb в качестве предварительного условия для моего приложения Windows? - person Aditya Korti; 06.04.2017
comment
Извините, я не силен в проектах настройки, мой коллега делает все настройки. - person Cetin Basoz; 06.04.2017