wix - 安装 msi 时如何确保 devenv.exe 未运行

标签 wix windows-installer vsx

我正在为 Visual Studio 2008 编写 VSPackage,并使用 WiX 生成的 Msi 对其进行部署。安装结束时,我根据需要运行“devenv.exe/setup”以使 VS 注意到我的包。但是,如果有任何 Visual Studio 副本正在运行,此命令将不会成功。

目前,我告诉人们他们必须在安装之前关闭 Visual Studio 的所有副本,但我希望它是万无一失的。如果有任何 Visual Studio (devenv.exe) 副本正在运行,我如何检查何时有人运行我的 .msi,并阻止他们安装我的项目?

最佳答案

while(devenvIsRunning()) {} //in main routine of Installer class

static bool devenvIsRunning() //uses this subroutine
        {
            Process[] procList = Process.GetProcesses();
            foreach (Process p in procList)
            {
                if (p.ProcessName == "devenv")
                {
                    MessageBox.Show("An instance of Visual Studio is still running.\nPlease close all open instances of Visual Studio before continuing.");
                    return true;
                }
            }
            return false;
        }

关于wix - 安装 msi 时如何确保 devenv.exe 未运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/710353/

相关文章:

visual-studio-2010 - WIX 3.6 安装程序 - Visual Studio 2010 (HeatDirectory)

c# - Visual Studio 调试器如何决定可以使用 Text/XML/HTML Visualizer 查看哪些值?

c# - 如何将程序集添加到来自 nuget 包的 WiX 工具集设置?

c# - 使用 WiX 和 C# 管理依赖 hell

c# - Visual Studio 项目文件指定多次导入

powershell - 如何创建一个简单的 MSI,运行一个带参数的简单 ps1 脚本?

Wix 工具集构建优化可重复构建

windows - 错误1001。初始化安装时发生异常

c# - 扩展 Visual Studio

wpf - 不允许在 VS2010 扩展中的 WPF 工具窗口中拖放