2012-11-06 7 views
6

Mam jedną aplikację systemu Windows, która jest wdrażana przy użyciu technologii ClickOnce. Czy istnieje sposób zmiany ikony tej aplikacji wyświetlanej na obrazku?Czy istnieje sposób zmiany ikony aplikacji ClickOnce w "Dodaj lub usuń programy"?

Screenshot of the installer in action with a marker for the icon.

+2

http://stackoverflow.com/questions/10927109/icon-for-click-once-app-in-add-or-remove-programs – Karthik

+0

dziękuję .. Jego pracował dla mnie. – ManjuVijayan

+0

Great..Post, co zadziałało, zamiast opublikować link .. :) – Karthik

Odpowiedz

2

Poniższy kod jest to, co służy do rozwiązywania problemu. Użyłem pytania przepełnienia stosu Custom icon for ClickOnce application in 'Add or Remove Programs'.

private static void SetAddRemoveProgramsIcon() 
    { 
     //only run if deployed 
     if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed 
      && ApplicationDeployment.CurrentDeployment.IsFirstRun) 
     { 
      try 
      { 
       Assembly code = Assembly.GetExecutingAssembly(); 
       AssemblyDescriptionAttribute asdescription = 
        (AssemblyDescriptionAttribute)Attribute.GetCustomAttribute(code, typeof(AssemblyDescriptionAttribute)); 
       // string assemblyDescription = asdescription.Description; 

       //the icon is included in this program 
       string iconSourcePath = Path.Combine(System.Windows.Forms.Application.StartupPath, "hl772-2.ico"); 

       if (!File.Exists(iconSourcePath)) 
        return; 

       RegistryKey myUninstallKey = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Uninstall"); 
       string[] mySubKeyNames = myUninstallKey.GetSubKeyNames(); 
       for (int i = 0; i < mySubKeyNames.Length; i++) 
       { 
        RegistryKey myKey = myUninstallKey.OpenSubKey(mySubKeyNames[i], true); 
        object myValue = myKey.GetValue("DisplayName"); 
        if (myValue != null && myValue.ToString() == "admin") 
        { 
         myKey.SetValue("DisplayIcon", iconSourcePath); 
         break; 
        } 
       } 
      } 
      catch (Exception ex) 
      { 
       System.Windows.Forms.MessageBox.Show(ex.Message.ToString()); 
      } 
     } 
    } 
+0

Próbowałem tego rozwiązania, ale nie zmienia ono obrazu pokazanego w oknie instalacji (jak na zrzucie ekranu posta otwierającego). Czy ktoś ma na to rozwiązanie? –

+0

Skąd wywołujesz ten kod? – HackSlash

Powiązane problemy