文件运行后修改自身版本号

huangjacky 2008-08-20 03:25:54
好久没有问人咯,问题压了一些。
所以问问,
获得版本的方法我找到咯。
怎么程序修改呢?

网上看了一些方法,UpdateResource api,然后去msdn看了下这个函数的用法.

maybe 自己天生愚钝,所以不是很懂,在这里问问高手们,请指点
...全文
177 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangjacky 2008-08-22
  • 打赏
  • 举报
回复
谢谢,高手呀
lyguo 2008-08-20
  • 打赏
  • 举报
回复
可以在程序运行时,调用 另一个程序,然后关自身。另一个程序修改程序的版本号,然后再启动程序,并关 它自身。

就像自动升级程序一样,呵呵。
柯本 2008-08-20
  • 打赏
  • 举报
回复
要改别的程序版本号是没有问题的:

procedure TForm1.Button2Click(Sender: TObject);
type
PLANGANDCODEPAGE = ^LANGANDCODEPAGE;
LANGANDCODEPAGE = record
wLanguage: Word;
wCodePage: Word;
end;
var
mSize: Integer;
mLen, mLen1: UINT;
mTranslate, mFixV: Pointer;
mHExe, mRes: THandle;
mVersion: array of Byte;
mFixVersion: VS_FIXEDFILEINFO;
mFixVersion1: PVSFixedFileInfo;
mLang: PLANGANDCODEPAGE;
fm:pchar;
nver:pchar;
begin
fm:=pchar('Project1.exe');
// fm:=pchar(ParamStr(0));
mSize := GetFileVersionInfoSize(fm, mRes);
if mSize=0 then
begin
ShowMessage('GetFileVersionInfoSize 错:'+SysErrorMessage(GetLastError));
exit;
end;
SetLength(mVersion, mSize);
GetFileVersionInfo(fm, mRes, mSize, mVersion);
VerQueryValue(mVersion, '', mFixV, mLen);
mFixVersion1 := PVSFixedFileInfo(mFixV);
mFixVersion1^.dwFileVersionMS := 12 shl 16 + 34;
mFixVersion1^.dwFileVersionLS := 56 shl 16 + 78;
mHExe := BeginUpdateResource(fm, false);
if mHExe=0 then
begin
ShowMessage('BeginUpdateResource 错:'+SysErrorMessage(GetLastError));
exit;
end;
if VerQueryValue(mVersion, 'VarFileInfo\Translation', mTranslate, mLen) then
begin
mLang := PLANGANDCODEPAGE(mTranslate);
if UpdateResource(mHExe, RT_VERSION, MakeIntResource(1), mLang^.wLanguage, mVersion, mSize) then
begin
if not EndUpdateResource(mHExe, false) then
ShowMessage('UpdateResource 错:'+SysErrorMessage(GetLastError));
end else
ShowMessage('UpdateResource 错:'+SysErrorMessage(GetLastError));

end else
ShowMessage('VerQueryValue 错:'+SysErrorMessage(GetLastError));
FreeLibrary(mHExe);
end;

但要改自身的版本号,就难了,因为在程序运行期间是不能修改的,只能通过另一个程序来改了
huangjacky 2008-08-20
  • 打赏
  • 举报
回复
还来一下
huangjacky 2008-08-20
  • 打赏
  • 举报
回复
不顶就沉下去咯

1,184

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧