Este é mais um post da série que mostra como Criar Instaladores com o Wix, em que a primeira parte pode ser vista aqui. Neste post pretendo mostrar como melhorar o instalador que a gente criou no post anterior. Até agora temos um *.wxs que não faz nada e nem instala nada. Para melhora isto temos que adicionar algumas funcionalidades.
Melhorando o Instalador
Na versão que temos até agora só temos o esqueleto do instalador. Temos de adicionar informações sobre os recursos que desejamos instalar. Em http://wix.sourceforge.net/manual-wix3/votive_project_references.htm temos uma lista das referências mais comuns utilizadas em projetos no Visual Studio. Para este exemplo vamos utilizar a variável $(var.MyProjectName.TargetPath) indicando o nome do projeto ao qual vamos gerar o executável. Para funcionar você também deverá adicionar o projeto como referência no Wix. Para isso clique com o direito no projeto e em Add References…, escolha Projects e localize o projeto.
Para isso descomente as linhas com a tag Component
<!-- <Component Id="ProductComponent"> -->
e adicione o código, lembrando de substituir pelo nome de seu projeto o WindowsFormsApplication2TesteInstaller:
<File Source="$(var.WindowsFormsApplication2TesteInstaller.TargetPath)" DiskId="1" />
Após isso pode gerar o build novamente que o projeto já aparecerá após a compilação os arquivos:
O arquivo SetupProjectWix.wixpdb é um arquivo gerado como resultado que não precisa ir para o cliente, ele tem outras funcionalidades. Os outros dois são necessários de serem colocados na distribuição. Esse instalador funciona, porém não gera nenhuma tela. Este será o assunto do próximo tópico.
Interface Padrão
O Wix XML permite configurar algumas interfaces padrão, e tem recursos para GUI personalizadas também, como configuração de alguma variável que o programa precisará definir de acordo com a preferência do usuário na instalação. Para isso você deverá adicionar uma referência no projeto para a WixUIExtension.dll que está no diretório de instalação do Wix, e no arquivo *.wxs adicionar dentro da tag products.
<UIRef Id="WixUI_Mondo"/> <UIRef Id="WixUI_ErrorProgressText" />
Existem algumas interfaces disponíveis no Wix:
É interessante você testar os recursos para ver quais se adequam as necessidades.
Configurando Licença
A licença é controlada pela variável WixUILicenseRtf que deverá ter o valor do RTF da licença. Alguns autores recomendam, para fins evitar problemas de compatibilidade, que o arquivo seja feito com o WordPad
<WixVariable Id="WixUILicenseRtf" Value="F:\DocLicenca.rtf" />
Recursos
Os recursos instalados são mostrados na tela abaixo:
Para habilitar a escolha do local você tem que colocar o atributo ConfigurableDirectory na Tag Feature principal do projeto:
<Feature Id="ProductFeature" Title="SetupProjectWix" Level="1" ConfigurableDirectory="INSTALLFOLDER"> <ComponentGroupRef Id="ProductComponents" /> </Feature>
Para configurar outras opções você deve criar novos componentes. Cada componente deve corresponder a um conjunto de funcionalidades. Veja abaixo o exemplo dos componentes:
<Fragment> <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER"> <Component Id="MainExecutable"> <File Source="$(var.WindowsFormsApplication2TesteInstaller.TargetPath)" DiskId="1"/> </Component> <Component Id="ComponentRegistry"> <File Source="file.txt" DiskId="1"/> </Component> <Component Id="ComponentArquivo"> <File Source="file2.txt" DiskId="1"/> </Component> </ComponentGroup> </Fragment>
Também é necessário definir novas Features, lembrando que o nível(atributo Level) das mesmas terá impacto no que aparecerá nas opções:
<Feature Id="ProductFeature" Title="SetupProjectWix" Level="2" ConfigurableDirectory="INSTALLFOLDER"> <ComponentGroupRef Id="ProductComponents" /> </Feature> <Feature Id="SubFeatureRegistry" Title="Registro" Level="5" ConfigurableDirectory="INSTALLFOLDER"> <ComponentGroupRef Id="ProductComponents" /> </Feature> <Feature Id="SubFeatureFile" Title="File" Level="4" ConfigurableDirectory="INSTALLFOLDER"> <ComponentGroupRef Id="ProductComponents" /> </Feature>
Na instalação padrão o level inicial é 1, quando você escolhe Tipical ele e configurado para 3 e quando você escolhe completa ele é configurado para 1000. Então selecionando Tipical tudo que tiver level menor ou igual a 3 será instalado e o que tiver level maior do que 3 não será instalado. Veja a Figura abaixo
No próximo post mostro como customizar as telas do instalador.