2010-08-06 6 views
8

J'essaie d'ajouter une fonctionnalité à mon application winforms qui imprime le numéro de version sur l'écran principal. J'ai actuellement ceci:Numéro de version .NET (version de l'installateur)

txtVersion.Text = ProductVersion.ToString(); 

Qui me dit la version du programme - tout va bien. Cependant, ce que j'aimerais idéalement c'est de choisir la version du programme d'installation qui a servi à créer le msi. Existe-t-il un moyen d'interroger ce dans le programme installé, ou de transférer l'information lors de l'installation en quelque sorte?

Répondre

3

Il semble que vous voulez le ProductVersion property. Vous pouvez obtenir cela au moment de l'exécution en appelant le ::MsiGetProductInfo() function fournissant le ProductCode pour le MSI qui vous a installé.

Si cela ne fonctionne pas pour vous, écrire ProductVersion sur une clé de registre et lire que lors de l'exécution est assez populaire. Vous pouvez utiliser cette clé de registre pour résoudre les problèmes ICE38 décrits ici: http://robmensching.com/blog/posts/2007/4/27/How-to-create-an-uninstall-shortcut-and-pass-all-the

+0

Mais le ProductCode n'est-il pas mis à jour chaque fois que le numéro de version est augmenté? –

+0

Si vous faites des mises à niveau majeures, oui. Si vous utilisez des mises à niveau majeures, vous pouvez utiliser :: MsiEnumRelatedProducts() et passer votre UpgradeCode (qui ne devrait pas changer) pour obtenir le ProductCode puis utiliser les autres API. Encore une fois, pas trivial mais pas vraiment difficile non plus. –

0

Vous pouvez enregistrer la version dans une clé de Registre pendant l'installation et interroger la clé de Registre à partir du programme.

0

Vous pouvez très bien faire de votre programme (MSI) d'installation grâce à des actions personnalisées à l'aide Wix3

Les liens suivants peuvent vous aider à démarrer

WIX at Sourceforge

Wix Tutorial

+1

Une action personnalisée n'est pas nécessaire pour cela, [ProductVersion] est intégré. Les actions personnalisées doivent être évitées à tout prix. –

1

Il vaut mieux prendre pas l'application version de l'installateur, mais prendre la version du programme d'installation de l'application (AssemblyInfo.cs), imo.