Sugestões de fluxo de trabalho TeamCity + WiX + MSBuild necessárias

Venho trabalhando na próxima etapa do meu projeto de integração contínua, que é obterTeamCity para criar meu aplicativo, altere automaticamente o número da versão de todos os assemblies e crie um instalador.

Um pouco de fundo primeiro:

Eu tenho executado o TeamCity com sucesso nos últimos meses, e ele cria minhas configurações e executa meus testes NUnit e NCover.

Demorei um pouco pesquisando os instaladores - sempre odiei o InstallShield e nunca o considerei para o meu aplicativo atual. Eu gosto do NSIS, mas depois me depareiWiX. Eu não tenho nenhum conhecimento íntimo da arquitetura do MS Installer, que eu entendo ser perigoso para projetos complicados, então, em algum momento, precisarei aprender mais sobre isso. No entanto, depois de alguns dias vasculhando as perguntas do SO, pesquisando e lendo blogs, tenho um projeto WiX que cria, instala, executa, o aplicativo é executado com êxito e tudo é desinstalado corretamente. Ótimo!

Eu também queria que a configuração de compilação do TeamCity atualizasse automaticamente o número da versão de todos os meus assemblies. Consegui simular essa funcionalidade instalando oTarefas da comunidade MSBuild na minha máquina de desenvolvimento e criando uma configuração de Implantação que use umBeforeBuild alvo e oFileUpdate tarefa para alterar o número da versão. Isso funciona corretamente, exceto que na minha máquina de desenvolvimento, eu não tenho umbuild_vcs_number_1 variável de ambiente a ser substituída.

Então é aqui que estou agora - preciso que o TeamCity faça a atualização e, enquanto ele tiver obuild_vcs_number_1 variável de ambiente, não consigo descobrir como obter as tarefas da comunidade do WiX MSBuild.

Uma postagem que li recomendou a verificação dos destinos do MSBuild em uma pasta SVN. Eu tenho uma pasta / extlib para coisas assim, então minhas regras de checkout do TeamCity VCS são mais ou menos assim:

+:tags/2010-10-15=>src
+:extlib=>extlib

Como faço para extlib a partir de uma variável de ambiente? Quando executo a compilação, o TeamCity reclama (e corretamente) que não consegue encontrarc:\wix30\MSBuildCommunityTasks. A pasta real éC:\TeamCity\buildAgent\work\3e073d2b74226378\extlib\wix30\MSBuildCommunityTasks. A pasta é gerada automaticamente, pois estou fazendo uma verificação no lado do servidor; portanto, deve haver alguma variável de ambiente que o TeamCity defina que eu possa usar para obter o caminho correto.

Uma coisa que devo observar é que entrei na configuração da compilação -> Propriedades e variáveis de ambiente e encontrei a lista de opções não intuitiva com todas as variáveis existentes, e não vi nada que soasse como uma variável que aponta para o caminho do trabalho.

Uma solução possível em que posso pensar é instalar o MSBuild Community Tasks no servidor de compilação e criar uma variável de ambiente do sistema que possa ser acessada por<WixToolPath>.

Alguém tem outras sugestões?

questionAnswers(2)

yourAnswerToTheQuestion