关于“安装程序“的制作
我用C++ Builder自己编写了个最简单的安装程序,我的思路是这样的,我把所需的图片、可执行文件、动态连接库、等相关文件。都做成“资源文件“形式。安装时从资源文件还原各文件到所制定的目录。但是我想做成一个向别人做的那样(把相关文件加入以后,可以运行看是否有错,最后只生成一个"Setup.exe",安装时只要点击"Setup.exe"即可,生成的文件一部分进入指定文件夹,一部分到系统目录,添加删除上界面上还有此文件),我不知道怎样用C++ Builder做一个向别人这样好的安装程序,再次请教各位高手帮帮我!最好能提供共享代码作参考,谢谢!谢谢! 问题点数:0、回复次数:10Top
1 楼futulove(福途£爱)回复于 2004-09-02 16:14:59 得分 0
个人认为:这个程序的代码可不少呀Top
2 楼zoubinbin(刚刚)回复于 2004-09-02 18:00:40 得分 0
麻烦您帮我找一下!谢谢!谢谢!Top
3 楼JetKingLau(时差)(亦远亦近)(静坐常思已过 闲谈勿论人非 …………)回复于 2004-09-06 18:04:00 得分 0
在不考虑压缩的情况下,可以这样:
一、安装程序
1、新建一个工程,在 Form1 中放两个 TButton(名字为ButtonSetup和ButtonClose), 一个 TLabel,在 Unit1.h 文件的 public 加入一行
int SetupFile(char *file, int pos, TLabel *label);
Unit1.cpp 文件中,两个 Button 的 OnClick 函数及 SetupFile 函数如下:
void __fastcall TForm1::ButtonSetupClick(TObject *Sender)
{
int pos = 27136;//本工程的 .exe 文件大小
SetupFile(Application->ExeName.c_str(), pos, Label1);
}
//---------------------------------------------------------------------------
int TForm1::SetupFile(char *file, int pos, TLabel *label)
{
int position = pos;
int handle = FileOpen(file, fmOpenRead);
int length = FileSeek(handle,0,2);//文件大小
char fileName[255];//文件名
char fileSizeBuf[12];//文件大小(字符串方式)
int fileSize;//文件大小
char *fileBuf;//文件内容
int count = 0;
int hWrite;
while( position < length ) {//未到文件末
try {
FileSeek(handle, position, 0);//定位
FileRead(handle, fileName, 255);//读文件名 - 实际应用中应加上安装目录
label->Caption = fileName;//显示文件名
this->Update();
FileRead(handle, fileSizeBuf, 12);//读文件的大小
fileSize = StrToInt(fileSizeBuf);//获得文件大小
fileBuf = new char[fileSize];//申请
FileRead(handle, fileBuf, fileSize);//读文件内容
//写文件
hWrite = FileCreate(fileName);
FileWrite(hWrite, fileBuf, fileSize);
FileClose(hWrite);
position = position + 255 + 12 + fileSize;//下一个文件位置
delete fileBuf;//释放
count ++;
}
catch(...) {
position = length;
}
}
FileClose(handle);
return(count);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ButtonCloseClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
2、将该工程保存为 Setup.bpr, Build 该工程,然后执行菜单项 Project | Information of Setup,并根据 File Size 的值修改 Button1Click 函数中的 pos 值。
实际上,这个安装程序是从程序可执行文件的 pos 值开始,依次读取文件名、文件大小、文件内容,并写到该文件。
二、制作安装程
FileCreate 一个文件,将上述的 Setup.exe 文件写入,然后根据要安装的文件列表,依次FileWrite写入它们的安装后的文件名(字符串,255字节)、文件大小(字符串,12字节)、文件内容即可。
这部份程序偶没有时间写了,你自己试试吧。
Top
4 楼zsqat(强子)回复于 2004-09-08 09:38:08 得分 0
谢谢!这个方法我做过,能行的!我原来做的是把许多文件合并成一个文件,安装实在吧他们分开装载指定的文件夹理。
但我现在的问题是要把他做成像Office(等)其他安装程序那样,安装时,一部分程序到指定目录,一部分到Windows系统,并且控制面板“添加删除“里面还有安装的程序,即就是说怎用C++ Builder 做一个像“网上下载下来的安装程序一样(如:肥猫安装向导、小颖安装向导)“。Top
5 楼JetKingLau(时差)(亦远亦近)(静坐常思已过 闲谈勿论人非 …………)回复于 2004-09-08 11:21:32 得分 0
WinAPI 有 Setup 开头的函数,就是制作安装程序的,慢慢研究去吧……
同时,还要研究 .INF 文件格式。
Top
6 楼dgyanyong(幸运飞龙)回复于 2004-09-08 22:07:52 得分 0
用VS.NET 2003做安装程序也十分方便
新建项目- 选择 安装和部署项目- 选择 安装项目
无需学习,直接依照步骤来 2分钟搞定 呵呵Top
7 楼zoubinbin(刚刚)回复于 2004-10-20 11:53:05 得分 0
我要的是怎样用c++ builder制作一个安装程序,而不是直接用别人做好的安装向导
Top
8 楼constantine(飘遥的安吉儿)回复于 2004-10-20 12:29:45 得分 0
chinabcb好像有一个Top
9 楼ydslyangdong(爱的一无事处)回复于 2004-10-20 21:03:35 得分 0
用INSTALL安装软件,只要弄好路径就会自动安装好的Top
10 楼zoubinbin(刚刚)回复于 2004-10-28 09:11:38 得分 0
我要的是用C++ Builder自己做一个安装向导软件
Top




