【问题标题】:How to change the icon in 'Add or Remove Programs'如何更改“添加或删除程序”中的图标
【发布时间】:2013-04-25 01:20:21
【问题描述】:

我正在尝试将添加或删除程序中的图标设置为与我的应用程序图标相同。我的图标存储在我的解决方案的应用程序文件夹中。我在SourceForge 上阅读过,您必须编辑 ARPPRODUCTICON 属性。在 Windows 窗体中如何/在哪里执行此操作?

【问题讨论】:

标签: c# winforms icons


【解决方案1】:

我找到了一个非常简单的解决方案。在部署项目的属性下,单击“AddRemoveProgram”并浏览您的文件。我建议将您的应用程序图标放到您的应用程序文件夹中。

【讨论】:

  • “部署项目的属性”是什么意思?我到处寻找这些房产,但找不到。希望您没有审查顶部位...
  • @DanW ...他的意思是安装/启动项目属性。
  • 如何在 Visual Studio 2017 中找到它?编辑,找到它,选择部署项目并按F4
  • 几个月后,仍然找不到它。到处看了看。我具体点击什么?我在 VS2010 的 C# Winforms 项目中。
  • @DanW 我知道我很晚了,但万一有人想知道。你应该有你的“代码”项目,在那里你纠正你的代码,以及另一个类型为“设置”的项目,如果你左键单击你的“设置”项目,它将你的“代码”项目包装在一个可安装的包中然后按F4,出现属性窗口,你可以把你的图标放在那里。我不确定这是否适用于 VS-2010,如果可能,请考虑升级。
【解决方案2】:

您可以在

下手动更改这些详细信息

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

一些有效的可接受的键值:

  • InstallLocation(字符串)- 安装目录($INSTDIR)
  • DisplayIcon(字符串)- 将在您的应用程序名称旁边显示的图标的路径、文件名和索引
  • 发布者(字符串)-(公司)发布者的名称
  • ModifyPath (string) - 应用修改程序的路径和文件名
  • InstallSource(字符串)- 应用程序的安装位置
  • ProductID(字符串)- 应用程序的产品 ID
  • 自述文件(字符串)- 自述文件信息的路径(文件或 URL)
  • RegOwner(字符串)- 应用程序的注册所有者
  • RegCompany (string) - 应用程序的注册公司
  • HelpLink(字符串)- 到支持网站的链接
  • HelpTelephone(字符串)- 支持电话号码
  • URLUpdateInfo(字符串)- 链接到应用程序更新的网站
  • URLInfoAbout(字符串)- 链接到应用程序主页
  • DisplayVersion(字符串)- 显示的应用程序版本
  • VersionMajor (DWORD) - 应用程序的主要版本号
  • VersionMinor (DWORD) - 应用程序的次要版本号
  • NoModify (DWORD) - 如果卸载程序没有选项来修改已安装的应用程序,则为 1
  • NoRepair (DWORD) - 如果卸载程序没有修复安装的选项,则为 1
  • SystemComponent (DWORD) - 设置 1 以防止应用程序显示在控制面板中添加/删除程序的程序列表中。
  • EstimatedSize (DWORD) - 已安装文件的大小(以 KB 为单位)
  • 评论(字符串)- 描述安装程序包的评论

如果 NoModify 和 NoRepair 都设置为 1,则按钮显示“删除”而不是“修改/删除”。

例如:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinRAR archiver]
"DisplayName"="WinRAR 4.20 (64-bit)"
"DisplayVersion"="4.20.0"
"VersionMajor"=dword:00000004
"VersionMinor"=dword:00000014
"UninstallString"="C:\\Program Files\\WinRAR\\uninstall.exe"
"DisplayIcon"="C:\\Program Files\\WinRAR\\WinRAR.exe"
"InstallLocation"="C:\\Program Files\\WinRAR\\"
"NoModify"=dword:00000001
"NoRepair"=dword:00000001
"Language"=dword:00000000
"Publisher"="win.rar GmbH"

您可以更改(或在不存在时创建)DisplayIcon 键的值。这将更改控制面板中添加或删除程序中的卸载程序图标。

【讨论】:

    【解决方案3】:

    Windows 安装程序支持添加图标ARPPRODUCTICON 的属性。要设置此属性,我们需要使用 Icon 元素在您的安装程序中添加图标。

    <Icon Id="icon.ico" SourceFile="MySourceFiles\icon.ico"/>
    <Property Id="ARPPRODUCTICON" Value="icon.ico" />
    

    这将在控制面板中添加图标。

    【讨论】:

      【解决方案4】:

      最简单的方法——第一次启动时运行这段代码(vb .net):

       Dim myUninstallKey As RegistryKey = Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Uninstall")
       dim iconSourcePath As String = "c:\myprogram\myprogram.exe,0"
       Dim mySubKeyNames As String() = myUninstallKey.GetSubKeyNames()
       For i As Integer = 0 To mySubKeyNames.Length - 1
           Dim myKey As RegistryKey = myUninstallKey.OpenSubKey(mySubKeyNames(i), True)
           Dim myValue As Object = myKey.GetValue("DisplayName")
           If myValue IsNot Nothing AndAlso myValue.ToString() = "YourProgaram" Then
               myKey.SetValue("DisplayIcon", iconSourcePath)
               Exit For
           End If
       Next
      

      或c#

      RegistryKey myUninstallKey = Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Uninstall");
      string iconSourcePath = "c:\myprogram\myprogram.exe,0";
      string[] mySubKeyNames = myUninstallKey.GetSubKeyNames();
      for (int i = 0; i <= mySubKeyNames.Length - 1; i++) {
          RegistryKey myKey = myUninstallKey.OpenSubKey(mySubKeyNames(i), true);
          object myValue = myKey.GetValue("DisplayName");
          if (myValue != null && myValue.ToString() == "YourProgaram") {
              myKey.SetValue("DisplayIcon", iconSourcePath);
              break; // TODO: might not be correct. Was : Exit For
          }
      }
      

      【讨论】:

        【解决方案5】:

        是的,您可以通过以下代码做到这一点:

         string Install_Reg_Loc = @"Software\Microsoft\Windows\CurrentVersion\Uninstall";
         string displayIcon = @"C:\MorganTech\setup-icon.ico";
         RegistryKey hKey = (Registry.LocalMachine).OpenSubKey(Install_Reg_Loc, true);
         RegistryKey appKey = hKey.OpenSubKey(productName);
         appKey.SetValue("DisplayIcon", (object)displayicon, RegistryValueKind.String)
        

        【讨论】:

          【解决方案6】:

          在 Visual Studio 2017 社区版中:

          选择安装程序项目并按F4(这次鼠标点击没有帮助,但我发誓我以前通过其他方式得到它。)

          【讨论】:

          • 和 VS 2019 社区。顶级属性是 AddRemoveProgramsIcon
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-11
          • 1970-01-01
          相关资源
          最近更新 更多