Wie wäre es, wenn du den Rückgabewert der Funktionen nicht ignorierst? Das sagt mir nämlich, dass da ein "falscher Parameter" bei UpdateResource wäre, was dann bei EndUpdateResource zu einem internen Fehler führt. Wobei ich das hier gerade mit Vista teste, XP müsste ich in einem virtuellen PC erst starten.
Delphi-Quellcode:
if UpdateResource(hInst, RT_RCDATA, 'INSTALLZIP', LANG_NEUTRAL, NIL, 0) then
ShowMessage('erfolgreich')
else
ShowMessage(SysErrorMessage(GetLastError()));
finally
if EndUpdateResource(hInst, false) then
ShowMessage('erfolgreich')
else
ShowMessage(SysErrorMessage(GetLastError()));
end;