vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Verschiedenes / Sonstiges   |   VB-Versionen: VB200803.04.09
Korrekte Veröffentlichungsversion

Aufgrund eines Bugs im Framework wird in der Veröffentlichungsversion die Revisionsnummer falsch angegeben. Dieser Tipp zeigt, wie es korrekt geht.

Autor:   Götz KircherBewertung:  Views:  13.409 
www.goetz-kircher.deSystem:  Win2k, WinXP, Win7, Win8, Win10, Win11kein Beispielprojekt 

Aufgrund eines Bugs im Framework wird in der Veröffentlichungsversion die Revisionsnummer falsch angegeben. Dieser Tipp zeigt, wie es korrekt geht.

''' <summary>
''' Gibt bei "Click-Once"- Veröffentlichungen unter VB 2008 die korrekte
''' vollständige Versionsnummer zurück.
''' </summary>
Public Shared Function Veröffentlichungsversion() As String
 
  ' Aufgrund eines Bugs im Framework wird die Veröffentlichungsversion
  ' falsch angebenen. Der Wert My.Application.Info.Version.MinorRevision
  ' zeigt unbrauchbare Werte an. Da genau das der Wert ist, der
  ' vom System beim Veröffentichen automatisch hochgezählt wird,
  ' kann das schmerzlich sein.
  '
  ' Die Lösung hier macht sich zunutze, daß der "Klick-Once" Installer
  ' eine Manifestdatei mit installiert, in der die korrekte Angabe
  ' steht. Das Ganze funktioniert auch innerhalb der IDE.
  ' 
  ' In den Eigenschaften des Programms ist unter "Assemblyinformationen"
  ' bei der letzten Stelle der Assemblyversion ein Joker zu setzten.
 
  With My.Application.Info
 
    ' Wenn die Daten nicht auffindbar sind, oder wenn irgend ein Fehler
    ' auftritt, werden die ersten drei Werte der Version zurückgeben,
    ' ohne die Revisionnummer.
 
    Dim zErsatzwert As String = .Version.ToString
    zErsatzwert = zErsatzwert.Substring(0, zErsatzwert.LastIndexOf("."))
 
    ' In dieser Datei steht der korrekte Wert.
    Dim zLwpD As String = .DirectoryPath & "\" & .AssemblyName & ".exe.manifest"
 
    ' Prüfen, ob vorhanden. (Das ist nur eine Sicherheitsmaßnahme.)
    If Not My.Computer.FileSystem.FileExists(zLwpD) Then
      Return zErsatzwert
    End If
 
    ' wenn ja, laden....
    Dim zFile As String
    Try
      zFile = My.Computer.FileSystem.ReadAllText(zLwpD)
    Catch ex As Exception
      Return zErsatzwert
    End Try
 
    ' Die Versionsummer steht hier:
    Dim iZeiPosStart As Integer = zFile.IndexOf("<asmv1:assemblyIdentity version=")
 
    If iZeiPosStart = -1 Then
      Return zErsatzwert
    End If
 
    ' Versionsummer separieren und zurückgeben
    Dim iZeiPosHochKommata01 As Integer = zFile.IndexOf("""", iZeiPosStart)
    Dim iZeiPosHochKommata02 As Integer = zFile.IndexOf("""", iZeiPosHochKommata01 + 1)
 
    If iZeiPosHochKommata02 < iZeiPosHochKommata01 Then
      Return zErsatzwert
    End If
 
    Return zFile.Substring(iZeiPosHochKommata01 + 1, _
      iZeiPosHochKommata02 - iZeiPosHochKommata01 - 1)
 
  End With
End Function



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.