Escribí una aplicación y su instalador WiX y la puse bajo control de versión usando subversion. Cuando el instalador de WiX compila, quiero que su número de versión sea la versión de compilación actual de la aplicación. ¿Cómo logro esto? Usé C # para codificar la aplicación.
Nota: estoy usando ccnet para construir este proyecto
Hice esto en uno de mis proyectos escribiendo una extensión de preprocesador para leer la versión del archivo de mi ejecutable. Entonces el archivo WiX se parece a:
Publiqué el código en CodePlex: http://wixfileversionext.codeplex.com/
fuente
<?define ProductName="!(bind.property.ProductName)" ?><?define CompanyName="!(bind.property.Manufacturer)" ?><?define ProductVersion=!(bind.FileVersion.FileId) ?>
¿DóndeFileId
está el valor delId
atributo de uno de susFile
elementos dentro de aComponent
.En caso de que alguien esté buscando un ejemplo XML real, esto funciona con ensamblados .NET (y no tiene que hacer los atributos Ensamblaje o KeyPath). Eliminé el código no relacionado con [...] marcadores de posición:
fuente
!(bind.fileVersion.MyDLL)
, usa la tercera parte en referencia a la<File Id="MyDLL"...
secciónAquí hay una manera muy simple de hacer que su versión del paquete Bootstrapper coincida con su versión de ensamblaje MyApp usando un
BeforeBuild Target
yDefineConstants
.Bundle.wxs:
Bootstrapper.wixproj:
fuente
var.ProductName
yvar.BuildVersion
algún lugar por encima de tu<Bundle>
?BeforeBuild
objetivo, por lo que podría ser necesario especificar explícitamenteAfterTargets="AfterResolveReferences"
si está construyendo en el IDEPuede pasar la versión al script de MSBuild para su proyecto de instalación de la misma manera que puede pasar el script de compilación de la aplicación.
Por ejemplo, si su sistema CI define variables
AppVersion
y lasBuildNumber
pasa a sus scripts MSBuild, su wixproj puede crear unaVersion
propiedad correspondiente que reenvía a Wix de esta manera:La primera definición de
Version
proporciona un valor predeterminado para cuando está construyendo localmente. Cualquier cosa que termine se convierte en unaVersion
variable en Wix. Úselo en un archivo wsx como este:Me gusta incluir la versión en la descripción para que sea fácil buscar desde el Explorador de Windows (como una columna en la Vista de detalles o en la página de Propiedades) independientemente del nombre del archivo.
Pasar la versión como una variable le da más control que leerlo desde un archivo. Cuando lee de un archivo, obtiene las 4 partes de la versión programática. Sin embargo, ProductVersion solo está diseñado para usar las primeras 3 partes.
fuente
<Version Condition=" '$(BuildVersionOfAsm)' != '' ">$(BuildVersionOfAsm)</Version>
mientras que BuildVersionOfAsm es una variable en las canalizaciones de DevOps.Esto se ve razonablemente cerca de lo que está tratando de lograr. Vea cuál es el equivalente en control de crucero.
http://www.ageektrapped.com/blog/setting-properties-for-wix-in-msbuild/
fuente