问一个关于程序打包的问题。 请问,我有一个exe程序,还有一个文本文件,文本文件里面有一些数据,我想把这个exe和这个文本文件打包到一个exe里面,可不可以做到呢? 应该怎么做?非常感谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把文本文件加到exe的资源里面去,需要的时候再从资源里面加载。 同意楼上,,,,下面是摘得Exe的东西,要是 Txt可以直接读的 var WinTempdir: string;// 第一个过程是释放exe//第2个过程是调用 第一个过程并执行释放出的exeProcedure TNetUpdate.ExtractUpdateResource;Var reshandle: THandle; hglobal: THandle; ressize: dword; ptr: pointer; binfile: File Of byte; Srcname: String; buf: Array[0..MAX_PATH] Of Char;Begin // UPD 是以资源方式编译进去的exe 的资源名 ResHandle := FindResource(hinstance, 'UPD', PChar(RT_RCDATA)); hglobal := LoadResource(hinstance, reshandle); Ressize := SizeOfResource(hinstance, reshandle); ptr := LockResource(hglobal); //取Windows Temp 目录 If (Length(WinTempDir) >= 1) And (WinTempDir[Length(WinTempDir)] <> '\') Then WinTempDir := WinTempDir + '\'; //准备释放到temp 目录下的 upd.exe SrcName := WinTempDir + 'upd.exe'; //写 upd.exe AssignFile(binfile, SrcName); Rewrite(binfile); Blockwrite(binfile, ptr^, ResSize); Closefile(binfile);End;//********************************************************//********************************************************//执行释放出来的 EXEProcedure TNetUpdate.RestartProgram;Var proch: dword; allow: Boolean; StartupInfo: TStartupInfo; ProcessInfo: TProcessInformation; StartErrorCode: dword; TmpBuf: Array[0..1024] Of char; RestartParam : String;Begin Allow := True; //调用上面的释放过程, 从资源文件 wupdate.res 中提取出 upd.exe 的压缩文件资源 ExtractUpdateResource; //取得当前进程ID proch := GetCurrentProcessID; FillChar(StartupInfo, Sizeof(StartupInfo), #0); StartupInfo.cb := Sizeof(StartupInfo); StartupInfo.dwFlags := STARTF_USESHOWWINDOW; StartupInfo.wShowWindow := SW_SHOWNORMAL; If Not CreateProcess(Nil, pchar(WinTempdir + 'upd.exe '), Nil, Nil, true, CREATE_NEW_CONSOLE Or NORMAL_PRIORITY_CLASS, { creation flags } Nil, { pointer to new environment block } Nil, { pointer to current directory name, PChar} StartupInfo, { pointer to STARTUPINFO } ProcessInfo) Then Begin StartErrorCode := GetLastError; FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, Nil, StartErrorCode, 0, TmpBuf, SizeOf(TmpBuf), Nil); End;End; 用Rar就可以啊,不用Delphi。做法如下:1.选择你的文件(exe文件和txt文件,还可以多加几个都没关系)2.右键--添加到压缩档案3.文件名:自己取一个,“创建自释放格式档案文件”打钩(第二个选项)4.打开“高级”页面--sfx选项,然后做第五,第六步:5.安装程序中,释放后运行中填你要执行的exe文件名比如(abc.exe)6.“模式”页面:解压到临时文件夹打钩,缄默模式选“全部隐藏”(第三个),覆盖方式选“覆盖所有文件”(第二个)7.然后点确定,再点确定。ok,打包好了。 程序窗口没有获得焦点,是否可以检测到按键的值呢? 请问函数声明错在哪儿了? ADO连Paradox的问题 很急的问题 请教:如何用回车键代替tab键? 十万火急!!!用ADO如何连接Sybase数据库? 求救!!!可加到200分,只希望能够解释得清楚, 有合肥的开发者吗?(欢迎)----给分拉 TQuery控件的一个问题,请指教 我快绝望了 请问怎么往WORD的表格中插入图片 请问怎么往word的表格中插入rvf文件
//第2个过程是调用 第一个过程并执行释放出的exeProcedure TNetUpdate.ExtractUpdateResource;
Var
reshandle: THandle;
hglobal: THandle;
ressize: dword;
ptr: pointer;
binfile: File Of byte;
Srcname: String;
buf: Array[0..MAX_PATH] Of Char;
Begin
// UPD 是以资源方式编译进去的exe 的资源名
ResHandle := FindResource(hinstance, 'UPD', PChar(RT_RCDATA));
hglobal := LoadResource(hinstance, reshandle);
Ressize := SizeOfResource(hinstance, reshandle);
ptr := LockResource(hglobal);
//取Windows Temp 目录
If (Length(WinTempDir) >= 1) And (WinTempDir[Length(WinTempDir)] <> '\') Then
WinTempDir := WinTempDir + '\'; //准备释放到temp 目录下的 upd.exe
SrcName := WinTempDir + 'upd.exe'; //写 upd.exe
AssignFile(binfile, SrcName);
Rewrite(binfile);
Blockwrite(binfile, ptr^, ResSize);
Closefile(binfile);
End;//********************************************************
//********************************************************//执行释放出来的 EXE
Procedure TNetUpdate.RestartProgram;
Var
proch: dword;
allow: Boolean;
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
StartErrorCode: dword;
TmpBuf: Array[0..1024] Of char;
RestartParam : String;
Begin
Allow := True;
//调用上面的释放过程, 从资源文件 wupdate.res 中提取出 upd.exe 的压缩文件资源
ExtractUpdateResource; //取得当前进程ID
proch := GetCurrentProcessID; FillChar(StartupInfo, Sizeof(StartupInfo), #0);
StartupInfo.cb := Sizeof(StartupInfo);
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := SW_SHOWNORMAL; If Not CreateProcess(Nil,
pchar(WinTempdir + 'upd.exe '),
Nil,
Nil,
true,
CREATE_NEW_CONSOLE Or NORMAL_PRIORITY_CLASS, { creation flags }
Nil, { pointer to new environment block }
Nil, { pointer to current directory name, PChar}
StartupInfo, { pointer to STARTUPINFO }
ProcessInfo) Then
Begin
StartErrorCode := GetLastError;
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,
Nil,
StartErrorCode,
0,
TmpBuf,
SizeOf(TmpBuf),
Nil);
End;
End;
做法如下:
1.选择你的文件(exe文件和txt文件,还可以多加几个都没关系)
2.右键--添加到压缩档案
3.文件名:自己取一个,“创建自释放格式档案文件”打钩(第二个选项)
4.打开“高级”页面--sfx选项,然后做第五,第六步:
5.安装程序中,释放后运行中填你要执行的exe文件名比如(abc.exe)
6.“模式”页面:解压到临时文件夹打钩,缄默模式选“全部隐藏”(第三个),覆盖方式选“覆盖所有文件”(第二个)
7.然后点确定,再点确定。
ok,打包好了。