Vous faites référence à MsiGetProductInfo, donc je suppose que vous avez un fichier MSI Windows Installer que votre exe installe (car il amorce les prérequis) et que vous voulez obtenir les informations après avoir installé votre configuration.
C'est le p/Invoke signature: crochets
DllImport("msi.dll", CharSet=CharSet.Unicode)]
static extern Int32 MsiGetProductInfo(string product,
string property, [Out] StringBuilder valueBuf, ref Int32 len)
et essentiellement le produit est le ProductCode du MSI guid comme une chaîne entourée de {}.
Vous n'avez pas publié de code que vous avez essayé, il est donc impossible de diagnostiquer tout problème que vous pourriez avoir. Si par « numéro de produit » vous voulez dire la version, vous utilisez l'une des valeurs décrites ici:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa370130(v=vs.85).aspx
où les choses comme INSTALLPROPERTY_VERSIONSTRING sont définies dans msi.h à partir d'un SDK Windows, la valeur étant « VersionString ".
Il devrait y avoir plus de suffisamment d'informations dans cet exemple aussi:
MSI Interop using MSIEnumRelatedProducts and MSIGetProductInfo
Le UpgradeCode reste généralement le même pour de nombreux ProductCodes que des améliorations se produisent, de sorte que le code ne change pas beaucoup si vous utilisez MsiEnumRelatedProducts sur le UpgradeCode pour retourner un ProductCode, puis branchez ce ProductCode dans MsiGetProductInfo.
J'ai fait comme la référence ci-dessous.http: //stackoverflow.com/questions/4013425/msi-interop-using-msienumrelatedproducts-and-msigetproductinfo. Mais il ne renvoie pas le ProductVersion.It ne renvoie que le nom du produit et le code du produit. Une idée? – KIS
J'ai changé le "ProductVersion" en "VersionString". alors il renvoie le produit version.thanks. – KIS