【问题标题】:Visual Studio - Application Icon - PowerPoint AddinVisual Studio - 应用程序图标 - PowerPoint 插件
【发布时间】:2013-08-07 04:41:23
【问题描述】:

我使用 Visual Studion 2012 编写了一个 PowerPoint 插件。

我以前从未这样做过,并从 File / New / powerpoint 2010 addin 启动项目。

这创建了一个“类库”项目。

所以我写了我的插件,它运行良好。快乐的日子!

但是,当应用程序安装在计算机上时,控制面板/已安装软件中的图标是默认图标。

通常,我希望能够进入项目属性/应用程序并在那里选择我想使用的图标,但我唯一的选择是选择一个资源文件。

我已将 .ico 文件添加到我的资源中,但似乎无法弄清楚如何使其成为项目的图标。

有人可以帮忙吗?

抱歉,忘了说,这是使用“ClickOnce”分发系统安装的。我查看了“发布”属性选项卡,其中也没有定义应用程序图标的内容。

谢谢

特雷弗

【问题讨论】:

标签: c# .net visual-studio vsto


【解决方案1】:

好的,既然我知道 ClickOnce 参与其中,我想您会发现这段代码很有用。 它必须在应用程序启动时运行。 该代码直接编辑注册表,因此在某些 Windows 版本中可能会有所不同。

/// <summary>
/// change the icon in add/remove programs     
/// </summary>
private static void SetProgramInstallIcon()
{
  //run only when deployed 
  if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed
     && ApplicationDeployment.CurrentDeployment.IsFirstRun)
  {
    try
    {
      string iconSourcePath = Path.Combine(System.Windows.Forms.Application.StartupPath, "YourFancyIcon.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() == "YourApplicationDisplayName")
        {
          myKey.SetValue("DisplayIcon", iconSourcePath);
          break;
        }
      }
    }
    catch (Exception ex) {
      //manage errors as you like (log, UI, ...)
    }
  }
}

【讨论】:

  • 这看起来确实是一个可能的解决方案,但由于您提到的注册表差异,我对实施它持谨慎态度?谢谢!!
【解决方案2】:

从这个帖子的内容看来这是不可能的......

因为它是一个 .dll,操作系统决定分配给它的图标。

特雷夫

Add Icon to Visual Studio 2008-Built Class Lib DLL?

【讨论】:

  • 我认为该线程正在谈论文件图标,而不是控制面板/已安装软件菜单中的图标。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-30
  • 2010-09-09
  • 1970-01-01
  • 2011-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多