怎样使Delphi自动调用压缩程序来压缩编译出来的程序?(100分)

  • 主题发起人 主题发起人 lhc4000
  • 开始时间 开始时间
L

lhc4000

Unregistered / Unconfirmed
GUEST, unregistred user!
总觉得Delphi编译出来的东西有点大,平时总爱用UPX等压缩一下才交付使用,觉得有点麻烦,请问:
怎样使Delphi自动调用压缩程序来压缩编译出来的程序?
 
自己写个程序
 
灰鸽子的代码里面好象就有 楼主可去找找
 
我不是要写一个压缩程序,只是让Delphi在编译结束时“顺便”调用压缩程序来压缩一下
 
在主程序中调用winrar程序,输入参数
CompressFileName:=Copy(GetToday,5,4)+Copy(TimeStr, 1, 2)+Copy(TimeStr, 4, 2);
if FileExists(AddPathAndName(CompressFilePath,CompressFileName)+'.rar') then
DeleteFile(AddPathAndName(CompressFilePath,CompressFileName)+'.rar');
// showmessage(AddPathAndName(CompressToolPath,'rar')+' a '+AddPathAndName(CompressFilePath,CompressFileName)+' '+
// AddPathAndName(TempPath,'*.dbf'));
if ShellOpenFileEx(AddPathAndName(CompressToolPath,'rar'),' a -ep '+AddPathAndName(CompressFilePath,CompressFileName)+' '+
AddPathAndName(TempPath,'*.dbf')) then Memo.Lines.add('压缩成功!')
else Memo.Lines.add('压缩失败!');
 
如果是rar参考一下帮助里面的命令行语法
 
你可以跟CNAPCK提提!
 
我不是要压缩成RAR文件, 是用UPX等压缩一下可执行文件呀
 
我想,这个问题基本上不可能。
 
呵呵,有个问题楼主没考虑到,UPX压缩后你怎么调试啊?DELPHI还能在代码中设断点跟踪吗?
如果你不是每天都要给客户更新版本的话,还是手动下算了,毕竟就几秒种的事情。
 
没必要每次编译都要压缩一下吧,发行时压缩下不就行了嘛
 
我觉得用UPX没啥必的,用UPX后,虽然EXE变小了, 但是再打包的时候就压缩不了了,何必多次一举呢,
 
使用TOOLSAPI也许可以做到
 
if ExtractRes('RCDUPX', 'UPXKMM', 'UPX.EXE') then
begin
ShellExecute(0, nil, 'upx.exe', PChar('"' +你的程序文件 + '"'), nil, SW_MINIMIZE);
Sleep(1000);
DeleteFile(ExtractFilePath(ParamStr(0))+'upx.exe');
end;
 
用vclzip 多灵活。
 
to nicai_wgl: 呵呵,这个我还真的没考虑过

to majbb: 你给的代码应该放在什么地方用呀?

to wiseinfo: 我希望使用者使用的是体积尽量小的软件,虽然现在硬盘已经很便宜了,但我依然改不了这个习惯(我不知道体积小的软件启动会不会快点,但我的确对目前软件越做越大的必要性表示怀疑),所以我希望从技术角度探讨解决办法。
 
写个delphi插件,调用upx 或 aspack程序

应该不难
 
如果不是在IDE里编译,可以写个批处理来做,编译好马上调用UPX来压缩。

dcc32 aa.dpr
upx aa.exe
 
后退
顶部