|
| |

VB.NET - Ein- und Umsteiger| Re: Installationspfade aller installierten Visual Studio Versionen/Editionen | |  | | Autor: keco | | Datum: 24.01.12 20:05 |
| Danke soweit. Das mit der Registry vergesse ich lieber.
Ich habe es händisch mit den APIs versucht, leider ist InstallLocation häufig leer. Vorallem bei den Microsoft-Produkten übermäßig oft. Ich habe mir einiges auflisten lassen und bei den beiden auf dem Computer installierten Visual Studio Editionen habe ich diese:
InstalledProductName: Microsoft Visual Studio 2010 Professional - DEU
InstallLocation:
InstallSource: h:\
LocalPackage: C:\Windows\Installer\221795.msi
Publisher: Microsoft Corporation
VersionMinor: 0
VersionMajor: 10
VersionString: 10.0.40219
InstalledProductName: Microsoft Visual Studio 2008 Professional Edition - DEU
InstallLocation:
InstallSource: h:\
LocalPackage: C:\Windows\Installer\12e1bc.msi
Publisher: Microsoft Corporation
VersionMinor: 0
VersionMajor: 9
VersionString: 9.0.21022
InstallLocation ist sowohl über die API, als auch über die von dir verlinkte Bibliothek leer. Bei der Bibliothek erhalte ich zumindest beim Ermitteln von InstalledProductName eine Win32Exception. Laut der Ausnahmebeschreibung wohl ERROR_MORE_DATA. Weißt du vielleicht, was ich falsch mache oder welche Möglichkeiten ich sonst noch hätte?
Vielleicht interessiert der Code, den ich verwendet habe: <DllImport("msi.dll", SetLastError:=True)> _
Private Shared Function MsiEnumProducts(iProductIndex As Integer, _
lpProductBuf As System.Text.StringBuilder) As Integer
End Function
<DllImport("msi.dll", CharSet:=CharSet.Unicode)> _
Private Shared Function MsiGetProductInfo(product As String, [property] As _
String, <Out()> valueBuf As System.Text.StringBuilder, ByRef len As _
Int32) As Int32
End Function
Public Enum MSI_ERROR As Integer
ERROR_SUCCESS = 0
ERROR_MORE_DATA = 234
ERROR_NO_MORE_ITEMS = 259
ERROR_INVALID_PARAMETER = 87
ERROR_BAD_CONFIGURATION = 1610
End Enum
Public Enum ProductInfos
' Hier die Eigenschaftennamen
End Enum
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) _
Handles Button1.Click
Dim productGuid As New System.Text.StringBuilder(39)
Dim msiResult As MSI_ERROR = MSI_ERROR.ERROR_SUCCESS
Dim index As Integer = 0
While msiResult = MSI_ERROR.ERROR_SUCCESS
msiResult = DirectCast(MsiEnumProducts(index, productGuid), _
MSI_ERROR)
If msiResult = MSI_ERROR.ERROR_SUCCESS Then
For Each enumName In [Enum].GetNames(GetType(ProductInfos))
Dim productInfo As New System.Text.StringBuilder(512)
MsiGetProductInfo(productGuid.ToString, enumName, _
productInfo, 512)
Debug.WriteLine(enumName & ": " & productInfo.ToString)
Next
End If
index += 1
End While
End SubNachtrag: Ich habe mir auch mal ReturnValue von MsiGetProductInfo angeschaut. Der Wert ist bei den leeren Feldern immer 0, also MSI_ERROR.ERROR_SUCCESS.
Beitrag wurde zuletzt am 24.01.12 um 20:19:59 editiert. |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
sevAniGif (VB/VBA) 
Anzeigen von animierten GIF-Dateien
Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Weitere InfosTipp des Monats Access-Tools Vol.1 
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
| |
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle 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.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|