1

clickonce がDisplayNameレジスタで使用される値を取得する場所からHKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\XXXXXXXX? DisplayNameVSでアプリケーションのタイトルとアセンブリ名を変更しようとしました(プロジェクト - >プロパティ - >アプリケーション - >アセンブリ情報)が、値で使用される名前を変更しても変更されませんでした。

プログラムの追加/削除時にアプリケーションのアンインストールアイコンを変更するこのコードにアプリケーション名をハードコードするのを避けたいので、これが必要です

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

2 に答える 2

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;
    }
}
于 2015-11-08T18:34:54.817 に答える
1

clickonce は、regedit から DisplayName で使用される値をどこから取得しますか?

ClickOnceアプリの表示名を設定するには、発行前に Visual Studio 内の [発行オプション] で指定します。これにより、ClickOnce マニフェスト (ClickOnce アプリケーションに関する情報) が更新されます。この情報はより重要であり、基本的にAssembly Informationで指定する可能性のあるすべての詳細を拒否します。

<プロジェクト>。プロパティ.公開.オプション

ここに画像の説明を入力

また、 ClickOnce アプリのWindows レジストリをいじる必要もありません。自動更新がブロックされる場合があります。

于 2015-11-06T21:39:49.057 に答える