Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Windows中以编程方式卸载应用程序?_C#_Windows_Uninstallation - Fatal编程技术网

C# 如何在Windows中以编程方式卸载应用程序?

C# 如何在Windows中以编程方式卸载应用程序?,c#,windows,uninstallation,C#,Windows,Uninstallation,我们正在发布我们的应用程序的新版本,我们希望它能够从客户端的计算机上卸载以前安装的版本 我们怎样才能做到这一点 编辑:我正在Visual Studio中通过部署项目安装此应用程序(以及以前的版本),因此我假设它是Windows安装程序 非常感谢 如果您编写了此程序,则这是一个简单的反向批处理。 或者您可以使用一些安装程序/卸载程序生成器,如Visual Studio中的Deployment项目具有内置功能,可以删除应用程序的早期版本 检查Deployment项目属性中的“RemovePrevio

我们正在发布我们的应用程序的新版本,我们希望它能够从客户端的计算机上卸载以前安装的版本

我们怎样才能做到这一点

编辑:我正在Visual Studio中通过部署项目安装此应用程序(以及以前的版本),因此我假设它是Windows安装程序


非常感谢

如果您编写了此程序,则这是一个简单的反向批处理。

或者您可以使用一些安装程序/卸载程序生成器,如Visual Studio中的Deployment项目具有内置功能,可以删除应用程序的早期版本

检查Deployment项目属性中的“RemovePreviousVersions”属性

编辑

从MSDN:

安装程序检查升级代码和 要确定的ProductCode属性 是否应使用早期版本 远离的。升级代码必须是 两个版本相同;这个 ProductCode必须不同

Microsoft安装程序(*.msi)格式支持您想要执行的操作,不幸的是,Visual Studio仅提供有限的自定义功能,设计用于基本项目

关于这个话题有很多资源,还有很多其他人提出类似的问题。我最好的建议是花些时间研究MSDN文档

更新

嗯。在花了30分钟阅读了几篇文章之后,我认为可以使用新安装程序附带的自定义操作

请继续阅读本MSDN文章。它包括创建一个新类库,添加一个
System.Configuration.Install.Installer
类,将其作为输出添加到安装项目,然后将其作为自定义操作选择

要查看自定义操作选项卡,请右键单击安装项目,然后选择查看>自定义操作

从这里开始:您需要编写代码来删除安装目录和AppData配置文件。这篇关于如何设置的文章可能会有所帮助

祝你好运

嗯,


Dennis

如果您在版本中使用批处理或其他自动部署工具,您可以使用以下命令行轻松卸载MSI产品:

msiexec [/uninstall | /x] [Product.msi | ProductCode] msiexec[/uninstall |/x][Product.msi | ProductCode]
您使用的是什么安装技术?Windows安装程序?NSIS?还有什么?您的应用程序已经有卸载程序了吗?要执行干净的安装,您需要回滚什么类型的数据?@alastairs:see edit@Dennis:I没有卸载程序。基本上,我应该删除整个ProgramFiles文件夹以及我在用户的AppData配置文件中使用的一些其他文件夹。如果这样做有效,我会自杀并给你一枚奖牌。谢谢你的回答,我会让你知道它是否有效!如何更新升级代码?我不确定此选项是否能达到您的要求。从提供的信息来看,这似乎是第一次使用安装程序安装应用程序(否则,它可能会有一个可以运行的卸载程序应用程序)。在应用程序删除以前的版本之前,有没有办法触发一些方法?@Andrei:我混淆了UpgradeCode和ProductCode。请参见编辑@丹尼斯:从安德烈的问题来看,以前的版本似乎也使用了VS部署项目。这些GUID属性是Windows Installer中整个升级过程的关键。应该严格遵守MSDN关于升级代码和产品代码的引用,否则您的升级将意外中断。谢谢您的帮助Dennis。我确实为安装和卸载设置了自定义操作。问题是以前的版本没有设置相同的操作。删除安装目录不会卸载应用程序(就像从控制面板卸载一样)。@Andrei:据我所知,您应该能够使用自定义操作实现所需的功能。检查安装目录和AppData配置文件是否存在,如果存在,请删除它们。如果将任何键写入注册表,请查找并删除它们。这只是此版本的临时修补程序,因为下次您将运行适当的卸载程序。也许您还应该研究应用程序结构并重新考虑部署选项。顺便问一下:你的安装基数有多大?嘿,詹姆斯+我希望我的应用程序能够“抓取”我的产品代码,而不必每次进行软件更新时都手动输入硬代码。你知道怎么做吗?