INSTALAR DLL AUTOMATICAMENTE

MARIOANDRADE 02/12/2013 20:15:54
#431683
Citação:

:
colega tem como você postar o sript do inno setup que você cria, pode ser alguma coisa nele



Marcelo,

Em anexo o script do programa, porém o problema é o componente que não está presente no win 7 em diante....
MARIOANDRADE 02/12/2013 20:21:31
#431685
Citação:

:
:
:
sobre win7 e win8, lembrando que desta maneira que voce citou, se o SO for 64 bits, a pasta de destino das DLLs e OCXs, não é system32 e sim a syswow64. è pra onde vão os arquivos de 32 bits que trabalham em modo de compatibilidade com 64 bits.
Isso mesmo, neste caso terei que criar duas versões do programa
De onde você tirou a ideia que precisa de duas versões do programa? VB6 só cria programas de 32 bits, mas eles rodam no Windows de 64 bits geralmente sem problemas.

E como já falaram, poste seu script do inno setup, pelo menos a parte referente aos arquivos que estão dando problema, pois é muito provável que o problema esteja nele, já que ele deveria registrar os componentes sem problema nenhum



Já postei o script, e quanto a criar 2 versões, bem, perdoe a minha ignorância pois eu imaginei que teria que criar um com o comando [txt-color=#0000f0]filecopy(origem/destino)[/txt-color] (como sitou o amigo Nilson) para cada pasta, system32 e a syswow64.
NILSONTRES 03/12/2013 01:02:34
#431691
Independentemente, de funcionar ou não no 32 ou 64, Pode ser que vc precise descobrir se o sistema operacional no exato momento é 32 ou 64.
Uma das formas é,
Imports System.IO
if Directory.Exists(c:\Windows\syswow64) then
64
else
32
end if
OCELOT 03/12/2013 08:47:19
#431696
Citação:

Já postei o script, e quanto a criar 2 versões, bem, perdoe a minha ignorância pois eu imaginei que teria que criar um com o comando [txt-color=#0000f0]filecopy(origem/destino)[/txt-color] (como sitou o amigo Nilson) para cada pasta, system32 e a syswow64.


Você não precisa de dois programas pois não vai conseguir copiar arquivos para a pasta System32, o Windows é esperto, ele sabe que programas de 32 bits esperavam que a pasta System32 e a Arquivos de Programas fossem ser usadas por programas que não sabem que existe um sistema operacional de 64 bits, então sempre que um programa de 32 bits rodando em um Windows de 64 bits tenta acessar estas pastas eles são redirecionados para as pastas SysWOW64 e Arquivos de Programas (x86), a não ser que o seu programa diga para o Windows que está ciente de que o SO é de 64 bits e ele mesmo vai usar a pasta correta,o que geralmente não é necessário.

E eu diria que seu script de instalação está errado, você não deveria colocar isso

Source: [Ô]C:\Users\Mario\Dropbox\Files\Dll\*[Ô]; DestDir: [Ô]{app}[Ô]; Flags: ignoreversion recursesubdirs createallsubdirs

O correto seria você colocar cada DLL necessária separadamente, não colocar a flag ignoreversion, pois assim ele instalaria apenas se for uma versão mais nova que a existente, os arquivos que devem ir no System32 deveriam estar com o DestDir: [Ô]{Sys}[Ô] e as DLLs que precisam ser registradas deveriam ter a flag regserver
MARIOANDRADE 03/12/2013 23:47:48
#431724
Citação:

:
Já postei o script, e quanto a criar 2 versões, bem, perdoe a minha ignorância pois eu imaginei que teria que criar um com o comando [txt-color=#0000f0]filecopy(origem/destino)[/txt-color] (como sitou o amigo Nilson) para cada pasta, system32 e a syswow64.
Você não precisa de dois programas pois não vai conseguir copiar arquivos para a pasta System32, o Windows é esperto, ele sabe que programas de 32 bits esperavam que a pasta System32 e a Arquivos de Programas fossem ser usadas por programas que não sabem que existe um sistema operacional de 64 bits, então sempre que um programa de 32 bits rodando em um Windows de 64 bits tenta acessar estas pastas eles são redirecionados para as pastas SysWOW64 e Arquivos de Programas (x86), a não ser que o seu programa diga para o Windows que está ciente de que o SO é de 64 bits e ele mesmo vai usar a pasta correta,o que geralmente não é necessário.

E eu diria que seu script de instalação está errado, você não deveria colocar isso

Source: [Ô]C:UsersMarioDropboxFilesDll*[Ô]; DestDir: [Ô]{app}[Ô]; Flags: ignoreversion recursesubdirs createallsubdirs

O correto seria você colocar cada DLL necessária separadamente, não colocar a flag ignoreversion, pois assim ele instalaria apenas se for uma versão mais nova que a existente, os arquivos que devem ir no System32 deveriam estar com o DestDir: [Ô]{Sys}[Ô] e as DLLs que precisam ser registradas deveriam ter a flag regserver




Essas dll's eu coloco na pasta para que quando o programa seja instalado eu as pegue e jogue na pasta system32 (manualmente) , como disse no inicio do post, eu quero apenas que seja copiado para lá de forma automática, depois rodar o comando para registra-las , esse é o camando que tenho que executar no prompt de comando [Ô]regsvr32 COMDLG32.ocx[Ô] , tenho que fazer isso 4 vezes, uma para cada dll, sei que existe um geito de fazer isso automaticamente, só não sei como.....
MARCELO.TREZE 04/12/2013 08:40:33
#431728
veja bem vou ensinar como você vai criar seu instalador usando o inno setup, e este instalador vai jogar as referidas dll's onde eles tem que ir, e registra-las, veja.

Primeiro para saber quais dll's e ocx's deve-se incluir em seu instalador e quais terá de registrar faça da seguinte forma:

primeiro crieum instalador normalmente utilizando o Package & Deployment Wizard do Visual Studio

para isto caso não saiba vá em INICIAR / MICROSOFT VISUAL STUDIO 6.0 / MICROSOFT VISUAL STUDIO 6.0 TOOLS / PACKAGE & DEPLOYMENT WIZARD, e siga as instruções

Feito isso va na pasta Onde foi criado o instalador ( no meu caso o nome é Package) e abra 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:

Citação:

[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:

Citaçã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 arquivo 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:

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
OCELOT 04/12/2013 08:48:00
#431729
E porque diabos você quer fazer isso se o instalador pode fazer isso por você?

Vou tentar deixar claro aqui, você não vai conseguir fazer isso. Isso dai só vai funcionar se o usuário não tiver o UAC ativado, sendo que ter o UAC ativado deve ser considerado como regra, UAC desativado é exceção e pode ser desconsiderado. Pior ainda é se for um usuário que nem mesmo permissão de administrador tem, o que também deve ser considerado que pode acontecer.

Então ou você faz corretamente através do instalador ou continua fazendo manualmente, pelo seu programa não vai funcionar por padrão a partir do Windows Vista se ele não rodar como administrador, o que provavelmente não deve ser necessário e deve-se considerar como não sendo uma opção.
MARIOANDRADE 04/12/2013 18:12:56
#431764
Marcelo,

Vou tentar aqui e te falo, mas desde já valeu mesmo pela força....
NILSONTRES 04/12/2013 18:23:31
#431765
Caraca MARCELO,
Belo Tutorial !, vai servir até para min, pois desde que migrei para vb.net não crio instaladores, instalo manualmente porque cansei de na época de vb6, ter problemas com instaladores, mas confesso que as vezes faz falta, e eu havia até esquecido como se cria um bom instalador.
E já aproveitando, em que pé esta o Inno Setup ? em qual versão e ou onde Tem algum linque ou local para download ?
Abusei agora ?, rsrsrs.

Abraço.
MARCELO.TREZE 04/12/2013 21:11:42
#431770
O inno setup está na sua versão 5.5.4

você pode encontrar o inno setup, no site http://www.jrsoftware.org/

e aqui é o link direto para baixa-lo

http://www.jrsoftware.org/download.php/is.exe
Página 2 de 3 [23 registro(s)]
Tópico encerrado , respostas não são mais permitidas