2011-09-20 185 views
0

我在C#中开发了一个包含卸载功能的应用程序。我的主要要求是,当用户卸载应用程序befor卸载开始我想调用webservice执行一些操作。卸载应用程序

我已经为此返回代码,但它仅在用户通过程序菜单中给出的选项卸载应用程序时有效。但在从控制面板卸载的情况下不起作用。

我该怎么做? 谢谢。

+1

你是如何开发你的安装程序? Wix提供了这种功能。 – Klee

+0

我已经使用MSI开发安装程序。并添加以下代码添加在program.cs中string [] arguments = Environment.GetCommandLineArgs(); foreach(参数中的字符串参数){if(argument.Split('=')[0] .ToLower()==“/ u “){string guid = argument.Split('=')[1]; string path = Environment.GetFolderPath(Environment.SpecialFolder.System); ProcessStartInfo si = new ProcessStartInfo(path +“/msiexec.exe”,“/ qb/x”+ guid); Process.Start(si); Process.Start(si); Application.Exit(); } } – Ayush

回答

0

这是MSI吗?如果是这样,你只需要一个自定义的卸载操作。

当用户点击程序菜单中的链接时,是否触发了一个特殊的命令行?如果是这样,您应该将其设为“默认”行为,以便在从控制面板执行时,它将以完全相同的方式工作。

+0

是我使用了ProcessStartInfo si = new ProcessStartInfo(path +“/msiexec.exe”,“/ qb/x”+ guid);的Process.Start(SI);这个命令行接下来我要做什么? – Ayush

+0

是的,它是MSI文件。 – Ayush

+0

我如何使这个命令作为默认值。 – Ayush

0

如果它是一个MSI,你可以尝试使用上卸载自定义操作,就可以按照它是如何在这里 http://msdn.microsoft.com/en-us/library/d9k65z2d.aspx

做到,那么在此改变

public override void Uninstall(IDictionary savedState) 
    { 
     base.Uninstall(savedState); 
     //you code goes here that does any uninstall stuff 
    } 

这当您运行卸载将运行从控制面板

+0

我没有这个,但我得到错误1001和我的应用程序不卸载。我想要的是,为了卸载过程我想从我的应用程序运行一些功能,所以我该如何做到这一点。 – Ayush