USANDO O INNO SETUP 5
Prezados, como de hábito, recorro aos bons préstimos de vocês, para tentar solucionar um problema que aconteceu durante a instalação de um aplicativo (criado em VB5 e empacotado pelo Inno Setup 5). Com o VB5 instalado na máquina, tudo funciona OK: o aplicativo empacotado e instalado roda normalmente. Porém, como só tenho um pc e queria testar o aplicativo criado, desinstalei o VB.
Ao clicar no aplicativo instalado, surgiu a msg abaixo, não rodando a aplicação:
Component Crystl32.OCX not correctly registered: file is missing or invalid
Component DBGrid32.OCX not correctly .... ....
Durante o desenvolvimento do project usei relatórios feitos pelo Crystal 4.6 e controles DbGrid.
Assim, gerei novo setup pelo Inno, agora incluindo esses dois arquivos diretamente de um antigo setup que tinha no PC, feito pelo Wizard do VB.
Mas continua dando o mesmo erro.
Qual seria o correto procedimento para registrar essas OCX[ô]s? Teria de editar o registro? Se afirmativo, qual o endereço a ser alterado?
Verifica se essas OCX também não possuem DLLs.
Crystl32.DLL
Crystl32.DLL
Olá, Ash...
A msg de erro ao tentar abrir o aplicativo (instalado através do setup gerado pelo Inno Setup) aponta exatamente para a falta dessas
bibliotecas tipo OCX (DBGrid32.ocx e Crystl32.ocx)... Tentei juntar esses dois arquivos, quando o Inno pede os arquivos que acompanham
o EXE, mas não adiantou... (e, como expliquei acima, esse problema só ocorre porque resolvi desinstalar o Visual Basic, para checar se a
aplicação rodaria normalmente, sem acessar quaisquer recursos do VB...).
Somente para teste, gerei outro Setup de instalação, desta feita usando um antigo project que desenvolvi, sobre acesso a declarações de
imposto de renda. Como não há o objeto DBGrid ou Crystall Reports no project, abriu normalmente na pasta C:\Arquivos de programas....
Se alguém puder apontar para alguma diretiva que corrija o erro, agradeço from the bottom of my heart...
A msg de erro ao tentar abrir o aplicativo (instalado através do setup gerado pelo Inno Setup) aponta exatamente para a falta dessas
bibliotecas tipo OCX (DBGrid32.ocx e Crystl32.ocx)... Tentei juntar esses dois arquivos, quando o Inno pede os arquivos que acompanham
o EXE, mas não adiantou... (e, como expliquei acima, esse problema só ocorre porque resolvi desinstalar o Visual Basic, para checar se a
aplicação rodaria normalmente, sem acessar quaisquer recursos do VB...).
Somente para teste, gerei outro Setup de instalação, desta feita usando um antigo project que desenvolvi, sobre acesso a declarações de
imposto de renda. Como não há o objeto DBGrid ou Crystall Reports no project, abriu normalmente na pasta C:\Arquivos de programas....
Se alguém puder apontar para alguma diretiva que corrija o erro, agradeço from the bottom of my heart...
Colega vamos lá...
1- reinstala seu VB e tudo que ele usa
2- testa seu sistema para ver se está funcionando corretamente com o vb
3- gera um instalador com o PDW (wizard de criação do instalador do próprio VB)
4- vá na pasta de suporte que ele cria e lá terá todas as dependências necessárias.
5- abra o inno setup e inclua todas dependências, pedindo para serem registradas na pasta SYS do windows
6- gera o instalador do Inno
7- baixa o Virtual PC 2007 (na versão correta do seu windows, tem para XP e para Vista/Seven)
8- instala o Virtual PC, cria uma máquina virtual com o windows que quiser testar
9- instala o windows somente nesta máquina virtual
10- agora usa o instalador feito pelo inno nessa máquina virtual e veja se irá funcionar, se não funcionar, estará faltando algo ou nao configurado corretamente o registro.
Notas:
- sempre use máquinas virtuais para testar instaladores, é o melhor caminho e pode ter uma para cada versão de windows e testar em todos
- ao instalar seu programa é preciso que o usuário seja o administrador, do XP para frente, além de desativar UAC, DEP e Firewall se necessário. Isso pode impedir a instalação correta de seus aplicativos.
Boa sorte.
1- reinstala seu VB e tudo que ele usa
2- testa seu sistema para ver se está funcionando corretamente com o vb
3- gera um instalador com o PDW (wizard de criação do instalador do próprio VB)
4- vá na pasta de suporte que ele cria e lá terá todas as dependências necessárias.
5- abra o inno setup e inclua todas dependências, pedindo para serem registradas na pasta SYS do windows
6- gera o instalador do Inno
7- baixa o Virtual PC 2007 (na versão correta do seu windows, tem para XP e para Vista/Seven)
8- instala o Virtual PC, cria uma máquina virtual com o windows que quiser testar
9- instala o windows somente nesta máquina virtual
10- agora usa o instalador feito pelo inno nessa máquina virtual e veja se irá funcionar, se não funcionar, estará faltando algo ou nao configurado corretamente o registro.
Notas:
- sempre use máquinas virtuais para testar instaladores, é o melhor caminho e pode ter uma para cada versão de windows e testar em todos
- ao instalar seu programa é preciso que o usuário seja o administrador, do XP para frente, além de desativar UAC, DEP e Firewall se necessário. Isso pode impedir a instalação correta de seus aplicativos.
Boa sorte.
Valeu Herrera...
Vou fazer conforme vc falou (máquina virtual), para ter acesso a um [Ô]2º[Ô] PC onde possa testar a aplicação...
Meu VB não está gerando o setup de instalação (por alguma razão, o [Ô]Setup Wizard[Ô] ficou [ô]bichado[ô]: a cada
tentativa de abrÃ-lo, surge um [Ô]unexpected error[Ô] e o wizard nem carrega. Já formatei a máquina três vezes
e reintroduzi o VB, mas sempre vem com o mesmo erro)... Por isso, migrei para o Inno.
De qualquer maneira, tenho alguns arquivos de instalação gerados pelo VB: vou copiar dalà as bibliotecas e
proceder conforme sua orientação (pasta Sys)...
Francisco.
Herrera, no Ãtem 5, vc disse para incluir todas as dependências, pedindo para serem registradas na pasta SYS do Windows.
Utilizando o Script Wizard do próprio Inno, não vi essa opção. Na página [Ô]Application Files[Ô], opção [Ô]Application main executable
file[Ô], pelo [Ô]browse[Ô] acesso a pasta onde está o arquivo .EXE (pasta do projeto, onde ficam os forms, reports, modules, etc.) e
o seleciono.
A seguir, no quatro [Ô]Other application files[Ô], clicando no browse, sou direcionado para a pasta onde busquei o arquivo
executável. Seleciono todos os arquivos, exceto o executável. Não há a opção de salvar determinado arquivo na pasta SYS...
Bem, a partir daÃ, incluo os arquivos e compilo. A seguir, instalo o aplicativo, que roda OK, exceto no caso em que falta algum
arquivo importante no Windows (eis a msg que aparece, quando tento acessar o aplicativo recém-instalado:
[Ô]Erro: component [ô]Crystl32.OCX[ô] not correctly registered: files is missing or invalid.[Ô]
Isso ocorre porque, no project que criei, há alguns relatórios feitos no Crystall Reports...
Acho que, na verdade, não estou sabendo como registrar esse arquivo de dependência no SYS (simplesmente copiando o
arquivo lá não funciona)....
Há alguma maneira de fazer esse registro manualmente? (No registro do Windows)? Ou devo editar alguma linha do script?
Francisco.
Utilizando o Script Wizard do próprio Inno, não vi essa opção. Na página [Ô]Application Files[Ô], opção [Ô]Application main executable
file[Ô], pelo [Ô]browse[Ô] acesso a pasta onde está o arquivo .EXE (pasta do projeto, onde ficam os forms, reports, modules, etc.) e
o seleciono.
A seguir, no quatro [Ô]Other application files[Ô], clicando no browse, sou direcionado para a pasta onde busquei o arquivo
executável. Seleciono todos os arquivos, exceto o executável. Não há a opção de salvar determinado arquivo na pasta SYS...
Bem, a partir daÃ, incluo os arquivos e compilo. A seguir, instalo o aplicativo, que roda OK, exceto no caso em que falta algum
arquivo importante no Windows (eis a msg que aparece, quando tento acessar o aplicativo recém-instalado:
[Ô]Erro: component [ô]Crystl32.OCX[ô] not correctly registered: files is missing or invalid.[Ô]
Isso ocorre porque, no project que criei, há alguns relatórios feitos no Crystall Reports...
Acho que, na verdade, não estou sabendo como registrar esse arquivo de dependência no SYS (simplesmente copiando o
arquivo lá não funciona)....
Há alguma maneira de fazer esse registro manualmente? (No registro do Windows)? Ou devo editar alguma linha do script?
Francisco.
Pessoal, não tem quem possa ajudar?
Já vasculhei no Google à cata de uma solução, e achei esta:
1- Copiar os arquivos dbGrid32.ocx e crystl32.ocx na pasta C:\Windows\System32.
2- Em <Iniciar>, <Executar>, digitar:
regsvr32 dbgrid32.ocx
regsvr32 crystl32.ocx
Em ambos os casos, dá a segte. msg:
Falha em Loadlibrary ([Ô]dbgrid32.ocx[Ô]). Não foi possÃvel encontrar o módulo especificado
(a mesma msg quanto a crystl32.ocx).
Continuo sem registrar as ocx[ô]s e sem poder rodar, portanto, o aplicativo que contém alguma delas...
Já vasculhei no Google à cata de uma solução, e achei esta:
1- Copiar os arquivos dbGrid32.ocx e crystl32.ocx na pasta C:\Windows\System32.
2- Em <Iniciar>, <Executar>, digitar:
regsvr32 dbgrid32.ocx
regsvr32 crystl32.ocx
Em ambos os casos, dá a segte. msg:
Falha em Loadlibrary ([Ô]dbgrid32.ocx[Ô]). Não foi possÃvel encontrar o módulo especificado
(a mesma msg quanto a crystl32.ocx).
Continuo sem registrar as ocx[ô]s e sem poder rodar, portanto, o aplicativo que contém alguma delas...
Desculpem a insistência, mas [ô]tá danado[ô]... Tô ficando meio maluco de tanto tentar
registrar essas m... de ocx no system32, sem êxito. By the way, estou logado
como administrador. Já tentei inclusive desabilitar o Firewall do Windows e também
o Avast, enquanto tentei registrar ocx...
Sempre tem alguém que possa ter passado por uma situação dessas, conseguido
resolver e, quem sabe, compartilhar com quem não conseguiu....
Veja como eu faço:
Pessoal vou explicar aqui como fazer para saber quais OCX's e DLL's possuem o programa e depois registrar estas com o inno setup
Primeiro para saber quais dll's e ocx's devo incluir em meu instalador e quais tenho de registrar eu faço da seguinte forma, em outro tópico deste forum peguei a seguinte dica:
primeiro crio um instalador normalmente utilizando o Package & Deployment Wizard do Visual Studio
Feito isso vou na pasta Onde foi criado o instalador ( no meu caso o nome é Package) e abro o arquivo setup.lst com o Word ou até com bloco de notas, neste arquivo contem a lista de todas as dll's que seu programa vai precisar e quais devem ser registradas.
eis um exemplo retirado do setup.lst do instalador que criei:
[Bootstrap Files]
File1=@VB6STKIT.DLL,$(WinSysPathSysFile),,,7/15/00 12:00:00 AM,101888,6.0.84.50
File2=@COMCAT.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,5/31/98 12:00:00 AM,22288,4.71.1460.1
File3=@STDOLE2.TLB,$(WinSysPathSysFile),$(TLBRegister),,6/3/99 12:00:00 AM,17920,2.40.4275.1
File4=@ASYCFILT.DLL,$(WinSysPathSysFile),,,3/8/99 12:00:00 AM,147728,2.40.4275.1
File5=@OLEPRO32.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,3/8/99 12:00:00 AM,164112,5.0.4275.1
File6=@OLEAUT32.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,4/12/00 12:00:00 AM,598288,2.40.4275.1
File7=@msvbvm60.dll,$(WinSysPathSysFile),$(DLLSelfRegister),,2/23/04 12:00:00 AM,1386496,6.0.97.82
imprima o conteudo para depois você poder fazer as alterações no seu instalador Inno Setup
Agora você inicializa seu instaldor Inno Setup , e ao chegar na parte chamada Application Files clique no botão Add File(s)... vá até a pasta onde você criou o instalador usando o PDW e abra a pasta Support, nela estão todas as DLL's e OCX's necessárias para seu programa, selecione selecione-as e clique em abrir, ai basta você continuar a criar seu instalador até o final, ao terminar ele vai perguntar se você deseja compilar o programa e você vai selecionar não.
A seguir ira aparecer uma lista com os arquivos que foram selecionados, abaixo coloquei apenas quatro linhas para simplificar a explicação:
Source: [Ô]C:\Ultimo Instalador esteinstalador\Support\ST6UNST.EXE[Ô]; DestDir: [Ô]{app}[Ô]; Flags: ignoreversion
Source: [Ô]C:\Ultimo Instalador esteinstalador\Support\STDOLE2.TLB[Ô]; DestDir: [Ô]{app}[Ô]; Flags: ignoreversion
Source: [Ô]C:\Ultimo Instalador esteinstalador\Support\TABCTL32.OCX[Ô]; DestDir: [Ô]{app}[Ô]; Flags: ignoreversion
Source: [Ô]C:\Ultimo Instalador esteinstalador\Support\OLEPRO32.DLL[Ô]; DestDir: [Ô]{app}[Ô]; Flags: ignoreversion
bom agora vem a parte mais divertida, que é digitar veja as alterações que devem ser feitas nestas linhas
voltando lá em cima onde eu imprimi as linhas do aqruivo setup.lst, onde estiver escrito DLLSelfRegister é proque esta dll deve ser registrada.
então você vai alterar a seguinte linha de:
Source: [Ô]C:\Ultimo Instalador esteinstalador\Support\OLEPRO32.DLL[Ô]; DestDir: [Ô]{app}[Ô]; Flags: ignoreversion
para: [ô]trate as linhas como uma só
Source: [Ô]C:\Ultimo Instalador esteinstalador\Support\OLEPRO32.DLL[Ô]; DestDir: [Ô]{sys}[Ô]; CopyMode: alwaysskipifsameorolder; Flags: restartreplace uninsneveruninstall sharedfile regserver
e assim para todas as dll's que possuem DLLSelfRegister
Agora para os arquivos com extensão .TLB deve ser feito da seguinte forma
de:
Source: [Ô]C:\Ultimo Instalador esteinstalador\Support\STDOLE2.TLB[Ô]; DestDir: [Ô]{app}[Ô]; Flags: ignoreversion
para:
Source: [Ô]C:\Ultimo Instalador esteinstalador\Support\STDOLE2.TLB[Ô]; DestDir: [Ô]{sys}[Ô]; CopyMode: alwaysskipifsameorolder; Flags: restartreplace uninsneveruninstall sharedfile regtypelib
e pronto suas dll's serão registradas ao se instalar seu programa
Apenas algumas Observações no PDW onde estãomarcadas como {WinSysPathSysFile} no Inno setup deve estar como DestDir: [Ô]{sys}[Ô] .
agora para ocx este deve ser o código
Source: [Ô]C:\Ultimo Instalador esteinstalador\Support\TABCTL32.OCX[Ô]; DestDir: [Ô]{sys}[Ô]; CopyMode: alwaysskipifsameorolder; Flags: restartreplace sharedfile regserver
e assim por diante
Espero que eu tenha esclarecido suas duvidas, pois se vocês seguirem estes passos, o problema quanto a instaladores, acabará, lembrando que estou ensinando a localizar as dll's e Ocx's e registrar estas, e não como utilizar o inno setup.
até
Pessoal vou explicar aqui como fazer para saber quais OCX's e DLL's possuem o programa e depois registrar estas com o inno setup
Primeiro para saber quais dll's e ocx's devo incluir em meu instalador e quais tenho de registrar eu faço da seguinte forma, em outro tópico deste forum peguei a seguinte dica:
primeiro crio um instalador normalmente utilizando o Package & Deployment Wizard do Visual Studio
Feito isso vou na pasta Onde foi criado o instalador ( no meu caso o nome é Package) e abro o arquivo setup.lst com o Word ou até com bloco de notas, neste arquivo contem a lista de todas as dll's que seu programa vai precisar e quais devem ser registradas.
eis um exemplo retirado do setup.lst do instalador que criei:
[Bootstrap Files]
File1=@VB6STKIT.DLL,$(WinSysPathSysFile),,,7/15/00 12:00:00 AM,101888,6.0.84.50
File2=@COMCAT.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,5/31/98 12:00:00 AM,22288,4.71.1460.1
File3=@STDOLE2.TLB,$(WinSysPathSysFile),$(TLBRegister),,6/3/99 12:00:00 AM,17920,2.40.4275.1
File4=@ASYCFILT.DLL,$(WinSysPathSysFile),,,3/8/99 12:00:00 AM,147728,2.40.4275.1
File5=@OLEPRO32.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,3/8/99 12:00:00 AM,164112,5.0.4275.1
File6=@OLEAUT32.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,4/12/00 12:00:00 AM,598288,2.40.4275.1
File7=@msvbvm60.dll,$(WinSysPathSysFile),$(DLLSelfRegister),,2/23/04 12:00:00 AM,1386496,6.0.97.82
imprima o conteudo para depois você poder fazer as alterações no seu instalador Inno Setup
Agora você inicializa seu instaldor Inno Setup , e ao chegar na parte chamada Application Files clique no botão Add File(s)... vá até a pasta onde você criou o instalador usando o PDW e abra a pasta Support, nela estão todas as DLL's e OCX's necessárias para seu programa, selecione selecione-as e clique em abrir, ai basta você continuar a criar seu instalador até o final, ao terminar ele vai perguntar se você deseja compilar o programa e você vai selecionar não.
A seguir ira aparecer uma lista com os arquivos que foram selecionados, abaixo coloquei apenas quatro linhas para simplificar a explicação:
Source: [Ô]C:\Ultimo Instalador esteinstalador\Support\ST6UNST.EXE[Ô]; DestDir: [Ô]{app}[Ô]; Flags: ignoreversion
Source: [Ô]C:\Ultimo Instalador esteinstalador\Support\STDOLE2.TLB[Ô]; DestDir: [Ô]{app}[Ô]; Flags: ignoreversion
Source: [Ô]C:\Ultimo Instalador esteinstalador\Support\TABCTL32.OCX[Ô]; DestDir: [Ô]{app}[Ô]; Flags: ignoreversion
Source: [Ô]C:\Ultimo Instalador esteinstalador\Support\OLEPRO32.DLL[Ô]; DestDir: [Ô]{app}[Ô]; Flags: ignoreversion
bom agora vem a parte mais divertida, que é digitar veja as alterações que devem ser feitas nestas linhas
voltando lá em cima onde eu imprimi as linhas do aqruivo setup.lst, onde estiver escrito DLLSelfRegister é proque esta dll deve ser registrada.
então você vai alterar a seguinte linha de:
Source: [Ô]C:\Ultimo Instalador esteinstalador\Support\OLEPRO32.DLL[Ô]; DestDir: [Ô]{app}[Ô]; Flags: ignoreversion
para: [ô]trate as linhas como uma só
Source: [Ô]C:\Ultimo Instalador esteinstalador\Support\OLEPRO32.DLL[Ô]; DestDir: [Ô]{sys}[Ô]; CopyMode: alwaysskipifsameorolder; Flags: restartreplace uninsneveruninstall sharedfile regserver
e assim para todas as dll's que possuem DLLSelfRegister
Agora para os arquivos com extensão .TLB deve ser feito da seguinte forma
de:
Source: [Ô]C:\Ultimo Instalador esteinstalador\Support\STDOLE2.TLB[Ô]; DestDir: [Ô]{app}[Ô]; Flags: ignoreversion
para:
Source: [Ô]C:\Ultimo Instalador esteinstalador\Support\STDOLE2.TLB[Ô]; DestDir: [Ô]{sys}[Ô]; CopyMode: alwaysskipifsameorolder; Flags: restartreplace uninsneveruninstall sharedfile regtypelib
e pronto suas dll's serão registradas ao se instalar seu programa
Apenas algumas Observações no PDW onde estãomarcadas como {WinSysPathSysFile} no Inno setup deve estar como DestDir: [Ô]{sys}[Ô] .
agora para ocx este deve ser o código
Source: [Ô]C:\Ultimo Instalador esteinstalador\Support\TABCTL32.OCX[Ô]; DestDir: [Ô]{sys}[Ô]; CopyMode: alwaysskipifsameorolder; Flags: restartreplace sharedfile regserver
e assim por diante
Espero que eu tenha esclarecido suas duvidas, pois se vocês seguirem estes passos, o problema quanto a instaladores, acabará, lembrando que estou ensinando a localizar as dll's e Ocx's e registrar estas, e não como utilizar o inno setup.
até
xykovieira desculpe a demora, só agora entrei aqui.
Sobre registrar todas as dependência (item 5) são todos os arquivos OCX e DLL que devem ser registrados na pasta SYSTEM ou SYSTEM32 (depende da versão do windows).
Tem que ver que algumas dependências são incompatÃveis com alguns windows, inclusive 32bits com 64btis.
Outra coisa, há dependências que você tem de usar o instalador do desenvolvedor, não pode copiar os arquivos da sua máquina e registrar lá, ex: MDAC, Jet, etc....
Sobre o Cristal eu não trabalho com ele, mas com o Visual ReportX, achei muito melhor em função dos constantes problemas relatados, mas....
Pelo que já li, você não é o único com esse problema, parece que há uma [Ô]Legião[Ô] grande também. Há coisas a verificar, tem muito material na web sobre o assunto que pode ter n causas, então vou tentar dar uma [Ô]Luz[Ô] para você.
Alguns problemas possÃveis:
- Não está distribuindo todas as dependências necessárias do Cristal
- Algumas Dlls não devem ser registradas, só copiadas para a pasta de destino
- há versões do cristal incompatÃveis com certas versões do windows, tem que checar cada caso (cristal usado x windows instalado)
Desculpe não poder ajudar mais.
Sobre registrar todas as dependência (item 5) são todos os arquivos OCX e DLL que devem ser registrados na pasta SYSTEM ou SYSTEM32 (depende da versão do windows).
Tem que ver que algumas dependências são incompatÃveis com alguns windows, inclusive 32bits com 64btis.
Outra coisa, há dependências que você tem de usar o instalador do desenvolvedor, não pode copiar os arquivos da sua máquina e registrar lá, ex: MDAC, Jet, etc....
Sobre o Cristal eu não trabalho com ele, mas com o Visual ReportX, achei muito melhor em função dos constantes problemas relatados, mas....
Pelo que já li, você não é o único com esse problema, parece que há uma [Ô]Legião[Ô] grande também. Há coisas a verificar, tem muito material na web sobre o assunto que pode ter n causas, então vou tentar dar uma [Ô]Luz[Ô] para você.
Alguns problemas possÃveis:
- Não está distribuindo todas as dependências necessárias do Cristal
- Algumas Dlls não devem ser registradas, só copiadas para a pasta de destino
- há versões do cristal incompatÃveis com certas versões do windows, tem que checar cada caso (cristal usado x windows instalado)
Desculpe não poder ajudar mais.
Tópico encerrado , respostas não são mais permitidas