C#如何运行一个不同用户的msi安装包
C# How can I run an msi installation package as a different user
我需要能够在最终用户计算机上安装 crystal 报告,但网络安全不允许在普通用户登录时安装它,因此必须 'run as a different user' 才能在每台计算机上安装桌面。
我正在尝试创建一个允许任何用户安装 crystal 报告的小应用程序.. 到目前为止我有:
Process p = new Process();
p.StartInfo.FileName = @"C:\cabs\CRRuntime_32bit_13_0_5.msi";
p.StartInfo.Arguments = "/i \"C:\Application.msi\"/qn";
p.StartInfo.UserName = uname;
p.StartInfo.Password = pword;
p.StartInfo.Domain = domain;
p.StartInfo.UseShellExecute = false;
try
{
p.Start();
}
catch(Exception er)
{
MessageBox.Show(er.Message);
}
当我尝试 运行 此代码时,我看到消息 "The specified executable is not a valid application for this OS platform"
我是不是漏掉了什么?
干杯
MSI 在windows 中不是可执行文件。您应该使用您的 msi 文件作为参数调用 msiexec
Process p = new Process();
p.StartInfo.FileName = @"C:\Windows\System32\msiexec.exe";
p.StartInfo.Arguments = @"C:\cabs\CRRuntime_32bit_13_0_5.msi";
p.StartInfo.UserName = uname;
p.StartInfo.Password = pword;
p.StartInfo.Domain = domain;
p.StartInfo.UseShellExecute = false;
我需要能够在最终用户计算机上安装 crystal 报告,但网络安全不允许在普通用户登录时安装它,因此必须 'run as a different user' 才能在每台计算机上安装桌面。
我正在尝试创建一个允许任何用户安装 crystal 报告的小应用程序.. 到目前为止我有:
Process p = new Process();
p.StartInfo.FileName = @"C:\cabs\CRRuntime_32bit_13_0_5.msi";
p.StartInfo.Arguments = "/i \"C:\Application.msi\"/qn";
p.StartInfo.UserName = uname;
p.StartInfo.Password = pword;
p.StartInfo.Domain = domain;
p.StartInfo.UseShellExecute = false;
try
{
p.Start();
}
catch(Exception er)
{
MessageBox.Show(er.Message);
}
当我尝试 运行 此代码时,我看到消息 "The specified executable is not a valid application for this OS platform"
我是不是漏掉了什么?
干杯
MSI 在windows 中不是可执行文件。您应该使用您的 msi 文件作为参数调用 msiexec
Process p = new Process();
p.StartInfo.FileName = @"C:\Windows\System32\msiexec.exe";
p.StartInfo.Arguments = @"C:\cabs\CRRuntime_32bit_13_0_5.msi";
p.StartInfo.UserName = uname;
p.StartInfo.Password = pword;
p.StartInfo.Domain = domain;
p.StartInfo.UseShellExecute = false;