gpt4 book ai didi

wix - 'Add or Remove Programs' 中 ClickOnce 应用程序的自定义图标

转载 作者:行者123 更新时间:2023-12-01 17:01:54 25 4
gpt4 key购买 nike

使用 Mage 创建的 ClickOnce 应用程序未显示控制面板“添加或删除程序”中为 Mage 命令行参数指定的图标。

我读了一些博客,例如:

如何在不编辑注册表项的情况下实现此目的?可能吗?

最佳答案

如果不编辑注册表,就无法执行此操作,但您可以通过编程方式执行此操作。您必须确保该图标包含在部署中。我们将程序集描述设置为与产品名称相同的字符串,因此我们可以通过搜索程序集描述来查找正确应用程序的卸载字符串。这样,我们就不必在此代码中硬编码产品名称。

        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, "youriconfile.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() == assemblyDescription)
{
myKey.SetValue("DisplayIcon", iconSourcePath);
break;
}
}
}
catch (Exception ex)
{
//log an error
}
}
}

关于wix - 'Add or Remove Programs' 中 ClickOnce 应用程序的自定义图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10927109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com