sirve que para ayuda c# svn wix

c# - que - ¿Cómo puedo configurar la versión del instalador de WiX para la versión de compilación actual?



que es wix y para que sirve (5)

En caso de que alguien esté buscando un ejemplo XML real, esto funciona con ensamblados .NET (y no tiene que hacer los atributos Assembly o KeyPath). Eliminé el código no relacionado con [...] titulares de lugar:

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Product [...] Version="!(bind.fileVersion.MyDLL)"> [...] <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="ProgramFilesFolder" Name="PFiles"> <Directory Id="INSTALLDIR" Name="MyDLLInstallLocation"> <Component Id="MainLib" Guid="[...]"> <File Id="MyDLL" Name="MyDll.dll" Source="MyDll.dll" /> [...] </Component> [...] </Directory> </Directory> </Directory> </Product> </Wix>

Escribí una aplicación y su instalador de WiX y lo puse bajo control de versión usando subversión. Cuando se construye el instalador de WiX, 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.

NB estoy usando ccnet para construir este proyecto


Esta es una forma muy sencilla de hacer que su versión del paquete Bootstrapper coincida con su MyApp AssemblyVersion usando un BeforeBuild Target DefineConstants y DefineConstants .

Bundle.wxs:

<Bundle Name="$(var.ProductName) Bootstrapper v$(var.BuildVersion)" Version="$(var.BuildVersion)"

Bootstrapper.wixproj:

<Target Name="BeforeBuild"> <GetAssemblyIdentity AssemblyFiles="../MyApp/bin/$(Configuration)/MyApp.exe"> <Output TaskParameter="Assemblies" ItemName="AssemblyVersion" /> </GetAssemblyIdentity> <PropertyGroup> <DefineConstants>BuildVersion=%(AssemblyVersion.Version)</DefineConstants> </PropertyGroup> </Target>



Hice esto en uno de mis proyectos al escribir una extensión de preprocesador para leer la versión del archivo desde mi ejecutable. Entonces, el archivo WiX tiene el siguiente aspecto:

<?define ProductName="$(fileVersion.ProductName($(var.MyApp.TargetPath)))" ?> <?define CompanyName="$(fileVersion.CompanyName($(var.MyApp.TargetPath)))" ?> <?define ProductVersion="$(fileVersion.ProductVersion($(var.MyApp.TargetPath)))" ?> <Product Id="<product ID>" Name="$(var.ProductName)" Version="$(var.ProductVersion)" Manufacturer="$(var.CompanyName)" Language="1033" UpgradeCode="<upgrade code>">

Publiqué el código para en CodePlex: http://wixfileversionext.codeplex.com/


Puede usar Product / @ Version = "! (Bind.FileVersion.FileId)" (reemplace FileId con el Id del archivo del que desea obtener el número de versión) y light.exe rellenará el valor con la versión del archivo al que hace referencia FileId .