2016-04-18 6 views

Répondre

1

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.

+0

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

+0

J'ai changé le "ProductVersion" en "VersionString". alors il renvoie le produit version.thanks. – KIS

0

MsiGetProductInfo ne fonctionnera pas car le programme d'installation a été construit avec Wix Bootstrapper. Ce que vous pouvez faire, et c'est un peu un hack, est d'ouvrir l'exécutable en utilisant n'importe quel archiveur (c'est une archive à la fin) et d'analyser le fichier appelé 0, c'est un XML. Vous pouvez trouver toutes les informations là-bas, comme la version, le nom du produit, la clé de produit et ainsi de suite.

+0

Je dois faire ce code derrière.Puis-je le faire dans votre approche? Merci. – KIS

+0

Oui, il existe des API d'archiveur, il suffit de choisir celui qui est plus facile pour vous –