Ich habe kein Ende der Probleme beim Aufruf von MsiEnumRelatedProducts aus C#. Ich habe ein paar Varianten der p/invoke-Definition ausprobiert, aber kein Glück (out und ref). Ich denke, das Problem ist der letzte Parameter, der ein LPTSTR ist, der auf eine Zeichenfolge mit 39 Zeichen zeigen soll.Der Aufruf von MsiEnumRelatedProducts aus C# stürzt ab
Hier ist die pinvoke und rufen:
public static string EnumRelatedProducts(string UpgradeCode, int Index)
{
string ProductCode;
UInt32 rc = MsiEnumRelatedProducts(UpgradeCode, 0, Index, out ProductCode);
Console.WriteLine("Returned");
if (rc != 0)
{
return string.Empty;
}
return ProductCode;
}
[DllImport("msi.dll", CharSet = CharSet.Auto)]
private static extern UInt32 MsiEnumRelatedProducts(string UpgradeCode, int reserved, int Index, out string ProductCode);
Beachten Sie, dass der Absturz nur auftritt, wenn die übergebene Upgrade mindestens 1 installiert Produkt hat.
genau richtig! Vielen Dank! – user53794
Großartig! Vielen Dank. – Ries