2009-07-22 9 views
10

क्लिकऑन का उपयोग करके स्थापित एक .NET एप्लिकेशन के लिए, अनइंस्टॉल प्रक्रिया के दौरान कस्टम एक्शन चलाने का कोई तरीका है।अनइंस्टॉल (क्लिकऑन्स) पर कस्टम एक्शन - .NET

विशेष रूप से, मुझे कुछ ऐप संबंधित फ़ाइलों को हटा देना होगा (जिसे मैंने पहले चलाने पर बनाया था) और अनइंस्टॉल प्रक्रिया के दौरान वेब सेवा को कॉल करना होगा।

कोई विचार?

उत्तर

3

क्लिकऑन के साथ ऐसा करने का कोई तरीका नहीं है, लेकिन आप एक मानक Setup.exe बूटस्ट्रैपर बना सकते हैं जो क्लिकऑन एप्लिकेशन इंस्टॉल करता है और जिसमें कस्टम अनइंस्टॉल कार्रवाई होती है।

ध्यान दें कि हालांकि यह प्रोग्राम जोड़ें/निकालें में दो प्रविष्टियां बनाता है, इसलिए आपको एक प्रविष्टि (क्लिकऑन ऐप) को छिपाने की आवश्यकता है।

आपकी अंतिम समस्या तो हो जाएगा वहाँ ClickOnce पर कोई "मूक स्थापना रद्द करें" विकल्प है कि है, तो आप कुछ इस तरह कर सकता है:

On Error Resume Next 

Set objShell = WScript.CreateObject("WScript.Shell") 

objShell.Run "taskkill /f /im [your app process name]*" 

objShell.Run "[your app uninstall key]" 
Do Until Success = True 
    Success = objShell.AppActivate("[your window title]") 
    Wscript.Sleep 200 
Loop 
objShell.SendKeys "OK" 

(मिले here)

1

ClickOnce एक स्थापना रद्द रजिस्ट्री स्थापित करता है HKEY_CURRENT_USER में कुंजी जो आपके क्लिकऑन एप्लिकेशन के लिए सुलभ है।

विशिष्ट स्थान "HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ स्थापना रद्द करें"

आप अपने आवेदन के साथ DisplayName कुंजी के लिए खोज करने के लिए होगा।

तो आप सामान्य स्थापना रद्द करें कार्रवाई लपेट कर सकते हैं,

string registryKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"; 
Microsoft.Win32.RegistryKey uninstallKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(registryKey); 
if (uninstallKey != null) 
{ 
    foreach (String a in uninstallKey.GetSubKeyNames()) 
    { 
     Microsoft.Win32.RegistryKey subkey = uninstallKey.OpenSubKey(a, true); 
     // Found the Uninstall key for this app. 
     if (subkey.GetValue("DisplayName").Equals("AppDisplayName")) 
     { 
      string uninstallString = subkey.GetValue("UninstallString").ToString(); 

      // Wrap uninstall string with my own command 
      // In this case a reg delete command to remove a reg key. 
      string newUninstallString = "cmd /c \"" + uninstallString + 
       " & reg delete HKEY_CURRENT_USER\\SOFTWARE\\CLASSES\\mykeyv" + 
       MYAPP_VERSION + " /f\""; 
      subkey.SetValue("UninstallString", newUninstallString); 
      subkey.Close(); 
     } 
    } 
} 
संबंधित मुद्दे