You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Msiexec.exe /norestart参数失效致AutoCAD自动关闭问题排查

解决Msiexec /norestart参数失效导致AutoCAD自动关闭的问题

问题背景

在AutoCAD插件DLL中调用以下代码,原本可实现静默无重启模式执行安装包:

public int InstallUpdate(string installerLocation)
{
    Process p = new Process();
    p.StartInfo.UseShellExecute = true;
    p.StartInfo.CreateNoWindow = true;
    p.StartInfo.FileName = "msiexec";
    p.StartInfo.Verb = "runas";
    p.StartInfo.Arguments = "/i " + installerLocation + " /qn /norestart";
    p.Start();
    p.WaitForExit();
    return p.ExitCode;
}

近期出现异常:msiexec.exe的/norestart参数失效,安装完成后AutoCAD直接关闭,未按预期提示用户手动重启,且安装日志中出现此前没有的RESTART MANAGER相关信息。

解决方法

  • 强制禁用重启逻辑:在msiexec命令行参数中添加REBOOT=ReallySuppress属性,该属性会彻底覆盖Windows Installer的重启触发机制,无论安装包内部是否请求重启,都强制阻止系统或应用重启。修改后的参数示例:

    /i "C:\path\to\your\installer.msi" /qn /norestart REBOOT=ReallySuppress
    

    对应代码中参数部分调整为:

    p.StartInfo.Arguments = $"/i \"{installerLocation}\" /qn /norestart REBOOT=ReallySuppress";
    

    (注意添加引号包裹安装路径,避免路径含空格时出错)

  • 检查并修正安装包配置:部分MSI安装包可能在内部属性中设置了强制重启规则。可使用Orca工具打开MSI包,查看属性表中的REBOOT项,若其值为Force或AutoAlways,将其修改为ReallySuppress;若无法修改安装包,通过命令行参数的REBOOT=ReallySuppress也可强制覆盖内部配置。

  • 调整进程启动配置:尝试指定msiexec.exe的完整系统路径,并修改UseShellExecute设置,避免调用到非系统版本的msiexec:

    p.StartInfo.UseShellExecute = false;
    p.StartInfo.FileName = @"C:\Windows\System32\msiexec.exe";
    p.StartInfo.Arguments = $"/i \"{installerLocation}\" /qn /norestart REBOOT=ReallySuppress";
    // 若需提权,可通过其他方式确保进程以管理员权限运行
    
  • 排除AutoCAD重启管理器监控:通过Windows重启管理器API,将AutoCAD进程从重启资源列表中排除,避免其被安装过程中的重启管理器强制终止。核心步骤为:

    1. 调用RmStartSession创建重启管理器会话
    2. 调用RmRegisterResources注册AutoCAD进程ID,标记为无需重启的资源
    3. 执行安装后调用RmEndSession结束会话

内容的提问来源于stack exchange,提问作者Tamara Vučić

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 20:05:03