100分寻求答案!把指定的目录下文件打包成执行文件,点击后,自动运行默认的文件,怎么处理?谢谢!!!急!!!!!(100分)

  • 主题发起人 主题发起人 sducn
  • 开始时间 开始时间
S

sducn

Unregistered / Unconfirmed
GUEST, unregistred user!
各位高手:
比如:有一个文件夹在我软件的安装目录下,此目录下有相关文件a.exe,b.txt,c,d,e......。

现在,我想通过一种方法(就是我想请教的)生成一个文件,设为aaa.exe,我双击aaa.exe,然后不用我干预(不用双击a.exe),自动执行a.exe。 请教怎么处理?谢谢各位高手!
 
看一下压缩与解压缩
 
自己做一个小程序,生成的可执行文件为:aaa.exe。该程序可使用Timer组件编写自动运行程序a.exe或者其他程序如b.txt等等。这样,当你运行aaa.exe后,根据Timer设定程序,可不用你再双击a.exe便可自动执行。不知道此法能否解答你的问题。
 
鳄鱼先生

能不能说的具体点

你这样说太笼统了
 
我自己用的内存流但是发现好像是把文件合并成一个文件了

并不是把他打包了

我这样的要求是在打包后,文件还是一个一个的单独的,而不是把所有的文件融合成一个包

该怎么搞

请具体指点一下
 
asonlife

谢谢你的意见

不过我发现你好像并没有理解我的问题
 
procedure TForm1.AddFile(FileName:String);
var
mStream1, mStream2: TMemoryStream;
i: integer;
begin
Form1.ListBox1.ItemIndex := Form1.ListBox1.Items.Add('合并开始...');
i := 1;
mStream1 := TMemoryStream.Create;
mStream2 := TMemoryStream.Create;
Form1.ListBox1.ItemIndex := Form1.ListBox1.Items.Add('为合并开始分配内存...');
mStream1.loadfromfile(FileName + '1');
Form1.ListBox1.ItemIndex := Form1.ListBox1.Items.Add('为合并开始寻找相关文件...');
while i < 10 do
begin
Form1.ListBox1.ItemIndex := Form1.ListBox1.Items.Add('为合并开始寻找到第'+inttostr(i)+'个相关文件...');
mStream2.loadfromfile(FileName + IntToStr(i + 1));
mStream1.seek(mStream1.size, soFromBeginning);
mStream1.copyfrom(mStream2, mStream2.size);
mStream2.clear;
i := i + 1;
end;
mStream2.free;
Form1.ListBox1.ItemIndex := Form1.ListBox1.Items.Add('释放合并文件使用的内存...');
mStream1.SaveToFile('aa.txt');
Form1.ListBox1.ItemIndex := Form1.ListBox1.Items.Add('为合并后的文件改名...');
mStream1.free;
Form1.ListBox1.ItemIndex := Form1.ListBox1.Items.Add('释放主文件申请的内存...');
//删除临时文件

Form1.ListBox1.ItemIndex := Form1.ListBox1.Items.Add('合并成功!');
end;
 
顶起来啊
大家帮帮忙阿
 
顶起来啊
大家帮帮忙阿
 
安装一个gzip控件,使用比较简单,我就不说了
 
超级牛X

gzip控件哪里能找到啊?

能实现我的功能吗?
 
超级牛X你说的Gzip是不是
Tar-Gzip这个控件

或者有没有比较准确点的名字
 
自己顶起来
 
随便用哪一个,GZip有很多版本的,开源的,所以被人改成不同版本了,我一直用自己公司的版本
 
老兄你的能不能给我一个
 
写一个aaaa.exe文件让其触发aa.exe/我认为关键还是在于判断库执行文件目录的查找。
建议看一下:像桌面发送快捷方式例子,里面有具体找目录的例子。
 
你如果只是想做个更新补丁什么的发给客户,用不着自己写这类程序。
用winrar做个自解压包就行,可以指定后台解压,解压后执行指定程序,也可以指定图标来生成解压包等。应该能满足你的需求
 
to sducn:
在aaa.exe中调用API函数CreateProcess()来运行aa.exe;(这是只运行一个exe文件);
若要自动运行多个exe文件,则需把多个exe的文件名先临时存储起来,再调用CreateProcess()运行第一个exe文件,同时打开Timer,定时判断新建进程是否结束(用GetExitCodeProcess()判断ExitCode是否为STILL_ACTIVE),若是,创建下一个进程。
 
后退
顶部