2011-09-20 184 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