Eu escrevi um aplicativo e seu instalador WiX e o coloquei sob controle de versão usando o subversion. Quando o instalador do WiX cria, quero que o número da versão seja a versão atual do aplicativo. Como eu faço isso? Eu usei c # para codificar o aplicativo.
NB eu estou usando o ccnet para construir este projeto
Eu fiz isso em um dos meus projetos escrevendo uma extensão do pré-processador para ler a versão do arquivo do meu executável. Portanto, o arquivo WiX se parece com:
Publiquei o código no CodePlex: http://wixfileversionext.codeplex.com/
fonte
<?define ProductName="!(bind.property.ProductName)" ?><?define CompanyName="!(bind.property.Manufacturer)" ?><?define ProductVersion=!(bind.FileVersion.FileId) ?>
WhereFileId
é o valor doId
atributo de um dos seusFile
elementos dentro de umComponent
.Caso alguém esteja procurando um exemplo XML real, isso funciona com assemblies .NET (e você não precisa executar os atributos Assembly ou KeyPath). Eu eliminei o código não relacionado com [...] marcadores de posição:
fonte
!(bind.fileVersion.MyDLL)
que usa a terceira parte em referência à<File Id="MyDLL"...
seçãoAqui está uma maneira muito simples de fazer com que sua versão do pacote do Bootstrapper corresponda ao seu MyApp AssemblyVersion usando
BeforeBuild Target
eDefineConstants
.Bundle.wxs:
Bootstrapper.wixproj:
fonte
var.ProductName
e emvar.BuildVersion
algum lugar acima do seu<Bundle>
?BeforeBuild
destino, portanto, pode ser necessário especificar explicitamenteAfterTargets="AfterResolveReferences"
se você está construindo no IDEVocê pode passar a versão para o script MSBuild para o seu projeto de instalação da mesma forma que pode passar para o script de compilação do aplicativo.
Por exemplo, se o seu sistema de IC define variáveis
AppVersion
e asBuildNumber
transmite aos scripts do MSBuild, seu wixproj pode criar umaVersion
propriedade correspondente que encaminha para o Wix assim:A primeira definição de
Version
fornece um padrão para quando você está construindo localmente. Tudo o que acaba se torna umaVersion
variável no Wix. Use-o em um arquivo wsx como este:Eu gosto de incluir a versão na descrição, para que seja fácil procurar no Windows Explorer (como uma coluna na exibição Detalhes ou na página Propriedades) independentemente do nome do arquivo.
Passar a versão como uma variável oferece mais controle do que lê-la em um arquivo. Ao ler de um arquivo, você obtém todas as 4 partes da versão programática. No entanto, ProductVersion foi projetado apenas para usar as três primeiras partes.
fonte
<Version Condition=" '$(BuildVersionOfAsm)' != '' ">$(BuildVersionOfAsm)</Version>
enquanto BuildVersionOfAsm é uma variável nos pipeline de devops.Isso parece razoavelmente próximo do que você está tentando realizar. Veja qual é o equivalente no controle de cruzeiro.
http://www.ageektrapped.com/blog/setting-properties-for-wix-in-msbuild/
fonte