REGISTRO DE DLL/OCX NO WINDOWS 7/8 - SEJA FELIZ
Olá VbmanÃacos,
Este tópico é diferente aos que abri e que recebi tanta ajuda...
No VB6, já tive muitos problemas com registro de dll/ocx no Windows 7, imagina no 8... Entre vários tópicos aqui, vi alguns que relatavam que no 7 tem que registrar dll diferente, 1001 soluções diferentes e desgastantes...
Descobri que, se a dll, ocx's e afins estiverem no mesmo local que o arquivo EXE, elas não precisam ser registradas!!! Pelo menos em 2 testes que fiz, no 7 e no Windows 8, não precisaram...
Então, a partir de agora, coloque o inno para copiar as DLL's do seu projeto no mesmo caminho do .exe, e seja feliz!
Se alguém descobriu que não é bem assim, favor relatar.
Este tópico é diferente aos que abri e que recebi tanta ajuda...
No VB6, já tive muitos problemas com registro de dll/ocx no Windows 7, imagina no 8... Entre vários tópicos aqui, vi alguns que relatavam que no 7 tem que registrar dll diferente, 1001 soluções diferentes e desgastantes...
Descobri que, se a dll, ocx's e afins estiverem no mesmo local que o arquivo EXE, elas não precisam ser registradas!!! Pelo menos em 2 testes que fiz, no 7 e no Windows 8, não precisaram...
Então, a partir de agora, coloque o inno para copiar as DLL's do seu projeto no mesmo caminho do .exe, e seja feliz!
Se alguém descobriu que não é bem assim, favor relatar.
Valeu pela dica ... ate abri um topico sobre dll e ocx ...... achei legal o que vc descobriuuu .....
vou fazer uns teste aqui eaiii volto aqui ....
vou fazer uns teste aqui eaiii volto aqui ....
Bom aqui aconteceu os seguinte no win8 interprise ... login como administrador
Eu abri o vb6, standard EXE .... fui em componentes e a OCX não tava na lista ... ai eu fui no botão procurar e abrir Ocx .... simplemente o ele apareceu na listagem e ainda inseriu na caixa de ferramenta ....
O que aconteceu??? o win8 deve ter registrado o OCX e o vb6 lançou ele na caixa ferramenta .... só pode ser
é PRA QUEM FALOU DE IMCOMPATIBILIDADE .... ESTA PODE SER UMA SAIDA ...... ALELUIIIIA .... ^^
Eu abri o vb6, standard EXE .... fui em componentes e a OCX não tava na lista ... ai eu fui no botão procurar e abrir Ocx .... simplemente o ele apareceu na listagem e ainda inseriu na caixa de ferramenta ....
O que aconteceu??? o win8 deve ter registrado o OCX e o vb6 lançou ele na caixa ferramenta .... só pode ser
é PRA QUEM FALOU DE IMCOMPATIBILIDADE .... ESTA PODE SER UMA SAIDA ...... ALELUIIIIA .... ^^
Outro teste .... Leão10
Sua afirmativa esta correta no meu teste aqui .... eu usei o ocx na mesma pasta do EXE e rodou perfeitamente ..... conforme voce disse .....
PESSOAL DA MODERAÇÃO ...... destaca o topico ai vai!!!!!
Sua afirmativa esta correta no meu teste aqui .... eu usei o ocx na mesma pasta do EXE e rodou perfeitamente ..... conforme voce disse .....
PESSOAL DA MODERAÇÃO ...... destaca o topico ai vai!!!!!
Estava duvidando muito que isto funcionasse com componentes COM, então testei aqui e não funcionou. Criei dois projetos no VB6, um EXE e uma DLL, no Exe coloquei apenas um Form com um botão que chama um método da minha DLL. Compilei e copiei para um PC com Windows 8 que nunca foi instalado nenhum programa feito em VB6 e não funcionou. O Form abre mas quando clico no botão ocorre o que eu esperava, um erro do tipo [Ô]ActiveX component can[ô]t create object[Ô]. Só não testei uma OCX pois por algum motivo bizarro o VB6 que peguei pra testar trava quando tempo criar ela.
Tem um detalhe ai, no VB5/6 quando você vai adicionar referencia ou componentes na toolbox e manda procurar o DLL ou OCX porque ela não está na lista o próprio VB registra ela no PC.
DLLs que se usa com o [Ô]Declare Sub/Function[Ô] funcionam desta forma, simplesmente copiando para a pasta do programa, porém DLLs COM precisam ser registradas para serem usadas por um programa feito em VB5/6 pois elas funcionam de um jeito diferente, o seu programa feito em VB não sabe qual o nome da DLL que ele precisa usar, quando você tenta instanciar uma classe que está em uma DLL é que o VB vai olhar nas informações do registro da dll para saber qual é ela e ai sim carregar ela, independente de onde ela estiver no PC.
O registro de DLLs COM na verdade não registra só o arquivo, mas também todas as classes que esta DLL tem para que os programas do tipo dos feitos com o VB6 possam saber como usar ela.
Tem um detalhe ai, no VB5/6 quando você vai adicionar referencia ou componentes na toolbox e manda procurar o DLL ou OCX porque ela não está na lista o próprio VB registra ela no PC.
DLLs que se usa com o [Ô]Declare Sub/Function[Ô] funcionam desta forma, simplesmente copiando para a pasta do programa, porém DLLs COM precisam ser registradas para serem usadas por um programa feito em VB5/6 pois elas funcionam de um jeito diferente, o seu programa feito em VB não sabe qual o nome da DLL que ele precisa usar, quando você tenta instanciar uma classe que está em uma DLL é que o VB vai olhar nas informações do registro da dll para saber qual é ela e ai sim carregar ela, independente de onde ela estiver no PC.
O registro de DLLs COM na verdade não registra só o arquivo, mas também todas as classes que esta DLL tem para que os programas do tipo dos feitos com o VB6 possam saber como usar ela.
OCELOT,
Por segurança, eu não estou tirando as linhas de registro de DLL do inno setup, creio que não faz mal tentar registrar, mas desde que adotei esta solução, nunca mais tive problemas, e olha que meu projeto tem muita DLL, OCX...
Resolvi um problema um problema com DLL básica, foi um erro referente a dll do DAO, que dava erro ao acessar o banco de dados, depois que coloquei desta forma, nunca mais tive problemas.
Talvez só funciona se combinar registro normal de DLL com as DLL no caminho do .EXE
Eu não sei se é a solução definitiva, mas que está me ajudando demais, está... Acredito que pode ajudar outros também!
Por segurança, eu não estou tirando as linhas de registro de DLL do inno setup, creio que não faz mal tentar registrar, mas desde que adotei esta solução, nunca mais tive problemas, e olha que meu projeto tem muita DLL, OCX...
Resolvi um problema um problema com DLL básica, foi um erro referente a dll do DAO, que dava erro ao acessar o banco de dados, depois que coloquei desta forma, nunca mais tive problemas.
Talvez só funciona se combinar registro normal de DLL com as DLL no caminho do .EXE
Eu não sei se é a solução definitiva, mas que está me ajudando demais, está... Acredito que pode ajudar outros também!
é Ocelot é verdade que com DLL não funciona ..... mas OCX funciona perfeitamente .... inclusive se a ocx não estiver registrada, depois de rodar o EXE parece que o win8 registra ela automaticamente depois de executar o programa, pois eu abri um novo projeto e vi que a ocx apareceu na lista de componentes logo apos a execução do EXE que tinha ela como referencia
conclusão: OCX funciona ate aqui ......... DLL não funcionou
com relação a isso eu não sabiaaaa
conclusão: OCX funciona ate aqui ......... DLL não funcionou
Citação:Tem um detalhe ai, no VB5/6 quando você vai adicionar referencia ou componentes na toolbox e manda procurar o DLL ou OCX porque ela não está na lista o próprio VB registra ela no PC
com relação a isso eu não sabiaaaa
WOLFFIRE,
Uma questão é não precisar registrar a DLL, outra questão é erro de DLL.
A ocx não precisa registrar, a DLL precisa, mas os erros com DLL que tive foram solucionados assim...
Então, tratando-se da questão solução de erro, acho que tá valendo...
Se esta solução for 100% válida, vida longa ao Visual Basic 6!
Uma questão é não precisar registrar a DLL, outra questão é erro de DLL.
A ocx não precisa registrar, a DLL precisa, mas os erros com DLL que tive foram solucionados assim...
Então, tratando-se da questão solução de erro, acho que tá valendo...
Se esta solução for 100% válida, vida longa ao Visual Basic 6!
Nunca tive problema com registro de dll não para o win7 e nem Win8 utilizo o inno.
grato
grato
OCX também precisa registrar. OCX é a mesma coisa que uma dll, só a extensão é que muda.
Fiz até um teste aqui, consegui arrumar um VB aqui, criei um projeto Exe e um ActiveX Control, coloquei apenas um UserControl no ocx, e adicionei ele no form do exe, compilei e copiei os dois arquivos para um Windows 8 que nunca rodou nenhum programa feito em VB.
Quando tento rodar ele diz que o componente ou uma de suas dependências não está corretamente registrado e não abre.
Quem conseguiu fazer funcionar provavelmente já tinha a OCX registrada no PC em outra pasta, onde ele vai simplesmente ignorar o arquivo que está na mesma pasta do Exe, ou então quem fez a instalação e colocou as dlls/ocx na pasta do programa o próprio instalador registrou elas, o que nesse caso funciona, mas não é só copiar, é copiar e registrar ainda, nesse caso não importa onde você coloca os arquivos, o importante é o registro, salvo o caso do sistema operacional ser de 64 bits, nesse caso os arquivos não podem estar na pasta System32 ou no Arquivos de Programas, precisando estar na SysWOW64 e Arquivos de Programas (x86) respectivamente.
Isso de apenas copiar e não registrar simplesmente não faz sentido quando se trata de componentes COM, pelo menos quando se trata de VB
Fiz até um teste aqui, consegui arrumar um VB aqui, criei um projeto Exe e um ActiveX Control, coloquei apenas um UserControl no ocx, e adicionei ele no form do exe, compilei e copiei os dois arquivos para um Windows 8 que nunca rodou nenhum programa feito em VB.
Quando tento rodar ele diz que o componente ou uma de suas dependências não está corretamente registrado e não abre.
Quem conseguiu fazer funcionar provavelmente já tinha a OCX registrada no PC em outra pasta, onde ele vai simplesmente ignorar o arquivo que está na mesma pasta do Exe, ou então quem fez a instalação e colocou as dlls/ocx na pasta do programa o próprio instalador registrou elas, o que nesse caso funciona, mas não é só copiar, é copiar e registrar ainda, nesse caso não importa onde você coloca os arquivos, o importante é o registro, salvo o caso do sistema operacional ser de 64 bits, nesse caso os arquivos não podem estar na pasta System32 ou no Arquivos de Programas, precisando estar na SysWOW64 e Arquivos de Programas (x86) respectivamente.
Isso de apenas copiar e não registrar simplesmente não faz sentido quando se trata de componentes COM, pelo menos quando se trata de VB
Citação:Quem conseguiu fazer funcionar provavelmente já tinha a OCX registrada no PC em outra pasta
Esta afirmação não está correta ..... pois comigo funcionou .... o unico porem que eu estava logado como administrador
Citação:Tem um detalhe ai, no VB5/6 quando você vai adicionar referencia ou componentes na toolbox e manda procurar o DLL ou OCX porque ela não está na lista o próprio VB registra ela no PC
Bom ... isto comigo ja não deu certo ... o vb6 e XP so abre se estiver registrada .... mas no win8 deu certo
Tópico encerrado , respostas não são mais permitidas