卸载安装和部署过程中的应用程序

本文关键字:应用程序 过程中 部署 安装 卸载 | 更新日期: 2023-09-27 18:16:13

我正在创建一个应用程序,我要求在安装过程中卸载一些其他已安装的程序,所以我首先做的是创建一个控制台应用程序卸载程序,直到有工作,我添加这个控制台应用程序作为自定义操作在设置和构建解决方案,但在安装时间卸载程序不工作。

对不起,我的英语不好:)。

我使用下面的代码,用于卸载

       string UninstallCommandString = "/x {0} /qn";
        Process process = new Process();
        ProcessStartInfo startInfo = new ProcessStartInfo();
        process.StartInfo = startInfo;
        startInfo.UseShellExecute = false;
        startInfo.RedirectStandardError = true;
        startInfo.FileName = "msiexec.exe";
        startInfo.Arguments = string.Format(UninstallCommandString, "{CCB85747-267D-45C6-AC32-7979ADFCD2D8}");
        process.Start();
        process.WaitForExit();
        string UninstallCommandString2 = "/x {0} /qn";
        Process process2 = new Process();
        ProcessStartInfo startInfo2 = new ProcessStartInfo();
        process2.StartInfo = startInfo2;
        startInfo2.UseShellExecute = false;
        startInfo2.RedirectStandardError = true;
        startInfo2.FileName = "msiexec.exe";
        startInfo2.Arguments = string.Format(UninstallCommandString2, "{7A8A8C03-6BEA-45B4-BAD9-EBC5790A037A}");
        process2.Start();
        process2.WaitForExit();

        string UninstallCommandString3 = "/x {0} /qn";
        Process process3 = new Process();
        ProcessStartInfo startInfo3 = new ProcessStartInfo();
        process3.StartInfo = startInfo3;
        startInfo3.UseShellExecute = false;
        startInfo3.RedirectStandardError = true;
        startInfo3.FileName = "msiexec.exe";
        startInfo3.Arguments = string.Format(UninstallCommandString3, "{6AFDD6D0-3F33-45F0-B058-677F2080AE22}");
        process3.Start();
        process3.WaitForExit();
        string UninstallCommandString4 = "/x {0} /qn";
        Process process4 = new Process();
        ProcessStartInfo startInfo4 = new ProcessStartInfo();
        process4.StartInfo = startInfo4;
        startInfo4.UseShellExecute = false;
        startInfo4.RedirectStandardError = true;
        startInfo4.FileName = "msiexec.exe";
        startInfo4.Arguments = string.Format(UninstallCommandString4, "{ACC5E4C6-B4D2-4227-B577-95D511C05A6E}");
        process4.Start();
        process4.WaitForExit();

卸载安装和部署过程中的应用程序

您不能从自定义操作中进行安装或卸载,这尤其适用于VS安装项目。一次只允许一个MSI操作。

通常你会做一个主要的升级,这是RemovePreviousVersions在VS安装项目,但VS不支持任何其他升级你的安装当前的升级代码。另一个工具(如Wix)可以让您列出一堆升级代码,然后您的安装会自动卸载相关产品。

所以这取决于你的工作流程需求。你可以把你的安装压缩成一个自动解压的exe来运行你的卸载,然后运行你的setup.exe(如果你有先决条件来安装)或者只是安装你的MSI。或者您可以使用MSI编辑器工具(如Orca)将这些MSI产品的UpgradeCodes添加到MSI的升级表中,并且您已经构建了RemovePreviousVersions升级,然后它将卸载它们。没有太多的答案,但你试图做一些Windows安装程序不支持(自定义操作的MSI操作)和VS不支持(卸载其他产品的升级)。