更新Microsoft Visual Studio Installer Projects后安装提前启动程序导致卡顿如何解决
Visual Studio Installer Projects 扩展更新后安装包提前启动应用问题排查方向
1. 自定义操作时序校验
该扩展版本更新时大概率重置了项目的自定义操作配置,优先检查时序配置:
- 打开安装项目的「自定义操作」面板,确认启动应用的操作归属阶段:正确配置应该放在提交阶段,若被重置到安装阶段末尾,会在
InstallFinalize执行前启动应用,此时安装程序仍持有文件、注册表锁,启动的应用访问对应资源时会触发死锁,导致安装流程冻结。 - 检查启动应用的自定义操作
InstallerClass属性:如果你用的是直接启动EXE的非托管自定义动作,该属性意外设为true时会触发额外的.NET安装类校验逻辑,也会导致执行时序提前。
2. 启动项内置配置检查
- 打开安装项目的「用户界面」面板,查看结束页的「安装完成后启动应用程序」勾选状态:部分版本更新后会将该选项的触发时机从安装全流程结束后,提前到资源提交完成前触发,直接导致两进程资源争抢阻塞。
- 若你使用自定义脚本启动应用,检查是否添加了进程等待逻辑:若启动时未添加异步标记,安装程序会默认等待子进程退出后再执行后续步骤,触发你遇到的冻结表现。
3. MSI包底层逻辑验证
- 用
Orca工具打开生成的MSI安装包,查看InstallExecuteSequence表中LaunchApplication动作的排序值:正常排序应在InstallFinalize之后,若更新后排序值被调整到InstallFinalize之前,就会出现提前启动的问题。 - 查看
CustomAction表中启动应用的动作标记:如果类型38的EXE动作未添加msidbCustomActionTypeAsync异步标记,安装程序会同步等待启动的进程退出后再继续流程。
4. 扩展版本兼容性验证
如果上述配置均无异常,可确认是扩展更新自带的逻辑bug:
- 回退到更新前的Visual Studio Installer Projects版本重新打包,验证问题是否消失。
- 临时规避可给启动应用的自定义动作添加异步执行标记,或是暂时取消安装过程自动启动逻辑,改为引导用户安装完成后手动点击桌面快捷方式启动。
内容的提问来源于stack exchange,提问作者Hive Mind
相关产品推荐
相关产品推荐

