2010-11-28 108 views
3

我覆蓋了OnBeforeUninstall來阻止我的應用程序的安裝項目在某些情況下將其卸載,但它好像只是沒有被調用,並且沒有效果。防止在安裝項目中使用OnBeforeUninstall進行卸載

protected override void OnBeforeUninstall(IDictionary savedState) 
{ 
    if (ApplicationIsBusy()) 
     throw new ApplicationException("Prevent uninstall while application busy."); 
} 

我能夠通過重寫Uninstall方法來取消卸載,但那時的安裝項目已經關閉我的申請。當我的應用程序忙時,如何「失敗」卸載嘗試安裝項目試圖在運行時關閉它,並中斷我的工作進程?

+1

嘗試在其中寫入跟蹤消息:http://msdn.microsoft.com/en-us/library/system.diagnostics.trace.writeline.aspx只是爲了檢查方法是否被調用。您可以使用debugView檢查跟蹤消息http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx – 2010-11-28 15:23:06

回答

2

在調用您的自定義代碼之前,請調用base.OnBeforeUninstall(savedState),以便已註冊的委託人接收該事件,從而允許您的自定義代碼在卸載前執行。

protected override void OnBeforeUninstall(IDictionary savedState) 
{ 
    // Add this 
    base.OnBeforeUninstall(savedState); 

    if (ApplicationIsBusy()) 
     throw new ApplicationException("Prevent uninstall while application busy."); 
} 
3

確保在安裝項目中選擇了卸載的自定義操作,那可能是您的情況。

相關問題