REGISTRO DE DLL/OCX NO WINDOWS 7/8 - SEJA FELIZ
Como descobri sobre registro de OCX:
Estava num PC de um amigo, quando fui testar um programa, e deu erro na COMMON DIALOG, se não me engano, o arquivo é Cmdlg32.ocx
Pensei que faltava somente o registro, procurei a OCX no micro dele, e não tinha.
Baixei ela da internet, e pensei... sabe de uma coisa, não vou registrar, pra ver uma coisa: coloquei na pasta que fica o EXE e funcionou.
Imaginei que com DLL era a mesma coisa, mas realmente, em testes, é diferente.
Estava num PC de um amigo, quando fui testar um programa, e deu erro na COMMON DIALOG, se não me engano, o arquivo é Cmdlg32.ocx
Pensei que faltava somente o registro, procurei a OCX no micro dele, e não tinha.
Baixei ela da internet, e pensei... sabe de uma coisa, não vou registrar, pra ver uma coisa: coloquei na pasta que fica o EXE e funcionou.
Imaginei que com DLL era a mesma coisa, mas realmente, em testes, é diferente.
Descobri uma coisa aqui.
Testei criar um projeto com apenas 1 botão que abre o common dialog, compilei e copiei para o Windows 8 que nunca rodou nada do VB
Ao tentar executar como esperado da erro por não ter o COMDLG32.OCX, então copiei ele para a mesma pasta do programa e mandei rodar, novamente erro ao executar.
Então testei rodar o programa como administrador, ai sim o programa funcionou, e aparentemente ele automaticamente registrou a OCX, e isso funcionou até mesmo no XP, porém DLL realmente não funciona, só registrando manualmente.
Então apesar de funcionar com OCX ele requer permissão de administrador, o que o programa pode não ter dependendo do caso, principalmente se tiver com o UAC ativado, então ainda é bom registrarem tudo no programa de instalação.
Outra coisa importante para se citar é que ainda é recomendado instalar componentes compartilhados na pasta de sistema (System32 ou SysWOW64 dependendo do OS), pois assim os instaladores podem verificar se precisa ou não instalar caso já tenha uma outra versão mais nova ou mais velha instalada, já que pode-se ter vários programas que usam o mesmo componente instalados no PC mas só se pode ter uma versão da DLL ou OCX registrada.
Testei criar um projeto com apenas 1 botão que abre o common dialog, compilei e copiei para o Windows 8 que nunca rodou nada do VB
Ao tentar executar como esperado da erro por não ter o COMDLG32.OCX, então copiei ele para a mesma pasta do programa e mandei rodar, novamente erro ao executar.
Então testei rodar o programa como administrador, ai sim o programa funcionou, e aparentemente ele automaticamente registrou a OCX, e isso funcionou até mesmo no XP, porém DLL realmente não funciona, só registrando manualmente.
Então apesar de funcionar com OCX ele requer permissão de administrador, o que o programa pode não ter dependendo do caso, principalmente se tiver com o UAC ativado, então ainda é bom registrarem tudo no programa de instalação.
Outra coisa importante para se citar é que ainda é recomendado instalar componentes compartilhados na pasta de sistema (System32 ou SysWOW64 dependendo do OS), pois assim os instaladores podem verificar se precisa ou não instalar caso já tenha uma outra versão mais nova ou mais velha instalada, já que pode-se ter vários programas que usam o mesmo componente instalados no PC mas só se pode ter uma versão da DLL ou OCX registrada.
Obrigado a todos pelas colaborações.
Tópico encerrado , respostas não são mais permitidas