2010-08-06 30 views
8

Estoy tratando de agregar una función a mi aplicación winforms que imprime el número de versión en la pantalla principal. Actualmente tengo esto:Número de versión .NET (versión del instalador)

txtVersion.Text = ProductVersion.ToString(); 

Lo que me dice la versión del programa, todo va bien.

Sin embargo, lo que idealmente me gustaría es hacer la versión del programa de instalación que se utilizó para crear el msi. ¿Hay alguna manera de interrogar esto desde dentro del programa instalado o de transferir la información durante la instalación de alguna manera?

Respuesta

3

Parece que quiere el ProductVersion property. Puede obtenerlo en tiempo de ejecución llamando al ::MsiGetProductInfo() function que proporciona el Código de producto para el MSI que lo instaló.

Si no funciona para usted, escribir la ProductVersion en una clave de registro y leerla en tiempo de ejecución es bastante popular. También puede usar esa clave de registro para resolver los problemas ICE38 que se describen aquí: http://robmensching.com/blog/posts/2007/4/27/How-to-create-an-uninstall-shortcut-and-pass-all-the

+0

¿Pero el Código de producto no se actualiza cada vez que se aumenta el número de versión? –

+0

Si haces mejoras importantes, sí. Si está utilizando actualizaciones importantes, puede usar :: MsiEnumRelatedProducts() y pasar su UpgradeCode (que no debería estar cambiando) para obtener el ProductCode y luego usar las otras API. De nuevo, no es trivial pero tampoco es realmente difícil. –

0

Puede guardar la versión en una clave de registro durante la instalación y luego consultar la clave de registro desde el programa.

0

Puede hacer muy bien desde el programa de instalación (MSI) a través de acciones personalizadas utilizando Wix3

siguientes enlaces pueden ayudarlo a empezar

WIX at Sourceforge

Wix Tutorial

+1

La acción personalizada no es necesaria, hay [ProductVersion] incorporada. Las acciones personalizadas deben evitarse a toda costa. –

1

Es mejor no tener aplicación versión del instalador, pero tome la versión del instalador desde la aplicación (AssemblyInfo.cs), imo.

Cuestiones relacionadas