Ir para conteúdo
Fórum Script Brasil
  • 0

Auto-exclusão


Kristian

Pergunta

13 respostass a esta questão

Posts Recomendados

  • 0

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?

Link para o comentário
Compartilhar em outros sites

  • 0

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..

Link para o comentário
Compartilhar em outros sites

  • 0

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 arquivos

um exemplo vamos supor que logo apos a aplicaçao você tenha um botao finalizar

ai no evento OnClose do form você coloca para executar o bat ai o que ele vai fazer

entrar na pasta dos arquivos

deletar os arquivos de instalaçao

sair

olha um exemplo de como poderia ficar seu .bat

cd prog

delete setup0*.exe

echo #######################

echo # Finalizando instalação #

echo #######################

Pause

echo #######################

echo # Instalação Finalizada #

echo #######################

echo Por Favor pressione uma tecla para sair

Pause

exit

Abraços e espero ter ajudado

Link para o comentário
Compartilhar em outros sites

  • 0

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?

Link para o comentário
Compartilhar em outros sites

  • 0

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?

Link para o comentário
Compartilhar em outros sites

  • 0

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...

Link para o comentário
Compartilhar em outros sites

  • 0

Já matei a charada se mais aguem precisar é mais ou menos assim....

unit MenuPrincipal;

interface

uses

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;

var

pc: PChar;

begin

pc := StrAlloc(MAX_PATH + 1);

GetTempPath(MAX_PATH, pc);

Result := string(pc);

StrDispose(pc);

end;

procedure DelExe;

function GetTmpFileName(ext: string): string;

var

pc: PChar;

begin

pc := StrAlloc(MAX_PATH + 1);

GetTempFileName(PChar(GetTmpDir), 'EZC', 0, pc);

Result := string(pc);

Result := ChangeFileExt(Result, ext);

StrDispose(pc);

end;

var

batchfile: TStringList;

batchname: string;

begin

if (TDRiveType(GetDriveType(PChar('C:\'))) = dtFloppy) or (TDRiveType(GetDriveType(PChar('C:\'))) = dtFixed) then

begin

batchname := GetTmpFileName('.bat');

FileSetAttr(ParamStr(0), 0);

batchfile := TStringList.Create;

with batchfile do

begin

try

Add(':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);

finally

batchfile.Free;

end;

Halt;

end;

end

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

DelExe;

end;

end.

Valeu pela ajuda.....

Link para o comentário
Compartilhar em outros sites

  • 0

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;

 

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...