C# 在使用VS 2005安装项目安装新组件之前卸载以前的组件
我有一个自定义操作,应该在.msi安装程序的安装部分执行。我有一个以前的版本是使用InstallShield安装的(这太过分了),我想使用更简单的VS Setup Proj,因为我不需要.isproj提供的所有控制。然而,直接安装我的新.msi似乎与以前的版本并排安装。以下是我目前发现的情况:C# 在使用VS 2005安装项目安装新组件之前卸载以前的组件,c#,visual-studio-2005,setup-project,uninstallation,custom-action,C#,Visual Studio 2005,Setup Project,Uninstallation,Custom Action,我有一个自定义操作,应该在.msi安装程序的安装部分执行。我有一个以前的版本是使用InstallShield安装的(这太过分了),我想使用更简单的VS Setup Proj,因为我不需要.isproj提供的所有控制。然而,直接安装我的新.msi似乎与以前的版本并排安装。以下是我目前发现的情况: 我有我的产品ID 我已经编写了一些代码,通过创建使用MsiExec.exe的进程来卸载以前的版本(代码如下) 已尝试在安装过程中实现要卸载的自定义操作,但一次似乎只能运行一个MsiExec.exe实例 你
//Exe used to uninstall
string fileName = "MsiExec.exe";
//Product ID of versions installed using InstallShield
string productID = "{DC625BCF-5E7B-4FEF-96DD-3CDBA7FC02C1}";
//Use /x for uninstall and use /qn to supress interface
ProcessStartInfo startInfo = new ProcessStartInfo(fileName, string.Format("/x{0}", productID));
startInfo.WindowStyle = ProcessWindowStyle.Normal;
startInfo.UseShellExecute = false;
//Start process
Process uninstallProcess = Process.Start(startInfo);
//Wait until uninstall is complete
uninstallProcess.WaitForExit();
我希望最终通过ClickOnce部署我的.msi,所以我希望有一个适合部署选项的选项。目前,所有内容都是用.NET2.0和VS2005编写的,但如果有新的选项可以使用,我确实可以使用.NET4.0和VS2010
非常感谢您的帮助。通过使我的安装程序的产品代码与旧版本的代码相同,我能够在上一次安装的基础上进行安装。我没有意识到我会尝试这样做,因为当您创建安装程序包的新版本时,VS总是提示您更改产品代码