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:
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:
E adiocene antes de 'end.' isso:
Ficando assim:
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.':
É 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:
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:
Seu source deve fica +- assim:
Autor: lifeSample
- 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:
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:
Código:
(...) var Form1: TForm1; implementation {$R *.dfm} end.
Código:
{$R EMBUTIR.res} // Ou o nome do seu (.res)
Código:
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;
7. Ué como vamos executar essa função antes de tudo? Insira no FIM do código, antes do 'end.':
Código:
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;
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.
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:
Código:
Application.CreateForm(TForm1, Form1);
Código:
Application.ShowMainForm:=False; //Não mostra o programa
Código:
program Project1; uses Forms, Unit1 in 'Unit1.pas' {Form1}; {$R *.res} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.ShowMainForm:=False; Application.Run; end.
Comment