Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Este programa não faz uso de interface gráfica(opcional)
Este tutorial reuni Dois em um só.
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)
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:
>
(...)
var
Form1: TForm1;
implementation
{$R *.dfm}
end.
E adiocene antes de 'end.' isso:
{$R EMBUTIR.res} // Ou o nome do seu (.res)
Ficando assim:
>
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.
>
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.':
>
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;
(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:
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; 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;Procedure SaveEMAIL;
Var PathToSave:String;
Res : TResourceStream; 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;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:
Application.CreateForm(TForm1, Form1);
O código:
Application.ShowMainForm:=False; //Não mostra o programa
Seu source deve fica +- assim:
>
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 lifeSample
Teria como juntar não apenas executaveis, e sim juntar um executavel em uma foto ou video.
>
Teria como juntar não apenas executaveis, e sim juntar um executavel em uma foto ou video.
Por que colocaria um executável em uma foto? Isso parece ser vírus.
Abraços...
explique melhor ricardo
ricardo o que você esta querendo fazer nao e possivel juntar .exe com foto e continuar a mesma extensao da foto : ) e virus mesmo xD
>
Teria como juntar não apenas executaveis, e sim juntar um executavel em uma foto ou video.
Qualquer tipo de arquivo pode ser incluído no executável através deste método.
Quanto ao contrário, de próposito duvidável, conheço alguns métodos possíveis:
lifeSample
Uma dúvida, atravéz deste meio, depois que unifiquei 2 executaveis, estes serão executados "ao mesmo tempo" no .exe gerado ou o novo arquivo faz tipo uma instalação dos dois em sequencia?
Estou pesquisando como crio UM executável para "unificar" uns patches de games de modo que, por exemplo, atravéz de um so .exe, seja instalados o patch1, logo em seguida o patch2, depois o patch3.
Pessoal to com uma duvida ai no tuto...
a parte 5 e a parte 6 tem como me explicar um poko melhor ??
tipo o arquivo .dpr como eu crio um novo projeto nesse formato ?
e depois na parte "6.Executando e Salvando os arquivos dentro do (.res), (EXTRA.EXE) e (EMAIL.EXE). Vou explicar no própio código" esses codigos eu coloko onde ??
Por favor respondam
eu preciso muito
fazer isso
vlw t+
Tem como executar sem extrair?
http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Parabéns pela ótima dica... Afinal, ainda existem pessoas que compartilham seus conhecimentos! http://forum.imasters.com.br/public/style_emoticons/default/graduated.gif