C# 使用ClickOnce安装,但希望卸载,以便使用其他安装程序

C# 使用ClickOnce安装,但希望卸载,以便使用其他安装程序,c#,batch-file,clickonce,nsis,C#,Batch File,Clickonce,Nsis,在过去的几年里,我一直在使用ClickOnce安装和更新mysoftware。我决定把安装程序换成NSIS。 对于软件的单个用户来说,卸载软件然后使用NSIS安装程序重新安装是不可行的 我曾考虑在NSIS脚本中添加一些代码,以便在安装软件之前删除应用程序的注册表项,但Microsoft强烈建议使用Windows Installer服务进行卸载 我的问题是1.不卸载以前的版本而安装有什么危险?以及2.在安装当前版本之前,是否有办法使用NSIS或通过其他方式以编程方式卸载先前安装的版本?不删除每用户

在过去的几年里,我一直在使用ClickOnce安装和更新mysoftware。我决定把安装程序换成NSIS。 对于软件的单个用户来说,卸载软件然后使用NSIS安装程序重新安装是不可行的

我曾考虑在NSIS脚本中添加一些代码,以便在安装软件之前删除应用程序的注册表项,但Microsoft强烈建议使用Windows Installer服务进行卸载


我的问题是1.不卸载以前的版本而安装有什么危险?以及2.在安装当前版本之前,是否有办法使用NSIS或通过其他方式以编程方式卸载先前安装的版本?

不删除每用户单击一次安装的典型后果是,用户可能会被两个版本的程序搞混。例如,这可能是两个不同的office加载项处于活动状态


我在无声卸载问题上做了一些搜索,我不确定ClickOnce是否支持这一点。我确实发现了一些开源项目,它们报告说能够做到这一点。将它们实现为ActiveSetup样式模式以使其在每个用户上下文中运行似乎可以处理旧版本的删除。

删除了不相关的Windows Installer标记,因为NSI和ClickOnce不是MSI。感谢您的回答。我发现ClickOnce应用程序的注册表中有一个名为Uninstall string的字符串。它包含一个可以卸载应用程序的命令行。我刚刚让我的应用程序运行该字符串,并使用窗口句柄在弹出窗口中点击OK。