【问题标题】:How to run msi installer in cmd as admin using C#如何使用 C# 在 cmd 中以管理员身份运行 msi 安装程序
【发布时间】:2014-11-02 11:42:24
【问题描述】:

我有一个 msi 安装程序,我需要从 C# 静默安装它

Process process = new Process();
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.WorkingDirectory = @"C:\temp\";
process.StartInfo.Arguments = "msiexec /quiet /i Setup.msi ADDLOCAL=test";
process.StartInfo.Verb = "runas";
process.Start();
process.WaitForExit(60000);

请注意,如果我以管理员身份从 cmd 手动运行 cmd 命令,则它可以正常工作

当我运行它时,我只是在管理员模式下进入 cmd 屏幕,但命令没有执行

【问题讨论】:

  • 这段代码有什么问题?有任何错误信息吗?
  • 当我运行它时,我只是在管理员模式下进入 cmd 屏幕,但命令没有执行
  • 我知道,但我需要静默安装 msi
  • 为什么不直接运行 msiexec 而不是 cmd?以防万一您可以将 WindowStyle 设置为 Hidden。

标签: c# process cmd admin


【解决方案1】:

正如 V2Solutions - MS Team 提到的,解决方案是更改以下内容

process.StartInfo.FileName = "msiexe.exe" 

代码将是

Process process = new Process();
process.StartInfo.FileName = "msiexec";
process.StartInfo.WorkingDirectory = @"C:\temp\";
process.StartInfo.Arguments = " /quiet /i Setup.msi ADDLOCAL=test";
process.StartInfo.Verb = "runas";
process.Start();
process.WaitForExit(60000);

这对我有用:)

【讨论】:

    【解决方案2】:

    这对你也有帮助:

    Process process = new Process();
    process.StartInfo.FileName = "msiexec.exe";
    process.StartInfo.Arguments = string.Format("/qn /i \"{0}\" ALLUSERS=1", @"somepath\msiname.msi");
    process.Start();
    process.WaitForExit();
    

    【讨论】:

    • string.Format 对我来说是缺失的部分
    猜你喜欢
    • 1970-01-01
    • 2012-03-13
    • 2015-09-04
    • 2020-07-14
    • 2015-01-22
    • 1970-01-01
    • 1970-01-01
    • 2019-04-14
    • 2012-03-19
    相关资源
    最近更新 更多