2015-11-06 53 views
1

clickonce從哪裏獲得DisplayName中使用的值HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\XXXXXXXX?我嘗試了在VS(項目 - >屬性 - >應用程序 - >程序集信息)上更改應用程序標題和程序集名稱,但是這兩個變化都沒有更改DisplayName值中使用的名稱。從clickonce從regedit獲取DisplayName中使用的值?

我需要這個,因爲我不想在這一段代碼,改變我的附加應用程序的反安裝圖標硬編碼我的應用程序名稱/刪除程序

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

enter image description here

而且,也沒有必要在Windows註冊表渣土大約爲ClickOnce應用程序。這樣做可能會阻止自動更新。

+0

謝謝。我在公共選項卡上看了一下,錯過了這個。是否有可能以編程方式獲取此值? – Jack

+0

更改ico可能會阻止自動更新?我必須不這樣做嗎? – Jack

+0

這些信息將位於安裝應用程序的清單文件中。我不建議改變它。如果您想要一個不同的名稱,請在發佈之前對其進行更改,然後在發佈之後,客戶端將更新並顯示_new name_。 – MickyD

1
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; 
    } 
}