terça-feira, 29 de setembro de 2009

Criando Setup para Crystal Reports utilizando Merge Modules

Quando utilizamos os recursos do Crystal Reports no Visual Studio para desenhar nossos relatórios, precisamos ter a consciência de que haverá a necessidade da instalação dos componentes do Crystal no servidor onde a aplicação irá funcionar.

Nesta postagem eu explicarei como criar um Setup para Crystal utilizando Merge Modules.

Um Merge Module é um tipo especial de banco de dados Windows Installer que contém os componentes necessários para instalar um pacote de software pontual. Um Merge Module não pode ser instalado sozinho, mas deve ser fundido em uma instalação padrão do Windows Installer durante a criação da instalação. Normalmente, um Merge Module ou um conjunto de módulos de intercalação relacionados por dependências, instala um software ou parte de um produto durante a execução. O objetivo dos Merge Modules é permitir que você o adicione independente de módulos de software para múltiplas instalações.

Por exemplo, se há uma série de aplicações que requerem um componente especificamente configurada, seria possível criar um Merge Module que instala e configura o componente. Esse módulo de mesclagem poderia então ser adicionado aos pacotes de instalação de cada produto que exigia que determinado componente. Isso poupa o esforço de ter de adicionar individualmente os arquivos necessários, entradas do Registro, e outros componentes para cada instalação. Ele também poupa tempo se as atualizações são necessárias, pois em vez de atualizar as instalações para as cinco aplicações, apenas o Merge Module é atualizado, e o Setup só precisará ser recompilado.

Alguns Merge Modules podem ser configuráveis para mesclar módulos. Esses módulos de intercalação contém determinados valores que podem ser definidas para especificar como o módulo se comporta em sua instalação. Por exemplo, o autor do Merge Module pode permitir os atributos para serem definidos em componentes, habilitar ou desabilitar componentes isolados, especificar um bitmap para um diálogo, ou especificar como uma ação personalizada é executada. Os Merge Modules são suportados apenas pelo Windows Installer 2.0 ou superior.

Existem uma série de Merge Modules pré-criados para instalar pacotes de software Microsoft, como o MDAC, controles ActiveX MFC, SAPI, DCOM e o Crystal Reports que mostrarei agora.

Primeiro passo é baixar o Merge Module do Crystal Reports. Precisa ser verificada a versão do FrameWork que está sendo utilizada e fazer o download.

O Link a lista de Merge Modules disponíveis para Crystal Reports é:
http://wiki.sdn.sap.com/wiki/pages/viewpage.action?pageId=56787567

No caso deste exemplo, eu estou utilizando o seguinte:
CR 10.2 (VS .NET 2005)
CRRedist2005_x86.msm
WIN XP, WIN 2000, WIN 2003, WIN 7


Após baixar o Merge Modules, vamos montar o Projeto de Setup para Distribuição

1) Inicie o Visual Studio.
2) No Menu File, Selecione New Project.
3) Na Caixa de Diálogo “New Project”, Selecione Projeto Windows Setup ou Projeto Web Setup.



4) No “Solution Explorer”, selecione seu projeto, clique com o botão direito, e selecione Add Merge Module no Menu:
 



5) Adicione CrystalReportsRedist2005_x86.msm ao seu projeto:




Observe que Microsoft_VC80_ATL_x86.msm e policy_8_0_Microsoft_VC80_ATL_x86.msm serão incluídos automaticamente quanto você adicionar CrystalReportsRedist2005_x86.msm ao seu projeto:



6) Faça o Build do seu projeto.
7) Execute o Setup no servidor que hospedará as aplicações.

Como acabamos de ver, é muito simples a preparação do Setup para o Crystal, basta aplicar as dicas acima e testar a aplicação no servidor.

Até a próxima.

Um comentário:

  1. Bom Dia; seguie os passos do seu tutorial, mas o erro a abaixo no windows server System.TypeInitializationException: O inicializador de tipo de 'CrystalDecisions.CrystalReports.Engine.ReportDocument' acionou uma exceção. ---> System.Runtime.InteropServices.COMException (0x80040154): Falha na recuperação de factory de classes COM do componente com CLSID {11BD5260-15B6-412D-80DB-12BB60B8FE50} devido ao seguinte erro: 80040154.

    ResponderExcluir