Distribua aplicações com o Access Developer Extensions

por Luiz Cláudio C. V. Rocha

Este artigo discuteEste artigo usa as seguintes tecnologias:

O que é o ADE

Ferramentas do ADE

Como distribuir aplicações Access para máquinas que não têm o MS-Office instalado

Como funciona o licenciamento do Access Runtime

MS-Office e MS-Access

O Access é a ferramenta de desenvolvimento do pacote Office. Assim como os demais produtos da suíte, seu grande diferencial é a alta produtividade. Se uma ferramenta se encaixa bem dentro do conceito de RAD (Rapid Application Development) é o Access. Embora nem sempre traga as melhores práticas, permite ao desenvolvedor criar uma solução completa e profissional em pouquíssimo tempo, atendendo o cliente de maneira bastante satisfatória.

Esta produtividade tem reflexo direto no custo de desenvolvimento. O Access viabiliza soluções que seriam proibitivas com outras ferramentas, sejam soluções finais ou apenas protótipos. É bastante comum uma aplicação pequena (de um departamento, por exemplo) ser criada no Access, crescer, e depois ser migrada para uma plataforma mais robusta, ou mesmo permanecer no Access.

Entretanto, o Access tem uma limitação importante, que acaba sendo um fator decisivo em muitos projetos: ele não gera executáveis, ou seja, para rodar front-ends feitos no Access, cada máquina deverá ter o MS-Access instalado. Assim, o ganho de produtividade pode ser compensado (negativamente) por um custo de licença, inviabilizando a solução.

Para resolver esta limitação, a Microsoft disponibiliza o Access Developer Extensions (ADE), parte integrante do pacote Visual Studio Tools for Office (VSTO), que é um produto específico para desenvolvedores, substituto do antigo Microsoft Office Developer. Com o ADE, o desenvolvedor pode distribuir o Access Runtime, possibilitando que sua aplicação rode em máquinas que não tenham o Access instalado.

Neste artigo você conhecerá o ADE e seus componentes, saberá como distribuir aplicações Access usando o Package Wizard e verá como funciona o licenciamento, que embora não seja complicado, é sempre um assunto que gera muitas dúvidas e mal-entendidos.

Access Developer Extensions

O Access Developer Extensions, ou simplesmente ADE, é o produto que substitui o antigo Microsoft Office Developer (MOD), cujo principal atrativo é a licença para distribuição (livre de royalties) do Access Runtime. Porém, a semelhança com seu predecessor pára por aí, sendo diferente no resto:

Ao contrário do MOD, o ADE não é uma versão do Office, ou seja, o pacote não inclui o Office Professional.

O ADE não é um produto autônomo. Ele é parte integrante do pacote Visual Studio Tools for Office (VSTO), o qual inclui o ADE, o VB .NET, o SQL Server Developer Edition e o VSTO (propriamente dito).

Um dos atrativos do MOD eram as licenças de controles ActiveX (Treeview, Listview, DTPicker, etc.). O ADE, infelizmente, não trás estas licenças, mesmo porque alguns componentes (como o Rich Textbox) não foram compatibilizados para o Office 2003. Obs: na seção de links deste artigo há o endereço do site do MVP canadense Stephen Lebans, que disponibiliza componentes gratuitos e bons para o Access 2003, inclusive uma versão de Rich Textbox.

Os utilitários Code Librarian e Replication Manager (do MOD) não estão disponíveis no ADE.

O Office Professional não faz mais parte do pacote, nem os controles ActiveX, nem a maioria dos utilitários. Afinal, o que sobrou? Na verdade, nada além do Package Wizard. No lugar dos utilitários e controles (que na prática eram pouco usados), a Microsoft incluiu novas ferramentas, todas de grande utilidade ao desenvolvedor Access:

Package Wizard: "carro-chefe" do pacote, é um assistente que ajuda a empacotar e distribuir aplicativos Access, incluindo ou não o Access Runtime e arquivos de dependência. O PW gera um arquivo de setup (.msi) que guia o usuário na instalação do aplicativo. Ainda não é a oitava maravilha do mundo, mas trás mais funcionalidades que as versões anteriores, permitindo ajustar opções de inicialização, configurar a aparência do setup e diversos outros recursos, como veremos mais adiante neste artigo.

Custom Startup Wizard: é um utiliário que gera MDEs ou MDBs com diferentes propriedades de inicialização.

Property Scanner: é uma ferramenta que busca palavras (nomes de campos, expressões, etc.) dentro do Access, percorrendo coleções, objetos e propriedades do banco de dados.

Source code: todo o código-fonte das ferramentas do ADE está disponível (Figura 1) para quem quiser personalizar, ou até mesmo ampliar, os recursos oferecidos.


Figura 1. Código-fonte do ADE

Veremos agora um pouco de cada ferramenta do ADE.

Início da páginaInício da página

Property Scanner

Atualizar um aplicativo de banco de dados é uma tarefa um tanto complicada ou, no mínimo, tediosa, especialmente quando consiste na alteração de algum campo ou propriedade já existente. Imagine, por exemplo, que você precise mudar o nome de um campo da tabela, mas que este campo apareça em consultas, origens de combos, formulários, relatórios e até em código VBA. O trabalho de localização de todas as ocorrências seria demorado, com boa chance de ficar incompleto, gerando erros só perceptíveis no momento da utilização do aplicativo (ou seja, pelo próprio usuário final).

Para simplificar este trabalho, a Microsoft disponibilizou o Property Scanner (Figura 2), um utilitário que busca palavras em todos os objetos do MDB (até mesmo nos módulos) e em suas propriedades internas. Ele é acionado de dentro do próprio MDB, a partir do menu Ferramentas / Suplementos / Property Scanner.


Figura 2. Suplemento Property Scanner

Veja que é possível configurar a busca, especificando as palavras a serem procuradas, selecionando os objetos e as propriedades a serem pesquisados. Todos estes parâmetros podem ser salvos, poupando trabalho em pesquisas futuras.

Se você usar como exemplo o banco de dados Northwind e fizer uma busca pela palavra Inicial, terá como resultado a grade mostrada na Figura 3. O resultado mostra sete campos: tipo e o nome do objeto que teve a ocorrência da palavra, o nome do controle ou campo, o nome e o valor da propriedade, a palavra encontrada (visto que a pesquisa pode ser feita com mais de uma palavra) e o horário da pesquisa. Note que no caso dos módulos, é listada até a linha de código em que a palavra foi encontrada.


Figura 3. Grade de resultados do Property Scanner

As ocorrências encontradas pelo Property Scanner são listadas em uma grade, que funciona como um banco de dados: faz classificação, filtro e localização de registros, exporta para o Excel e aceita Append de novas pesquisas. Se clicar duas vezes na linha, o objeto listado é automaticamente aberto no modo estrutura.

Além de auxiliar na manutenção de aplicativos, o Property Scanner também é muito útil quando precisamos analisar um sistema criado por outro desenvolvedor, e também para elaborar documentação.

Início da páginaInício da página

Custom Startup Wizard

O Custom Startup Wizard (Figura 4) é um utilitário que gera, a partir do MDB original, arquivos MDE ou MDB com opções de inicialização específicas. Imagine, por exemplo, que você tenha finalizado um aplicativo (MDB), e agora precisa distribuí-lo para diferentes usuários, com diferentes configurações (um receberá MDE, outro receberá MDB com determinados menus, outro receberá MDB com uma determinada tela inicial, etc.).

Para resolver a situação, você pode gerar "n" cópias do MDB e ajustar as configurações de cada uma, para depois distribuir. Entretanto, se futuramente precisar atualizar o MDB original, será necessário repetir todas as configurações antes de distribuir a nova versão. Uma alternativa muito melhor é usar o Custom Startup Wizard, definir as propriedades de inicialização de cada MDE/MDB a ser gerado, e salvar tais configurações. Depois, basta executar o arquivo batch para gerar o MDE/MDB. Desta forma, a única preocupação do desenvolvedor será com o MDB original, de desenvolvimento; o resto pode ser gerado no momento da distribuição, com um clique.


Figura 4. Custom Startup Wizard

As seguintes configurações podem ser feitas com o Custom Startup Wizard:

Source file: caminho completo do arquivo de origem.

Decompile and compact: quando selecionada, esta opção executa o comando masaccess.exe /decompile "<arquivo de origem>" /compact.

Destination file: caminho completo do arquivo de destino. A extensão pode ser MDE.

Overwrite destination: se o arquivo de destino já existir, será sobrescrito sem aviso. Se esta opção não estiver assinalada, o usuário decidirá se deseja ou não sobrescrever o arquivo existente.

Remove source code: o código-fonte é removido, ou seja, um arquivo MDE será gerado.

Prevent the Properties dialog from appearing in form view: opção muito útil, faz com que a janela de propriedades não apareça em tempo de execução. Na prática, altera a propriedade "Permitir alterações de design" de todos os formulários para "Somente modo de design".

Resolve any pending change names: abre, salva e fecha todas as tabelas, consultas, formulários e relatórios, resolvendo todas as pendências de alterações de nomes (quando a opção "Rastrear autocorreção de nomes" estiver ativada no banco de dados).

Disable Name Autocorrect: desabilita a opção "Rastrear autocorreção de nomes" no aplicativo. Esta opção é útil apenas durante o desenvolvimento, mas afeta negativamente a performance, portanto deve ser desabilitada antes da distribuição.

Add a digital signature: permite adicionar uma assinatura digital ao projeto, como parte das novas configurações de segurança do Office 2003. A assinatura digital serve como forma de autenticação do código.

Conforme mostra a Figura 5, o Wizard também permite bloquear a tecla Shift, definir as macros AutoExec e AutoKeys e abrir a janela Inicializar do aplicativo, onde são ajustados o título, os menus e barras de ferramentas, o formulário de inicialização, as teclas de atalho, a exibição da Janela Banco de Dados e da barra de status.


Figura 5. Opções de inicialização

Outra funcionalidade interessante do Custom Startup Wizard é a verificação de compatibilidade de código do Access 2003 com o Access XP, a verificação de expressões bloqueadas no modo seguro (Sandbox Mode) e a verificação de possíveis referências quebradas, em que ele verifica se o aplicativo usa alguma biblioteca que não seja padrão do Access ou do Windows.

Não é necessário repetir todos os ajustes cada vez que executar o Wizard. É possível salvar quantos templates quiser e usá-los ao iniciar o suplemento. Melhor que isto, é possível também salvar arquivos batch com as configurações. Com estes arquivos, o MDB/MDE será gerado sem precisar sequer abrir o Wizard.

Início da páginaInício da página

Package Wizard

O Package Wizard é a ferramenta mais interessante e importante do ADE (Figura 6). Com ela, o desenvolvedor pode gerar pacotes de instalação de seu aplicativo e distribuí-lo para máquinas que não têm o MS-Access instalado.


Figura 6. Package Wizard

Conforme foi dito no início do artigo, o ponto fraco dos aplicativos Access é a necessidade do MS-Access instalado na máquina. Entretanto, não é necessário ter o MS-Access completo, basta ter o Access Runtime, que é uma versão light (veja mais adiante a seção "Considerações sobre o Access Runtime"). Para distribuir o Access Runtime junto com um aplicativo, deve ser usado o Package Wizard do ADE.

O Package Wizard tem cinco passos importantes:

Opções de instalação: arquivo de origem, pasta e subpasta de destino, inclusão (ou não) do Access Runtime no pacote de instalação.

Propriedades do atalho (Figura 7): define se será criado atalho no menu Iniciar e/ou no Desktop, e quais os parâmetros do atalho (execução em modo Runtime - /Runtime, abertura em modo exclusivo - /excl, abertura em modo somente leitura - /ro, especificação do nome do usuário a ser logado - /user, da senha - /pwd, da macro a ser executada na abertura do aplicativo - /x, do MDW a ser associado à instância do Access - /wrkgrp, e também qualquer argumento de linha de comando - /cmd).

Inclusão de arquivos adicionais (caminho e nome de origem e destino), chaves de registro (para o Registry do Windows), arquivo de Help e tela de Splash (que é aquele bitmap que aparece na inicialização de um programa).

Propriedades gerais: nome do aplicativo, idioma da instalação, código do produto e da atualização (GUID automático), feature title e feature description (opções para quando o usuário selecionar "instalação customizada"), contrato de licença (EULA) e figuras de fundo para o instalador.


Figura 7. Propriedades do atalho

Assim como o Custom Startup Wizard, o Package Wizard também funciona com templates e arquivos batch (Figura 8), para evitar o retrabalho de configurar tudo. Desta forma, basta configurar uma única vez cada aplicativo e depois gerar pacotes de instalação com um único clique.


Figura 8. Salvando Template e criando arquivo Batch do PW

Início da páginaInício da página

Considerações sobre o Access Runtime

O Access Runtime faz parte do pacote MS-Office Professional, não do VSTO/ADE. Na verdade, é o próprio executável do Access. Sua principal utilidade é ser instalado em máquinas que não tenham o MS-Access completo (retail version), permitindo que o usuário rode front-ends feitos no Access.

O funcionamento do Access Runtime é semelhante ao do Access completo, porém não fornece acesso as ferramentas de design. Como estas são usadas apenas pelo desenvolvedor (muito raramente pelo usuário), o Access Runtime é uma solução muito satisfatória e poderosa para rodar aplicações Access. Recursos que ficam desabilitados:

A janela de banco de dados;

O texto e o ícone da barra de título;

Alguns itens de menu, como Abrir e Salvar (menu Arquivo), e os menus Exibir, Formatar e Ferramentas;

Menus de atalho;

Barras de ferramentas internas (built-in);

Help do Access;

Designers (incluindo o filtro por formulário);

Editor do VBA.

Se quiser testar o Access Runtime numa máquina que tenha o Access completo, abra o aplicativo usando a seguinte linha de comando (sem quebra de linha):

"c:\Arquivos de Programas\Microsoft Office\Office11\MsAccess.exe" /runtime
"c:\TuaPasta\TeuAplicativo.mdb"

O Access Runtime não fornece acesso aos designers e ao editor VBA, portanto o código-fonte não pode ser acessado. Isto passa a falsa impressão de que o fonte está protegido, mas não está. Se alguém copiar o MDB e abri-lo numa máquina com Access completo, poderá acessar normalmente o código-fonte. Para uma proteção efetiva do código-fonte, converta o MDB para o formato MDE antes de distribuí-lo.

Início da páginaInício da página

Instalação do Access 2003 Runtime no cliente

O desenvolvedor não precisa se preocupar em gerenciar a instalação do Access 2003 Runtime em máquinas que já tenham o Access 2003 completo ou o Access 2003 Runtime, pois ele não será instalado duas vezes.

O Access armazena o número de vezes que alguma aplicação tentou instalá-lo, o que é chamado de RefCounting. Exemplo: se o Access runtime já está na máquina e você instala um outro aplicativo com o runtime, o contador soma 1. Se o aplicativo com runtime é removido, o contador diminui 1. Se o RefCounting tiver o valor 1 e a aplicação com runtime for removida, então o Access é removido da máquina.

Portanto, temos a seguinte situação: se distribuirmos para os mesmos usuários mais de uma aplicação com o Access Runtime, não precisaremos nos preocupar se o usuário remover uma ou outra aplicação, pois o RefCounting garantirá que o Access ainda estará na máquina.

Se a distribuição for feita via Internet, incluir o runtime em todos os pacotes será inviável, em razão do tamanho. A dica, neste caso, é distribuir um "Aplicativo X" qualquer, com o runtime, e os demais sem o runtime. Este "Aplicativo X" poderá ser um utilitário de uso geral, como uma ferramenta de backup e compactação, ou qualquer outro sistema útil ao usuário. Lembre-se de que se ele remover o "Aplicativo X", o Access Runtime será desinstalado junto, deixando os demais aplicativos inacessíveis!

Início da páginaInício da página

Licenciamento

O licenciamento do Access Runtime não é complicado. O difícil é conseguir informações a respeito, pois há pouca documentação e muitas dúvidas por parte dos desenvolvedores e também dos usuários. Para esclarecer o funcionamento, segue uma lista das perguntas mais freqüentes, e suas respostas:

P: Tenho o Office Professional original. Posso extrair dele o Access Runtime, gerar um pacote de instalação e distribuí-lo?

R: Não. A única forma legal de distribuir o Access Runtime é com a licença do VSTO (para Access 2003), ou do Office Developer (para versões anteriores).

P: Tenho o VSTO/ADE original. Posso usá-lo para distribuir o Runtime de versões anteriores do Access?

R: Não. O Access Runtime só pode ser distribuído com a versão do Office Developer correspondente.

P: É possível criar uma aplicação baseada no Access Runtime apenas com o Office, sem o VSTO/ADE?

R: Tecnicamente sim, mas será uma aplicação pirata, pois não é permitido distribuir componentes do Office. O ADE, além de ter o utilitário para geração dos pacotes, concede a licença para distribuir o Access Runtime.

P: Quantas cópias do Access Runtime posso distribuir?

R: Não há limite. Você pode distribuir quantas cópias quiser, desde que seja como parte de uma aplicação sua.

P: Quem comprar minha aplicação, devidamente licenciada, poderá revendê-la?

R: Se incluir o Access Runtime, não, pois a licença para distribuí-lo é de quem tem o ADE, e não do revendedor. Obs: no caso de produto (caixinha), não há problema de se vender em lojas, pois o fornecedor continua sendo o desenvolvedor original.

P: Se eu instalar o Access Runtime no cliente, como parte integrante do aplicativo "X", ele poderá rodar no mesmo Access Runtime um aplicativo "Y"?

R: Sim, sem qualquer problema, mesmo que o aplicativo "Y" seja de outro desenvolvedor, sem licença do ADE. O único cuidado a ser tomado é que na versão 2003, ao contrário das versões anteriores, a instalação do Access Runtime fica atrelada ao aplicativo original; assim, se o usuário desinstalar o aplicativo "X", o Access Runtime também será removido.

Início da páginaInício da página

Conclusão

O Access Developer Extensions trás novos e bons recursos, sendo uma ferramenta essencial a quem trabalha profissionalmente com o Access e precisa distribuir aplicativos. Embora alguns dos utilitários sejam novos, assim que começam a integrar o trabalho, tornam-se indispensáveis. Mesmo quem não usa o Access como principal ferramenta de desenvolvimento, pode tirar grande proveito do Access Runtime; ele pode ser usado, por exemplo, para distribuir, sem custo adicional, aplicações de relatórios (o usuário final poderia criar seus próprios relatórios), ou qualquer outra solução de alta produtividade.

Luiz Cláudio C. V. Rocha (luiz@mvps.org) é Microsoft MVP Office System, MCP, autor dos cursos Access Professional Kit e VSTO Kit. Trabalha com desenvolvimento, treinamento e faz palestras sobre a tecnologia MS-Office.

Referências:

http://msdn.microsoft.com/office/technologyinfo/devtools/accessextensions/default.aspx

http://www.lebans.com/

http://www.access.online.pt/colunistasP/Artigos/DistrAccess_LC.htm

http://br.thespoke.net/MyBlog/lccvr/MyBlog.aspx


Início da páginaInício da página