Nunca ouviu falar em WiX? WiX ou windows installer XML (pronuncia-se "wicks") é um framework para construção de instaladores MSI (Windows Installer setup) ou merge modules MSM (Pacote de arquivos compartilhados pelo instalador). WiX foi o primeiro projeto open source da Microsoft.

WiX framework fornece integração com compilação de linha de comando para desenvolvedores que usam MakeFile ou integração com MSBuild de dentro do Visual Studio.

Muitos produtos dentro da microsoft utilizam esse framework para a construção de seus aplicativos de setup. SQL Server e Exchange Server são alguns exemplos.

Clique aqui para baixar o WiX framework

Clique aqui para ler um tutorial completo sobre WiX

 

Essa semana precisei alterar uma parte do nosso setup para adicionar uma condição para a instalação de alguns arquivos. Essa condição se baseava num determinado valor de uma chave no registry. Em caso o setup fosse capaz de localizar essa entrada no registry e o valor da chave fosse 1, certos arquivos eram copiados durante a instalação, caso contrario esses mesmo arquivos não deveriam ser copiados. Perdi um tempão tendando entender porque minhas mudancas não estavam funcionando corretamente, quando percebi que o problema estava ligado pelo fato de eu estar usando uma maquina 64 bits, porem eu nao  estava especificando essa opção na minha propriedade de leitura da registry no WiX.

Como podemos ver no exemplo abaixo Win64='yes' para a correta leitura do registry.

<Property Id="MINHACHAVE">

<RegistrySearch Id='MinhaChave_REGISTRY' Type='raw'

Root='HKLM' Key='Software\Microsoft\MeuProduto\V14' Name='MinhaChaveEnabled' Win64='yes' />

</Property>

Isso é necessario para que o windows localize a entrada debaixo do nódulo Wow6432Node.

No exemplo mostrado abaixo, caso o setup encontre a chave e a chave tenha valor 1 (como a chave é um dword devemos comparar contra '#1'). Entao o setup criará um atalho no desktop, caso a chave não existe nenhum atalho sera criado.

<Component Id='Aplicativo' Guid='155FCD2B-ED3C-44c8-A769-02AD23E56397'>

<File Id='Aplicativo' Name='Aplicativo.exe' DiskId='1' Source='Aplicativo.exe' KeyPath='yes'>

<Shortcut Id="startApp" Directory="DesktopFolder" Name="Aplicativo" Advertise="yes" />

</File>

<Condition>MINHACHAVE = "#1"</Condition>

</Component>

O exemplo acima mostra que podemos criar propriedades no nosso WiX e essas propriedades podem ser baseadas na existencia de um arquivo, de uma determinada informação do registry ou qualquer outra informaçào que precisamos saber durante o setup. Uma vez que temos essa propriedade definida, podemos usa-la como condição para uma detemrinada ação.

 

Para baixar um exemplo completo da utilização de condição durante a instalação. clique aqui

Outro exemplo. Validando uma versão especifica do .Net framework. clique aqui

 

Este foi so um pequeno exemplo deste poderoso framework chamado WiX.

Espero que tenha gostado.

Forte abraço.