如何以编程方式卸载Windows中的应用程序?
我们正在发布新版本的应用程序,我们希望它能够从客户端计算机上卸载以前安装的版本。如何以编程方式卸载Windows中的应用程序?
我们将如何做到这一点?
编辑:我正在安装此应用程序(也是以前的版本)与Visual Studio中的部署项目,所以我假设它是一个Windows安装程序。
非常感谢!
Deployement项目有一个内置的功能删除您的应用程序的早期版本。
检查Deployement项目属性中的“RemovePreviousVersions”属性。
http://msdn.microsoft.com/library/y63fxdw6.aspx
编辑:
从MSDN:
安装程序将检查的UpgradeCode和 产品代码属性,以确定是否 早期版本应该 删除。升级代码必须是 两个版本相同;产品代码必须有所不同。
微软安装程序(* .msi)格式支持你想做的事,不幸的是Visual Studio只提供有限的定制,并且被设计用于基本项目。
在这个话题上有很多资源,许多其他人也提出类似的问题。我最好的建议将花一些时间研究MSDN文档。
...
更新
确定。花30分钟阅读几篇文章后,我认为可以使用您使用新安装程序打包的自定义操作。
请按照有关creating a Custom Action的MSDN文章。它包括创建一个新的类库,添加一个System.Configuration.Install.Installer
类,将其作为输出添加到安装项目,然后然后将其选作自定义操作。
要查看您的自定义操作选项卡,请右键单击安装项目,然后选择视图>自定义操作。
从这里开始:您需要编写代码来删除安装目录和AppData配置文件。这篇关于如何设置Custom Action Data的文章可能会有所帮助。
祝你好运。
HTH,
丹尼斯
感谢您的帮助丹尼斯。我确实为安装和卸载设置了自定义操作。问题是以前的版本没有设置相同的动作。删除安装目录不会卸载应用程序(就像从控制面板那样)。 – Andrei 2010-10-13 10:53:52
@Andrei:从我的理解中,你应该能够使用自定义操作实现你想要的。检查安装目录是否存在,AppData配置文件是否存在,如果存在,请删除它们。如果将任何密钥写入注册表,找到并删除它们。这只是这个版本的临时补丁,因为下次你将有适当的卸载程序来运行。也许你还应该研究你的应用程序结构并重新考虑你的部署选项。顺便说一句:你的安装基地有多大? – Dennis 2010-10-13 11:23:40
如果您使用批处理或为您发布其他自动部署工具,您可以轻松地使用下面的命令行卸载MSI产品:
msiexec [/uninstall | /x] [Product.msi | ProductCode]
嘿詹姆斯。 +1为我想要做的,但我也希望我的应用程序能够“抓住”我的ProductCode,而无需每次进行软件更新时都必须手动进行硬编码。任何想法如何做到这一点? – jp2code 2011-04-07 16:43:34
什么安装技术你正在用吗? Windows安装程序? NSIS?还有别的吗? – alastairs 2010-10-13 09:25:17
你的应用程序是否已经有卸载程序?为了执行干净安装,您需要回滚哪些类型的数据? – Dennis 2010-10-13 09:29:35
@alastairs:请参阅编辑@ Dennis:我没有卸载程序。基本上我应该删除整个程序文件夹以及我在用户的AppData配置文件中使用的其他文件夹。 – Andrei 2010-10-13 09:31:26