GARANTIR DESCONTO

Fórum Instalador #288083

14/07/2005

0

Caros colegas, peguei um sistema instalador aonde ele funciona fazendo a instalação na pasta do usuario q está logado no momento da instalação(HKEY_CURRENT_USER) ou seja se eu entrar com outro usuário na mesma máquina esse outro usuário não tem acesso ao software. Quero mudar isso, ao invés d criar as informações do software na pasta do usuário local estou passando p/pasta HKEY_LOCAL_MACHINE, mas estou tendo problemas com a criação do atalho. a rotina p/criação do atalho é a seguinte:

Reg:= TRegIniFile.Create(´Software\Microsoft\Windows\CurrentVersion\Explorer´);
WFileName := Reg.ReadString(´Shell Folders´, ´Desktop´, ´´) + ´\´ +
Config.ReadString(´ATALHO DO SISTEMA ´ + IntToStr(I), ´NOME´,
´´) + ´.Lnk´;
Reg.Free;

Nesse caso o arquivo TRegIniFile é criado na pasta HKEY_Current_User se eu colocar a seguinte linha: Reg.RootKey := HKEY_LOCAL_MACHINE; o programa compila só q qdo eu executo o cara ocorre o seguinte erro no final da instalação: Acess violation at adress 00453BE2 in module ´instala.exe´.Read of adress 00000008.
Alguem tem ideia d como ajudar??
Desde já agradeço.


Fabiano_aprendiz

Fabiano_aprendiz

Responder

Posts

14/07/2005

Massuda

...se eu colocar a seguinte linha: Reg.RootKey := HKEY_LOCAL_MACHINE; o programa compila só q qdo eu executo o cara ocorre o seguinte erro no final da instalação...
Para alterar HKEY_LOCAL_MACHINE o usuário precisa ser administrador da máquina.


Responder

Gostei + 0

14/07/2005

Fabiano_aprendiz

Mas eu estou fazendo a instalação como administrador, e mesmo assim ocorre o erro.


Responder

Gostei + 0

14/07/2005

Massuda

Olhando melhor o código que você postou...
Reg:= TRegIniFile.Create(´Software\Microsoft\Windows\CurrentVersion\Explorer´); 
WFileName := 
  Reg.ReadString(´Shell Folders´, ´Desktop´, ´´)
  + ´\´ 
  + Config.ReadString(´ATALHO DO SISTEMA ´ + IntToStr(I), ´NOME´, ´´)
  + ´.Lnk´; 
Reg.Free; 
...está apenas montando o nome do arquivo .LNK... O objeto Config existe nesse ponto do código? O objeto Reg está sendo utilizado depois deste ponto do código?


Responder

Gostei + 0

14/07/2005

Fabiano_aprendiz

Respondendo respectivamente, Sim e não. A minha dúvida é a seguinte. Eu quero criar o atalho no menu iniciar e no desktop p/todo o usuario q se logar na máquina e não apenas no usuario q está logado no momento da instalação.


Responder

Gostei + 0

14/07/2005

Massuda

Experimente mudar seu código para...
Reg:= TRegIniFile.Create(´Software\Microsoft\Windows\CurrentVersion\Explorer´); 
WFileName := 
  Reg.ReadString(´Shell Folders´, ´Common Desktop´, ´´) 
  + ´\´ 
  + Config.ReadString(´ATALHO DO SISTEMA ´ + IntToStr(I), ´NOME´, ´´) 
  + ´.Lnk´; 
Reg.Free;
Note que o primeiro ReadString mudou de ´Desktop´ para ´Common Desktop´, que é a área de trabalho comum a todos os usuários; tem também ´Common Startup´, que é o menu Iniciar|Programas|Inicializar comum a todos os usuários.


Responder

Gostei + 0

14/07/2005

Fabiano_aprendiz

Vlw amigo,
Suas dicas me ajudaram bastante, agora falta pouca coisa p/eu acabar.
Obrigado.
[]´s.


Responder

Gostei + 0

14/07/2005

Sergiomatos

Amigo você conhece o InnoSetup?

É um otimo gerador de Instalador e melhor ainda FREE.

Possui os principais recursos para se gerar um instalador de qualidade, inclusive para resolver o seu problema conforme mencionado.

Experimente e bem facil de usar e vem com exemplos pra voce iniciar o desenvolvimento.

Espero ter ajudado.

Te +


Responder

Gostei + 0

15/07/2005

Fabiano_aprendiz

Sim, já ouvi falar mais nunca utilizei, nesse instalador q estou mexendo agora eu não pretendo usa-lo até porq o instalador já está pronto então só estou fazendo umas pequenas alterações, agora em um software futuro eu vou está utilizando p/poder conhecer.
Vlw,
[]´s.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar