************************************************************************************************* -->
As propriedades que nos interessam agora são:
CUSTOMERSDB É utilizado para definir o nome do banco de dados Customers. Esta opção é muito útil em desenvolvimento e teste, uma vez que é possível executar o instalador diversas vezes para criar bancos de dados específicos para desenvolvimento ou teste.
SALESDB É utilizado para definir o nome do banco de dados Sales.
SQLINSTANCE É utilizado para definir o valor da instância SQL.
IMPORTANTE
Embora o VsDbCmd lhe permita controle do servidor para o qual você irá fazer o deploy, NÃO FAÇA deploy para um servidor diferente de localhost. O efeito disso seria registrar o software como tendo sido instalado na Maquina1 quando na verdade o software foi instalado em Maquina2. Além disso, podem haver problemas como controle da conta de usuário e de delegação de acesso (double hop). Adicionalmente, você irá perder todas as vantagens de gerenciamento do Windows Installer.
A próxima seção define uma série de pré-requisitos para a instalação.
*****************************************************************************************************
Define General Prerequisite conditions.
****************************************************************************************************** -->
Require Administrator privileges-->
Privileged
If Installer is 64 bit require 64bit OS-->
VersionNT64
If Installer is 32 bit require 32bit OS-->
VersionNT And Not VersionNT64
Require Windows Vista or Windows Server 2008 or higher-->
Installed Or VersionNT >= 600
Require .Net Framework 2.0 SP2-->
Installed Or (NETFRAMEWORK20 And NETFRAMEWORK20_SP_LEVEL >= "#2")
Require .Net Framework 3.5 SP1-->
Installed Or (NETFRAMEWORK35 And NETFRAMEWORK35_SP_LEVEL >= "#1")
************************************************************************************************* -->
NOTA
É importante notar que estas condições se aplicam para toda a instalação. Algumas condições aplicam-se somente para Funcionalidades especifícias ou para Componentes. Mais adiante demonstraremos uma forma de determinar se o SQL Server está instalado quando a funcionalidade Database é selecionada.
A próxima seção define a estrutura de diretório onde iremos copiar os arquivos do nosso programa.
*****************************************************************************************************
Define the directory structure where files should be installed
****************************************************************************************************** -->
install the files under Program Files or Program Files x86-->
the !loc.* values are localization variables that define the friendly names displayed to the user-->
Add a Menu Item to the All Programs structure-->
NOTAS
O diretório SourceDir é uma funcionalidade embutida no WiX que refere-se ao drive de instalação.
O atalho UninstallProduct é uma forma conveniente de proporcionar a desinstalação do seu produto. Isto pode ser muito útil durante o desenvolvimento ou para debugging.
A próxima seção define as Funcionalidades e Componentes do produto.
É fácil visualizar estes itens através da interface definida na Figura 73. Funcionalidades e Componentes são grupos de arquivos que definem uma unidade coesa do programa. Quando você define os arquivos que fazem parte do Componente ou da Funcionalidade eles recebem GUIDS. Isto permite ao serviço de instalação rastrear esses arquivos do programa de forma que seja possível escrever upgrades ou correções pontuais que afetem apenas alguns arquivos específicos e não necessariamente o produto inteiro.
Figura 73 Interface de instalação de Componente que é renderizada a partir de propriedades especificadas no XML do instalador
Esta interface (Figura 73) é mapeada para a estrutura de diretório através da seção Features.
*****************************************************************************************************
Define the features to display in the UI
****************************************************************************************************** -->
Note: The following ComponentGroupRef is required to pull in generated authoring from project references. -->
NOTA
Note a referência ao componente para o VsDbCmd e para o DatabaseServer1. Eles são definidos como parte da funcionalidade Databases e serão instalados quando Database1 ou Database2 forem selecionados.
A próxima seção define as ações customizadas que iremos executar como parte da nossa instalação
O Windows Installer não foi de fato desenvolvido para executar funcionalidades customizadas. Ele realiza um excelente trabalho de mapeamento entre arquivos, componentes e banco de dados com chaves de registro associadas. Apesar disso, você precisa utilizar passos alternativos caso queira adicionar funcionalidades especiais. Os elementos Custom actions definem as informações que são necessárias para executar o comando. Os comandos atuais são executados no arquivo “Sequences.wxi”'>Sequences.wxi”
.
**************************************************************************************************************
Define General purpose CustomActions. CustomActions specific to Components are defined in the component.wxi
files.
******************************************************************************************************************* -->
Some prerequisites depend on whether a particular feature and/or component is installed.
You cannot use Condition for this. Conditions apply to the entire install. You can set a property
through a CustomAction and then condition when the CustomAction is executed.
Use this approach if you want an install with multiple features that don't necessarily need SQL Server -->
These custom actions create the SERVER property used by VsDbCmd. All installs are made on the local machine.
DO NOT try to run an .msi on Machine A to deploy to Machine B. Therefore the server is always localhost.
We do need to provide a way to deploy to specific instances on a SERVER -->
A ação PrerequisitesExSql08 irá disparar um erro caso as Custom Actions sejam executadas. Explicaremos mais sobre este ponto ao explorarmos o arquivo Sequences.wxi.
As outras duas ações são utilizadas para construer o nome do servidor ao executarmos o VsDbCmd. No arquivo Sequences nós iremos utilizar expressões condicionais para definir a propriedade SQLServer para localhost ou localhost\.
As seções finais fazem referência ao arquivo Sequences.wxi e aos arquivos de interface para definir a sequência de ações customizadas e de formulários a serem exibidos.
************************************************************************************************* -->
****************************************************************************************************
Define the references to the UI of this install.
****************************************************************************************************** -->
use this to invoke UI\* defined customized version of WixUI_FeatureTree -->
************************************************************************************************* -->
Por último, nós precisamos fazer referência a todos os demais arquivos que fazem parte do projeto WiX.
Nós iremos explorá-los em detalhe nos exercícios seguintes.