4
Je n'ai aucun mal à appeler MsiEnumRelatedProducts de C#. J'ai essayé quelques variations sur la définition p/invoke mais pas de chance (out et ref). Je pense que le problème est le dernier paramètre, qui est un LPTSTR qui est censé pointer vers une chaîne de 39 caractères.L'appel de MsiEnumRelatedProducts à partir de C# échoue
Voici le PInvoke et appelez:
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);
Notez que l'accident ne se produit que lorsque le UpgradeCode passé a au moins 1 produit installé.
Exactement correct! Je vous remercie! – user53794
Super! Je vous remercie. – Ries