从哪里 clickonce 从 regedit 获取 DisplayName 中使用的值?
Posted
技术标签:
【中文标题】从哪里 clickonce 从 regedit 获取 DisplayName 中使用的值?【英文标题】:From where clickonce get the value used in DisplayName from regedit? 【发布时间】:2016-02-08 03:15:45 【问题描述】:clickonce 从哪里获取寄存器HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\XXXXXXXX
中DisplayName
中使用的值?我尝试在 VS(项目 -> 属性 -> 应用程序 -> 程序集信息) 上更改应用程序标题和程序集名称,但这并没有改变 DisplayName
值中使用的名称。
我需要这个,因为我想避免在这段代码上硬编码我的应用程序名称,这会在添加/删除程序时更改我的应用程序的 unistall 图标
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() == applictionName) /* this must be the same used by clickonce to set DisplayName value */
myKey.SetValue("DisplayIcon", iconSourcePath);
break;
【问题讨论】:
【参考方案1】:从哪里clickonce从regedit获取DisplayName中使用的值?
要为 ClickOnce 应用程序设置 显示名称,请在发布前在 Visual Studio 的 发布选项 中指定它。这将更新 ClickOnce Manifest - 有关 ClickOnce 应用程序的信息。此信息更为重要,并且基本上会否决您在装配信息中指定的任何细节。
项目>.Properties.Publish.Options
此外,对于 ClickOnce 应用程序,无需在 Windows 注册表 中做任何事情。这样做可能会阻止自动更新。
【讨论】:
谢谢。我看过公共标签并错过了这个。是否可以通过编程方式获取此值? 更改 ico 可能会阻止自动更新?到那时我必须不要做吗? 该信息将在安装应用程序的清单文件中。我不建议改变它。如果您想要一个不同的名称,请在发布前更改它,然后在发布后,客户端将更新并显示一个新名称。 我想以编程方式获取它以避免在该部分中硬编码应用程序名称字符串if (myValue != null && myValue.ToString() == "app name")
我不打算很快更改名称,我只是想避免硬编码那。谁知道应用程序是否在几年内更改名称,如果我不记得更改该字符串,ico 将停止工作
忽略是什么意思?我正在谈论的 ico 更改是 ***.com/questions/10927109/…【参考方案2】:
object myValue = myKey.GetValue("UrlUpdateInfo");
if(myValue != null)
string updateinfo = myValue.ToString();
string updateLocation = ApplicationDeployment.CurrentDeployment.UpdateLocation.ToString();
if (updateinfo==updateLocation)
myKey.SetValue("DisplayIcon", iconSourcePath);
break;
【讨论】:
以上是关于从哪里 clickonce 从 regedit 获取 DisplayName 中使用的值?的主要内容,如果未能解决你的问题,请参考以下文章
从 Windows 10 运行时,ClickOnce 不会取消注册/重新注册 VSTO 解决方案
使用 MSBuild 从 Visual Studio 2013 命令行发布 Clickonce 找不到 SignTool.exe