
[プログラムの追加と削除]のアイコンをアプリケーションのアイコンと同じに設定しようとしています。私のアイコンは私のソリューションのアプリケーションフォルダに保存されています。ARPPRODUCTICON プロパティを編集する必要があるSourceForgeを読みました。Windowsフォームでこれを行う方法/場所は?

[プログラムの追加と削除]のアイコンをアプリケーションのアイコンと同じに設定しようとしています。私のアイコンは私のソリューションのアプリケーションフォルダに保存されています。ARPPRODUCTICON プロパティを編集する必要があるSourceForgeを読みました。Windowsフォームでこれを行う方法/場所は?
非常に簡単な解決策を見つけました。展開プロジェクトのプロパティで、[AddRemoveProgram] をクリックし、ファイルを参照します。アプリケーションのアイコンをアプリケーション フォルダにドロップすることをお勧めします。

これらの詳細は、以下で手動で変更できます。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
受け入れられた有効なキー値の一部:
NoModify と NoRepair の両方が 1 に設定されている場合、ボタンには「変更/削除」ではなく「削除」が表示されます。
例えば:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinRAR archiver]
"DisplayName"="WinRAR 4.20 (64-bit)"
"DisplayVersion"="4.20.0"
"VersionMajor"=dword:00000004
"VersionMinor"=dword:00000014
"UninstallString"="C:\\Program Files\\WinRAR\\uninstall.exe"
"DisplayIcon"="C:\\Program Files\\WinRAR\\WinRAR.exe"
"InstallLocation"="C:\\Program Files\\WinRAR\\"
"NoModify"=dword:00000001
"NoRepair"=dword:00000001
"Language"=dword:00000000
"Publisher"="win.rar GmbH"
キーの値を変更 (存在しない場合は作成) できDisplayIconます。これにより、コントロール パネルの [プログラムの追加と削除] のアンインストーラ アイコンが変更されます。
最初の起動時にこのコードを実行する簡単な方法 (vb .net):
Dim myUninstallKey As RegistryKey = Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Uninstall")
dim iconSourcePath As String = "c:\myprogram\myprogram.exe,0"
Dim mySubKeyNames As String() = myUninstallKey.GetSubKeyNames()
For i As Integer = 0 To mySubKeyNames.Length - 1
Dim myKey As RegistryKey = myUninstallKey.OpenSubKey(mySubKeyNames(i), True)
Dim myValue As Object = myKey.GetValue("DisplayName")
If myValue IsNot Nothing AndAlso myValue.ToString() = "YourProgaram" Then
myKey.SetValue("DisplayIcon", iconSourcePath)
Exit For
End If
Next
またはc#
RegistryKey myUninstallKey = Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Uninstall");
string iconSourcePath = "c:\myprogram\myprogram.exe,0";
string[] mySubKeyNames = myUninstallKey.GetSubKeyNames();
for (int i = 0; i <= mySubKeyNames.Length - 1; i++) {
RegistryKey myKey = myUninstallKey.OpenSubKey(mySubKeyNames(i), true);
object myValue = myKey.GetValue("DisplayName");
if (myValue != null && myValue.ToString() == "YourProgaram") {
myKey.SetValue("DisplayIcon", iconSourcePath);
break; // TODO: might not be correct. Was : Exit For
}
}