Kristian Postado Maio 18, 2004 Denunciar Share Postado Maio 18, 2004 Olá galera,Ve se é possivel, tenho que executar um programa, que ao final de sua execução ele se auto-exclua. Ou seja se Suicide....É possivel ????? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Corposemalma Postado Maio 18, 2004 Denunciar Share Postado Maio 18, 2004 HUm.. apaga ele mesmo acho que não é possivel, mas você quer apagar uma pasta inteira? Você pode fazer um .bat e chamar ele antes de sair do programa... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Kristian Postado Maio 18, 2004 Autor Denunciar Share Postado Maio 18, 2004 Na verdade este programa é uma espécie de SETUP só que esta dividido em quatro para ficar mais leve para fazer download, é só executar o primeiro e ele por si só executa os demais, só que quando o quarto e ultimo é finalizado, ele precisa excluir os três primeiros e ele própio, só que tava querendo fazer isso sem ter de criar um .bat, nem excluir uma pasta inteira.Entendeu? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Corposemalma Postado Maio 18, 2004 Denunciar Share Postado Maio 18, 2004 São todos eles arquivos .exe? Ou são arquivos compactados?Se for com .exe mesmo, já que você está instalando, não poderia fazer o arquivo instalado apagar esse instalador?Por exemplo: Ele abre um .exe, fecha a instalação, o programinha apaga a instalação e se fecha. Se voce precisar saber onde estão os arquivos(que pasta) pode até criar um .ini temporario para isso.. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bolomaster Postado Maio 18, 2004 Denunciar Share Postado Maio 18, 2004 tipo eu entedi, mas pelo que você esta fazendo da forma que você esta querendo fazer talvez não, imagina só ele não pode excluir um arquivo que está em uso, no caso seria o 4º não poderia ser excluido, mas agora se você fizer um bat, fica mais simples porque ele finaliza a sua aplicação e exclui estes arquivos, e você não precisa excluir a pasta basta excluir os arquivosum exemplo vamos supor que logo apos a aplicaçao você tenha um botao finalizarai no evento OnClose do form você coloca para executar o bat ai o que ele vai fazerentrar na pasta dos arquivosdeletar os arquivos de instalaçao sairolha um exemplo de como poderia ficar seu .batcd progdelete setup0*.exe echo #######################echo # Finalizando instalação #echo #######################Pauseecho #######################echo # Instalação Finalizada #echo #######################echo Por Favor pressione uma tecla para sairPauseexit Abraços e espero ter ajudado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Kristian Postado Maio 18, 2004 Autor Denunciar Share Postado Maio 18, 2004 O problema é que não tenho como mecher no fonte do programa que eu vou instalar, por que é de uma outra empresa, e também não posso fazer em .bat porque vai funcionar da seguinte forma, o nosso cliente entra na pagina, baixa os SETUP's e executa-os só que só Deus sabe onde ele vai baixar os executáveis, ai como eu vou direcionar o .bat para excluir os executáveis?Sera que não tem nenhuma forma de eu liberar e executével da memória, para deleta-lo? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bolomaster Postado Maio 18, 2004 Denunciar Share Postado Maio 18, 2004 cara você fez o setup e o programa, ou você não fez nada ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Kristian Postado Maio 18, 2004 Autor Denunciar Share Postado Maio 18, 2004 Na real é o seguinte....Eu trabalho em uma empresas que representante de um software muito conceituado no mercado nacional, nós atuamos na região de SC e RS, temos uma rede de mais de 250 clientes nesses dois estados, então a cada vez que sai uma nova versão ou mesmo uma nova release, nós precisamos passar cliente por cliente para atualizar o sistema, e não podemos cobrar nada adicional por isso.Então me encarregaram de desenvolver um Setup de atualização que o cliente pudesse fazer a atualização sozinho, porem temos que ter certos itens de segurança, como por exemplo excluir o Setup ao final da atualização para evitar copias ilegais.O Setup já funciona legal só falta configurar alguns desse itens.Sacou? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Corposemalma Postado Maio 18, 2004 Denunciar Share Postado Maio 18, 2004 Durante a própria construção do setup, não existe nenhuma opcao para se auto deletar? Que ferramenta voce está usando, ou qual tipo de setup é? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Kristian Postado Maio 18, 2004 Autor Denunciar Share Postado Maio 18, 2004 O Setup foi totalmente desenvolvido por mim em Delphi7, precisei desenvolver um, pois aqueles que existem por ai não atediam as nossas necessidades...Criei um com caracteristicas própias como por exemplo fazer backup dos dados antes de atualizar o sistema, entre outros... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 azizvc Postado Maio 18, 2004 Denunciar Share Postado Maio 18, 2004 faça igual a receita federal crie um Receitanet para cada ano de declaração.....entendeu? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 s3c Postado Maio 18, 2004 Denunciar Share Postado Maio 18, 2004 Também poderia mover os executáveis p/ lixeira.MoveFile('C:\Temp\Setup.exe','C:\RECYCLED\Setup.exe'); Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Kristian Postado Maio 18, 2004 Autor Denunciar Share Postado Maio 18, 2004 Já matei a charada se mais aguem precisar é mais ou menos assim....unit MenuPrincipal;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, dxCore, dxButton,Inifiles;type TDriveType = (dtUnknown, dtNoDrive, dtFloppy, dtFixed, dtNetwork, dtCDROM, dtRAM); TForm1 = class(TForm) dxButton1: TdxButton; procedure dxButton1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}function GetTmpDir: string; varpc: PChar;beginpc := StrAlloc(MAX_PATH + 1);GetTempPath(MAX_PATH, pc);Result := string(pc);StrDispose(pc);end;procedure DelExe; function GetTmpFileName(ext: string): string;varpc: PChar;beginpc := StrAlloc(MAX_PATH + 1);GetTempFileName(PChar(GetTmpDir), 'EZC', 0, pc);Result := string(pc);Result := ChangeFileExt(Result, ext);StrDispose(pc);end;varbatchfile: TStringList;batchname: string;beginif (TDRiveType(GetDriveType(PChar('C:\'))) = dtFloppy) or (TDRiveType(GetDriveType(PChar('C:\'))) = dtFixed) thenbeginbatchname := GetTmpFileName('.bat');FileSetAttr(ParamStr(0), 0);batchfile := TStringList.Create;with batchfile dobegintryAdd(':Label1');Add('del "' + ParamStr(0) + '"');Add('if Exist "' + ParamStr(0) + '" goto Label1');Add('rmdir "' + ExtractFilePath(ParamStr(0)) + '"');Add('del "' + GetTmpDir + ExtractFileName(ParamStr(0)) + '"');Add('del ' + batchname);SaveToFile(batchname);ChDir(GetTmpDir);WinExec(PChar(batchname), SW_HIDE);finallybatchfile.Free;end;Halt;end;end end;procedure TForm1.Button1Click(Sender: TObject);beginDelExe;end;end.Valeu pela ajuda..... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Clayton Machado Postado Março 27, 2020 Denunciar Share Postado Março 27, 2020 Olá amigos, talvez esse processo já tenha sido resolvido, mas passei pelo mesmo problema recentemente e gostaria de compartilhar uma solução que funcionou nos meus testes. procedure TFteste.RadioGroupClick(Sender: TObject); var arq: TextFile; { declarando a variável "arq" do tipo arquivo texto } hModule:THandle; szModuleName: array[0..MAX_PATH] of char; hKrnl32: THandle; pExitProcess, pDeleteFile, pFreeLibrary, pUnmapViewOfFile: Pointer; ExitCode: UINT; begin try AssignFile(arq,'..\mestre.bat'); // Cria um arquivo .bat com o nome mestre.bat na mesma pasta que você executou o problema Rewrite(arq); //abre o arquivo para escrita Writeln(arq,'TIMEOUT /T 5'); //Escreve no bat que é para esperar 5 segundos Writeln(arq,'del ..\teste.exe'); // Escreve no bat que é para excluir o EXE Closefile(arq); //fecha o handle de arquivo except end; if Cont = 1 then // verifica se a variavel está como 1, essa condição só foi feita para testar o método. begin winexec('..\mestre.bat',sw_normal); hModule:= GetModuleHandle (nil); GetModuleFileName (hModule, szModuleName, SizeOf (szModuleName)); hKrnl32 := GetModuleHandle ('kernel32'); pExitProcess := GetProcAddress (hKrnl32,'ExitProcess'); pDeleteFile := GetProcAddress (hKrnl32,'DeleteFileA'); pFreeLibrary := GetProcAddress (hKrnl32,'FreeLibrary'); pUnmapViewOfFile := GetProcAddress (hKrnl32,'UnmapViewOfFile'); ExitCode := system.ExitCode; if ($80000000 and GetVersion) <> 0 then asm LEA EAX, szModuleName PUSH ExitCode PUSH 0 PUSH EAX PUSH pExitProcess PUSH hModule PUSH pDeleteFile PUSH pFreeLibrary RET end else begin CloseHandle (THANDLE (4)); asm LEA EAX, szModuleName PUSH ExitCode PUSH 0 PUSH EAX PUSH pExitProcess PUSH hModule PUSH pDeleteFile PUSH pUnmapViewOfFile RET end; end; Cont := Cont + 1; end; end; Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Kristian
Olá galera,
Ve se é possivel, tenho que executar um programa, que ao final de sua execução ele se auto-exclua. Ou seja se Suicide....
É possivel ?????
Link para o comentário
Compartilhar em outros sites
13 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.