我正在尝试通过控制台应用程序安装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 at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags标志,Object target,Int32 [] aWrapperTypes,MessageData& msgData)在WindowsInstaller.Installer.InstallProduct(String PackagePath,String PropertyValues)at installtest.Program.Main(String [] args)第22行
我相信InstallProduct
方法将路径和属性值作为参数。
我想我错过了那些价值观。
有人能指出我正确的方向吗?
答案 0 :(得分:1)
这个适用于我:
// using Microsoft.Deployment.WindowsInstaller in
// Microsoft.Deployment.WindowsInstaller.dll
try
{
Installer.InstallProduct(@"C:\VFPOLEDBSetup.msi","");
}
catch (Exception e)
{
Console.Write(e.Message);
}
如果不以管理员身份运行,则会要求许可。