8

ClickOnceテクノロジを使用して展開されるWindowsアプリケーションが1つあります。画像に表示されているそのアプリケーションのアイコンを変更する方法はありますか?

アイコンのマーカーが付いた、動作中のインストーラーのスクリーンショット。

4

2 に答える 2

3

次のコードは、私が問題を解決するために使用したものです。「プログラムの追加と削除」でClickOnceアプリケーションのスタックオーバーフロー質問カスタムアイコンを使用しました。

    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, "hl772-2.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() == "admin")
                    {
                        myKey.SetValue("DisplayIcon", iconSourcePath);
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message.ToString());
            }
        }
    }
于 2012-11-06T09:03:05.303 に答える
1

セットアップ:Visual Studio Enterprise 2015、WPF、C#

  1. ソリューションエクスプローラーに移動します
  2. ProjectNameを右クリックし、[プロパティ]をクリックします。
  3. 以下に示すように、[アプリケーション]をクリックします。アイコン名を覚えておいてください。

ここに画像の説明を入力してください

  1. 左側の列の[公開]をクリックします。
  2. 右側の[オプション...]ボタンをクリックします。
  3. [公開オプション]ウィンドウが次のようにポップアップ表示されます。「製品名:」フィールドの内容を覚えておいてください。以下の例では、「MyProductName」です。

ここに画像の説明を入力してください

  1. 次のコードをコピーしてメインクラスに貼り付けます。


    private void SetAddRemoveProgramsIcon()
    {
        if (ApplicationDeployment.IsNetworkDeployed && ApplicationDeployment.CurrentDeployment.IsFirstRun)
        {
            try
            {
                var iconSourcePath = Path.Combine(System.Windows.Forms.Application.StartupPath, "MyIcon.ico");

                if (!File.Exists(iconSourcePath)) return;

                var myUninstallKey = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Uninstall");
                if (myUninstallKey == null) return;

                var mySubKeyNames = myUninstallKey.GetSubKeyNames();
                foreach (var subkeyName in mySubKeyNames)
                {
                    var myKey = myUninstallKey.OpenSubKey(subkeyName, true);
                    var myValue = myKey.GetValue("DisplayName");
                    if (myValue != null && myValue.ToString() == "MyProductName") // same as in 'Product name:' field
                    {
                            myKey.SetValue("DisplayIcon", iconSourcePath);
                        break;
                    }
                }
            }
            catch (Exception uhoh)
            {
                //log exception
            }
        }
    }

  1. コンストラクターでSetAddRemoveProgramsIconを呼び出します。


    public MainViewModel()
    {
        SetAddRemoveProgramsIcon();
    }

于 2019-09-12T01:34:45.690 に答える