ClickOnceテクノロジを使用して展開されるWindowsアプリケーションが1つあります。画像に表示されているそのアプリケーションのアイコンを変更する方法はありますか?
質問する
6406 次
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#
- ソリューションエクスプローラーに移動します
- ProjectNameを右クリックし、[プロパティ]をクリックします。
- 以下に示すように、[アプリケーション]をクリックします。アイコン名を覚えておいてください。
- 左側の列の[公開]をクリックします。
- 右側の[オプション...]ボタンをクリックします。
- [公開オプション]ウィンドウが次のようにポップアップ表示されます。「製品名:」フィールドの内容を覚えておいてください。以下の例では、「MyProductName」です。
- 次のコードをコピーしてメインクラスに貼り付けます。
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
}
}
}
- コンストラクターでSetAddRemoveProgramsIconを呼び出します。
public MainViewModel()
{
SetAddRemoveProgramsIcon();
}
于 2019-09-12T01:34:45.690 に答える