如何更改“添加或删除程序”中的图标

19

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


1
我猜那是安装程序的工作。 - Nikhil Agrawal
1
不要将它存储在文件夹中,而是嵌入到你的EXE中,这样你就不需要做任何特殊处理了。 - Hans Passant
1
可能是重复的问题,参考 *自定义 ClickOnce 应用程序在“添加或删除程序”中使用的图标*。 - Peter Mortensen
6个回答

46

我找到了一种非常简单的解决方法。在您的部署项目属性下,点击“添加或删除程序”,然后浏览您的文件。我建议将您的应用程序图标放入您的应用程序文件夹中。

输入图片描述


1
“部署项目属性”是什么意思?我到处寻找这些属性,但找不到。希望你没有审查掉顶部的内容... - Dan W
3
在 Visual Studio 2017 中如何找到它?编辑,找到它后,选择部署项目并按 F4 键。 - elemer82
@Ameena:还是找不到。这个菜单或窗格应该在哪里找到?我正在使用VS 2010。 - Dan W
1
数月过后,仍然难以找到。已经到处找过了。我应该点击什么?我在VS2010中的C# Winforms项目中。 - Dan W
1
@DanW 我知道我很晚,但如果有人想知道的话。你应该有一个“代码”项目,在其中编写你的代码,另外一个类型为“安装程序”的项目,它将你的“代码”项目包装成一个可安装的软件包。如果你左键单击“安装程序”项目并按F4,属性窗口就会出现,你可以在那里放置你的图标。我不确定这是否适用于VS-2010,请尽可能升级。 - Poly
显示剩余3条评论

9

您可以在以下位置手动更改这些详细信息:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

一些有效的键值:

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

如果 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" />

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


3

简单方法- 在第一次启动时运行以下代码 (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
    }
}

2

是的,您可以通过以下代码实现:

 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)

2
在Visual Studio 2017社区版中:
选择安装程序项目,按F4键(这次鼠标点击没有帮助,但我发誓我之前找到了另一种方法。)

和VS 2019社区版。顶部属性是AddRemoveProgramsIcon。 - Etherman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接