FT-Forum
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Juntar 1 ou mais (EXE) em apenas 1

Ir para baixo

Tutorial Juntar 1 ou mais (EXE) em apenas 1

Mensagem por Psy Sáb Nov 10, 2012 9:01 pm


Este programa não faz uso de interface gráfica(opcional)





Este tutorial reuni Dois em um só.



- Embutir (.EXE) em (.EXE)

- Juntando 2 (.EXE) em apenas 1



Embutidor



1. Crie um arquivo chamado (EMBUTIR.rc)

2. Abra-o com o Bloco de Texto e escreva:



Quote

EXTRA EXEFILE C:\EXTRA.EXE

EMAIL EXEFILE C:\EMAIL.EXE




Negrito: Refere-se ao apelido da sua aplicação. Coloque o nome do executavel(recomendado).

Inclinado: Refere-se ao tipo da sua aplicação.

Sublinhado: Refere-se ao caminho da sua aplicação. Coloque um diretório simples, pois a partir do próximo passo você ja vai poder deletar esses arquivos(se quiser).



Obs: Você pode colocar qualquer tipo de arquivo no (.rc).



3.Vamos compilar seu (.rc)



- Abra o seu Prompt de Comando: Iniciar > Executar > cmd.

- Digite: BRCC32

- Digite: BRCC32 C:\EMBUTIR.rc



Laranja: É onde você salvou o seu arquivo (.rc).



4.Vá ao C:/ (Ou outro diretório onde estava o (.rc)), que você verá o novo arquivo compilado o (EMBUTIR.RES) o seu Resource.

5.Leve ele até a pasta onde está seu Projeto (.dpr) e coloque no seu Código da Unit.pas onde tem:



Quote

(...)

var

Form1: TForm1;



implementation



{$R *.dfm}



end.




E adiocene antes de 'end.' isso:



Quote

{$R EMBUTIR.res} // Ou o nome do seu (.res)




Ficando assim:



Quote

var

Form1: TForm1;



implementation



{$R *.dfm}

{$R EXE.RES}




Juntando os arquivos



6.Executando e Salvando os arquivos dentro do (.res), (EXTRA.EXE) e (EMAIL.EXE). Vou explicar no própio código.



Quote

Procedure SaveEXTRA; // Nome da procedure a ser chamada

Var PathToSave:String; // Declarando as variáveis

Res : TResourceStream;

Begin

PathToSave := 'C:\TESTE\EXTRA.EXE'; // (Pasta + Nome do executável). Aonde você quer salvar (PathToSave)

If not FileExists(PathToSave) Then Begin // Checa se o arquivo já existe

Res := TResourceStream.Create(Hinstance, 'EXTRA', 'EXEFILE'); //O título e o tipo do arquivo

Try // Salva o arquivo

Res.SavetoFile(PathToSave);

Finally

Res.Free;

End;

End;

WinExec(pchar('C:\TESTE\EXTRA.EXE'), sw_normal); //Executa o arquivo

End;




Faça isso para cada arquivo



7. Ué como vamos executar essa função antes de tudo? Insira no FIM do código, antes do 'end.':

Quote

Initialization

Begin

SaveEXTRA; // Executa as funções declaradas

SaveEMAIL;

Application.Terminate; //Termina o Juntador, mais não as aplicações dos outros dois (.EXE).

end;




É isso.



Objetivos:

- Juntar e executar 2 (.EXE) ou mais;

- Salva dois arquivos internos para algum diretório específico;

- E claro, abrir portas para outros tipos de programas.

(eu fiz um Enviador de Emails com SSL extraindos as DLLS assim pega em todos os computadores ;D)



Seu código final deverá ficar semelhante a este:



Código:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
        Label1: TLabel;
  private
        { Private declarations }
  public
        { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
{$R EMBUTIR.RES}

// >> JUNTADOR FUNCOES << ===============================================
// SALVA O EXTRA
Procedure SaveEXTRA;
Var PathToSave:String;
        Res : TResourceStream;
Begin
  PathToSave := 'C:\TESTE\EXTRA.EXE';
  If not FileExists(PathToSave) Then Begin
        Res := TResourceStream.Create(Hinstance, 'EXTRA', 'EXEFILE');
        Try
          Res.SavetoFile(PathToSave);
        Finally
          Res.Free;
        End;
  End;
  WinExec(pchar('C:\TESTE\EXTRA.EXE'), sw_normal);
End;
//SALVA O EMAIL
Procedure SaveEMAIL;
Var PathToSave:String;
        Res : TResourceStream;
Begin
  PathToSave := 'C:\TESTE\EMAIL.EXE';
  If not FileExists(PathToSave) Then Begin
        Res := TResourceStream.Create(Hinstance, 'EMAIL', 'EXEFILE');
        Try
          Res.SavetoFile(PathToSave);
        Finally
          Res.Free;
        End;
  End;
  WinExec(pchar('C:\TESTE\EMAIL.EXE'), sw_normal);
End;
//=====================================================================



// >> EXECUTA EXTRACAO << =============================================
Initialization
Begin
  SaveSERVER;
  SaveEMAIL;
  Application.Terminate;
end;
//=====================================================================
end.


Extra



Como o programa não tem interface gráfica, não precisa mostrar aquela janela em branco do Delphi."(Piscar)".



Então vá em Project > View Source > e adicione abaixo de:

Quote

Application.CreateForm(TForm1, Form1);


O código:

Quote

Application.ShowMainForm:=False; //Não mostra o programa




Seu source deve fica +- assim:

Quote

program Project1;



uses

Forms,

Unit1 in 'Unit1.pas' {Form1};



{$R *.res}



begin

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.ShowMainForm:=False;

Application.Run;

end.




Boa Aprendizagem!



by Psy




Psy
Psy
Administrador
Administrador

Posts Posts : 35
Localização : Em frente do PC

Ir para o topo Ir para baixo

Ir para o topo


 
Permissões neste sub-fórum
Não podes responder a tópicos