[DELPHI] Como registrar um executável em
05/02/2019
0
Bom dia.
Estou criando um instalador em Delphi, uso alguns arquivos de recurso, durante a instalação eu baixo alguns arquivos de um FTP e está tudo certo.
Mas gostaria que a aplicação que está sendo instalada apareça em Programas e Recursos do Windows, para que seja possível desinstalar a aplicação por ali. Pelo que pesquisei, preciso registrar as chaves da aplicação em HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Uninstall
Aqui no DevMedia encontrei algumas formas de fazer isso, com o TRegistry e TRegIniFile.
Quando o Rootkey está em HKEY_CURRENT_USER, ambas as formas de registro funcionam, mas quando eu mudo para HKEY_LOCAL_MACHINE, o sistema me retorna um erro
Meu código de teste atual está assim:
Para registrar nesse root, preciso de alguma configuração ou código específico?
Ou se alguém souber indicar o caminho correto para a aplicação aparecer em Programas e Recursos, será muito válido também.
Desde já, obrigado!
Estou criando um instalador em Delphi, uso alguns arquivos de recurso, durante a instalação eu baixo alguns arquivos de um FTP e está tudo certo.
Mas gostaria que a aplicação que está sendo instalada apareça em Programas e Recursos do Windows, para que seja possível desinstalar a aplicação por ali. Pelo que pesquisei, preciso registrar as chaves da aplicação em HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Uninstall
Aqui no DevMedia encontrei algumas formas de fazer isso, com o TRegistry e TRegIniFile.
Quando o Rootkey está em HKEY_CURRENT_USER, ambas as formas de registro funcionam, mas quando eu mudo para HKEY_LOCAL_MACHINE, o sistema me retorna um erro
Failed to set data for ''DisplayName''
.Meu código de teste atual está assim:
procedure TfrmInstalador.AdicionarRegistros; var reg : TRegistry; xArquivo:String; begin xArquivo:='SOFTWARE\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Uninstall\\\\MeuSistema'; reg := TRegistry.Create; reg.RootKey := HKEY_LOCAL_MACHINE; reg.OpenKey(xArquivo,True); reg.WriteString('DisplayName','Teste'); end;
Para registrar nesse root, preciso de alguma configuração ou código específico?
Ou se alguém souber indicar o caminho correto para a aplicação aparecer em Programas e Recursos, será muito válido também.
Desde já, obrigado!
César Carvalho
Curtir tópico
+ 0
Responder
Post mais votado
05/02/2019
Olá Cesar, tudo bem?
Para gravar estes comandos no registro, você tem que ir no menu Project -> Options e na cessão Application procure uma opção que diga que o programa irá executar como administrador.
Porém, só isto não é o suficiente para remover um programa do computador, você precisa de um executável que apague os arquivos. O melhor jeito é criar um instalador com uma ferramenta própria que já faz tudo isso pra você.
Sugiro que você use o inno Setup (http://www.jrsoftware.org/isdl.php) que usa pascal para gerar executável de instalação e como IDE pode usar o Inno Studio (https://www.kymoto.org/).
Ao aprender fazer um instalador com inno Setup você pode selecionar os arquivos, montar os icones no menu iniciar, e muitos outros recursos profissionais para instaladores e ao voce instalar seu programa com InnoSetup ele já cria tudo no painel de controle para você desinstalar depois...
Espero ter ajudado. Um forte abraçoe fique com Deus.
Para gravar estes comandos no registro, você tem que ir no menu Project -> Options e na cessão Application procure uma opção que diga que o programa irá executar como administrador.
Porém, só isto não é o suficiente para remover um programa do computador, você precisa de um executável que apague os arquivos. O melhor jeito é criar um instalador com uma ferramenta própria que já faz tudo isso pra você.
Sugiro que você use o inno Setup (http://www.jrsoftware.org/isdl.php) que usa pascal para gerar executável de instalação e como IDE pode usar o Inno Studio (https://www.kymoto.org/).
Ao aprender fazer um instalador com inno Setup você pode selecionar os arquivos, montar os icones no menu iniciar, e muitos outros recursos profissionais para instaladores e ao voce instalar seu programa com InnoSetup ele já cria tudo no painel de controle para você desinstalar depois...
Espero ter ajudado. Um forte abraçoe fique com Deus.
Hélio Devmedia
Responder
Mais Posts
07/02/2019
César Carvalho
Hélio, boa tarde amigo.
Muito obrigado pela ajuda, deu certo aqui e está show de bola!
A sua dica sobre rodar o instalador como administrador deu certo, tive que fazer um procedimento para criar um arquivo .manifest e depois vincular ele ao 'Project -> Options -> Application -> Custom Manifest', agora a aplicação exige permissão de adm para abrir.
Mas descobri que para que o programa possa aparecer em Programas e Recursos do Windows, não preciso necessariamente registrar em HKEY_LOCAL_MACHINE, em HKEY_CURRENT_USER já funciona, claro que só vai aparecer para o usuário atual, e não para todos os usuários da máquina, mas era exatamente o que eu precisava.
Criei também um desinstalador para apagar os arquivos da pasta de instalação e os registros e pronto. Agora minha aplicação aparece em Programas e Recursos e se eu clicar em Desinstalar/Alterar ele chama esse desinstalador e faz o serviço.
Preferi fazer o meu instalador/desinstalador ao usar uma aplicação do tipo InnoSetup pelo desafio e para ter maior controle sobre o processo.
Dessa forma também, durante as atualizações automáticas, eu consigo manter a versão do sistema sempre atualizada nos registros.
Obrigado novamente, abraço e fique bem!
=]c
Muito obrigado pela ajuda, deu certo aqui e está show de bola!
A sua dica sobre rodar o instalador como administrador deu certo, tive que fazer um procedimento para criar um arquivo .manifest e depois vincular ele ao 'Project -> Options -> Application -> Custom Manifest', agora a aplicação exige permissão de adm para abrir.
Mas descobri que para que o programa possa aparecer em Programas e Recursos do Windows, não preciso necessariamente registrar em HKEY_LOCAL_MACHINE, em HKEY_CURRENT_USER já funciona, claro que só vai aparecer para o usuário atual, e não para todos os usuários da máquina, mas era exatamente o que eu precisava.
Criei também um desinstalador para apagar os arquivos da pasta de instalação e os registros e pronto. Agora minha aplicação aparece em Programas e Recursos e se eu clicar em Desinstalar/Alterar ele chama esse desinstalador e faz o serviço.
Preferi fazer o meu instalador/desinstalador ao usar uma aplicação do tipo InnoSetup pelo desafio e para ter maior controle sobre o processo.
Dessa forma também, durante as atualizações automáticas, eu consigo manter a versão do sistema sempre atualizada nos registros.
Obrigado novamente, abraço e fique bem!
=]c
Responder
08/02/2019
Hélio Devmedia
Que bom que você conseguiu, fico feliz por você...
Só quero lembrar pra não subestimar o InnoSetup porque ele é um gerador de Instalação baseado em linguagem de programação que aceita usar linguagem Pascal (a que deu origem ao Delphi) e na prática quase não há diferença com o Delphi.
O Inno Setup então te permite ter um total controle sobre a instalação do que você quer, e só utilizamos o Inno studio para fazer as partes mais repetitivas como selecionar ícones, arquivos ou criar grupos de instalação.
Desejo a você bons estudos e fique com Deus.
Só quero lembrar pra não subestimar o InnoSetup porque ele é um gerador de Instalação baseado em linguagem de programação que aceita usar linguagem Pascal (a que deu origem ao Delphi) e na prática quase não há diferença com o Delphi.
O Inno Setup então te permite ter um total controle sobre a instalação do que você quer, e só utilizamos o Inno studio para fazer as partes mais repetitivas como selecionar ícones, arquivos ou criar grupos de instalação.
Desejo a você bons estudos e fique com Deus.
Responder
Clique aqui para fazer login e interagir na Comunidade :)