Icon für eine "veröffentliche" WPF-Anwendung

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Icon für eine "veröffentliche" WPF-Anwendung

    Hallo,

    ich habe mit Visual Studio eine WPF-Anwendung für meinen Betrieb erstellt und diese Funktioniert soweit auch. Jetzt will ich die Anwendung auf den Firmenserver "veröffentlichen" (Erstellen/Projekt veröffentlichen) damit es auch Kollegen nutzen können. Das Funktioniert auch. Mit der Datei "<Name>.application" kann ich die Anwendung öffnen.
    Genau dieser Datei möchte ich noch ein anderes Icon verpassen aber das klappt nicht...
    Kann mir da jemand weiterhelfen?

    MFG Lycoor

    Verschoben. ~Thunderbolt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

    lycoor24 schrieb:

    aber das klappt nicht...
    .NET-Fenster-Anwendungen haben 2 Sorten von Icons.
    1. das Icon, das am Fenster links oben in der Titelzeile angezeigt wird:
      WPF: Icon="C:\Temp\Test.ico",
      WinForm: Icon im Designer auswählen.
    2. das Icon, das im Explorer angezeigt wird, das musst Du über die Projekteigenschaften festlegen:
      Projekt -> Eigenschaften -> Applikation -> Icon.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany

    Ja das habe ich beides schon gemacht. Allerdings ist nun das Icon nur bei der .exe und nicht bei der .application Datei.

    --> Hier mal ein Bild

    Bild von werbeverseuchtem Imagehoster als Dateianhang eingefügt. ~Thunderbolt
    Bilder
    • 6b028d-1440487321.png

      4,03 kB, 583×43, 92 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

    lycoor24 schrieb:

    .application
    ist nun mal keine Extension, der Du ein Icon zuweisen kannst.
    PNG, BMP, JPG usw. haben das Icon der mit diesen Image-Extensions verknüpften Anwendung.
    DOC(X), XLS(X) usw. haben das Office-Icon.
    Du kannst Deinen EXEN beliebige Icons zuweisen
    und
    Du kannst Deine Extension registrieren, dann wird Dein Programm zu dieser Extension bei Doppelklick drauf geöffnet.
    Hast Du einen Dateityp "application" registriert?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    lycoor24 schrieb:

    Wie geht das?
    Ich hab mal ein Snippet aus dem Forum abgespeichert, probier das mal aus:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports Microsoft.Win32
    2. Public Class Form1
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. Dim result = Registerfile(".xyz", "Meine XYZ-Datei", Application.StartupPath & "\MeineExe.exe", Application.StartupPath & "\MeinIcon.ico")
    5. If Not result Then
    6. MessageBox.Show("fehlgeschlagen")
    7. End If
    8. End Sub
    9. Private Function Registerfile(ByVal extension As String, ByVal beschreibung As String, ByVal pfadProgramm As String, ByVal pfadIcon As String) As Boolean
    10. Try
    11. Dim objSubKey As RegistryKey
    12. Dim objSubKey2 As RegistryKey
    13. Dim Wert As String = beschreibung
    14. Dim sKey As String = extension
    15. Dim sKey2 As String = extension & "\ShellNew"
    16. Dim sEntry As String = "Content Type"
    17. Dim sValue As String = "text/plain"
    18. Dim sEntry2 As String = "PerceivedType"
    19. Dim sValue2 As String = "text"
    20. Dim sEntry3 As String = "Nullfile"
    21. objSubKey = Registry.ClassesRoot.CreateSubKey(sKey)
    22. objSubKey.SetValue("", Wert)
    23. objSubKey.SetValue(sEntry, sValue)
    24. objSubKey.SetValue(sEntry2, sValue2)
    25. objSubKey2 = Registry.ClassesRoot.CreateSubKey(sKey2)
    26. objSubKey2.SetValue(sEntry3, "")
    27. Dim objSubKey3 As RegistryKey
    28. Dim sKey3 As String = beschreibung
    29. Dim sKey4 As String = beschreibung & "\shell\open\command"
    30. Dim skey5 As String = beschreibung & "\DefaultIcon"
    31. Dim sValue3 As String = beschreibung
    32. Dim objSubKey5 As RegistryKey
    33. Dim sValue5 As String = """" + pfadProgramm + """" + " %1"
    34. Dim sValue6 As String = """" + pfadIcon + """"
    35. Dim objSubKey4 As RegistryKey
    36. objSubKey3 = Registry.ClassesRoot.CreateSubKey(sKey3)
    37. objSubKey3.SetValue("", sValue3)
    38. objSubKey4 = Registry.ClassesRoot.CreateSubKey(sKey4)
    39. objSubKey4.SetValue("", sValue5)
    40. objSubKey5 = Registry.ClassesRoot.CreateSubKey(skey5)
    41. objSubKey5.SetValue("", sValue6)
    42. Return True
    43. Catch ex As Exception
    44. MessageBox.Show(ex.Message)
    45. Return False
    46. End Try
    47. End Function
    48. End Class

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!