AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Problem mit UpdateResource und XP-Manifest
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit UpdateResource und XP-Manifest

Offene Frage von "Daniel"
Ein Thema von MrKnogge · begonnen am 24. Mai 2004 · letzter Beitrag vom 22. Jan 2007
Antwort Antwort
Seite 1 von 3  1 23      
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#1

Problem mit UpdateResource und XP-Manifest

  Alt 24. Mai 2004, 20:58
na guten Abend !

Ich möchte ein kleines tool schreiben, mit dem ich das XP-Manifest nachträglich in compilierte Exe-Files integrieren kann. Also nicht einexternes Manifest namens "Programname.exe.manifest".

Eigentlich klappt das auch schon alles:

Delphi-Quellcode:
function MAKELANGID(const usPrimaryLanguage : WORD;const usSubLanguage : WORD) : WORD;
begin
  Result := (usSubLanguage shl 10) or usPrimaryLanguage;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  stream: TFilestream;
  hInst: THandle;
  ptr: Pointer;
begin
  stream := TFileStream.Create('C:\test.manifest', fmOpenRead);
  getmem (ptr,Stream.size+1);
  try
    stream.Seek(soFromBeginning, 0);
    stream.read(ptr^, Stream.size);
    hInst := BeginUpdateResource('C:\test.exe', false);
    if hInst > 0 then begin
      UpdateResource(hInst, MakeIntResource(24), '1',
      MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL), ptr, Stream.size);
      EndUpdateResource(hInst, false);
    end;
  finally
    freemem(ptr, Stream.size+1);
    stream.Free;
  end;
end;
Das XP-Manifest:
Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity
     type="win32"
    name="DelphiApplication"
    version="1.0.0.0"
     processorArchitecture="*"/>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
        type="win32"
        name="Microsoft.Windows.Common-Controls"
        version="6.0.0.0"
        publicKeyToken="6595b64144ccf1df"
        language="*"
        processorArchitecture="*"/>
    </dependentAssembly>
  </dependency>
</assembly>
Zum testen hab ich einfach kurz ein Delphi-Programm mit verschiedenen Controls erstellt, + das gleiche mit eingebundenem XP-Manifest von Delphi. Anschliesend das ohne XP-Manifest mit meinem Programm modifieziert und im Resource Hacker verglichen, identisch ! Allerdings werden bei dem von mir modifizierten Programm die Controls nicht im XP-Style angezeigt.

Was mach ich falsch ?

gruss
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#2

Re: Problem mit UpdateResource und XP-Manifest

  Alt 24. Mai 2004, 22:16
Darf ich etwas sachliche Kritik äußern?

1. Die Funktion "UpdateResource" gibt es nur auf NT-Systemen. Okay, das Manifest funktioniert ja auch erst unter XP, und das ist ja eine NT-Plattform. Trotzdem ...

2. Nicht jedes Programm ist auf die Manifest-Unterstützung ausgelegt. Speziell wenn du ein Programm erwischt, das vielleicht von jemandem mit einer älteren und nicht selbst angepassten Delphi-Version geschrieben wurde. Das Problem mit der List-View im vsReport-Modus dürfte ja bekannt sein. Und da kann das nachträgliche Integrieren des Manifestes Probleme verursachen.

Ich will dich nicht von deiner Idee abbringen. Aber du solltest vielleicht immer erst einen "Testlauf" mit einem externen Manifest machen und schauen ob das Programm in jeder Hinsicht funktioniert.
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Problem mit UpdateResource und XP-Manifest

  Alt 24. Mai 2004, 22:27
Zu deiner Frage, jadu darfst

Zu 1. Was für eine Fehlermeldung würde ich unter Windows98 bekommen ?

Zu 2. Wenn ich/bzw. der Benutzer sein Programm vorerst mit einer Manifestdatei testet, mit welchen Fehlermeldungen machen sich die Probleme bemerkbar ?
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#4

Re: Problem mit UpdateResource und XP-Manifest

  Alt 24. Mai 2004, 22:32
Zitat von MrKnogge:
Zu 1. Was für eine Fehlermeldung würde ich unter Windows98 bekommen ?
Wenn die Funktion statisch geladen wird, dann wahrscheinlich die übliche Meldung, dass die Funktion nicht gefunden wurde. Gefolgt vom merkwürdig anmutenden "Ein angeschlossenes Gerät funktioniert nicht" ... oder so ähnlich ...

Zitat:
Zu 2. Wenn ich/bzw. der Benutzer sein Programm vorerst mit einer Manifestdatei testet, mit welchen Fehlermeldungen machen sich die Probleme bemerkbar ?
Na, ein Beispiel nannte ich doch: Nimm an, jemand hat ein recht gutes Freeware-Programm geschrieben, dass irgendwelche Daten in einer List-View anzeigt. Diese LV läuft in der Detailansicht, und wenn das Programm mit einer Version < D7 geschrieben und der Quellcode der "ComCtrl.pas" (wenn ich von der VCL-List-View ausgehe) nicht angepasst wurde, dann siehst du eine Zugriffsverletzung.
IMHO war noch irgendwas mit der Toolbar, was auch nicht klappte, wenn die VCL-Unit nicht gepatcht wurde.

Evtl. ist ein Programm auch ge-UPX-t. Da wäre es IMHO sowieso zweckmäßiger, das Manifest separat beizulegen.
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Problem mit UpdateResource und XP-Manifest

  Alt 24. Mai 2004, 22:47
Ich hatte erst vor, die Möglichkeit dem Benutzer zu überlassen, ob das Manifest in die Exe-File integriert, oder eben extern beigelegt wird. Allerdings hatte ich bisher Packer alá UPX nicht bedacht.
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: Problem mit UpdateResource und XP-Manifest

  Alt 25. Mai 2004, 00:44
Moin!

Meiner Meinung nach klappt das so nicht, weil du das Manifest ja zur Laufzeit hinzufügst und Windows aber beim Laden der EXE die jeweilige Common Controls initialisiert und daher nicht mehr nachträglich schaut bzw. die Common Controls abändert - das wird IMHO beim starten erledigt, daher hast du IMHO keine Chance, weil die Controls zur Laufzeit schon alle benutzt werden...

MfG
Muetze1
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Problem mit UpdateResource und XP-Manifest

  Alt 25. Mai 2004, 00:50
Aber es funktioniert ja mit anderen Resourcen auch, und das Manifest ist dann ja sogar als Resource verfügbar (vor dem Start !), aber irgendwie wird es ignoriert. Als müsste man ne art flag setzen "arbeite das mal ab".

Ich hab schon Programme gesehen, bei denen das geklappt hat.
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
MasterC

Registriert seit: 9. Jan 2004
Ort: Krefeld
369 Beiträge
 
Delphi 2005 Personal
 
#8

Re: Problem mit UpdateResource und XP-Manifest

  Alt 25. Sep 2004, 21:24
Das ist mehr als komisch, die Resource ist vorhanden. Nur wenn man es mir ResHack macht gehts. :-/

Hat jemand eine Ahnung warum?
Christian H.
www.Future-Coding.de
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#9

Re: Problem mit UpdateResource und XP-Manifest

  Alt 26. Sep 2004, 16:35
fügst du die manifest ans ende der datei an oder wo?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
MasterC

Registriert seit: 9. Jan 2004
Ort: Krefeld
369 Beiträge
 
Delphi 2005 Personal
 
#10

Re: Problem mit UpdateResource und XP-Manifest

  Alt 26. Sep 2004, 16:36
Jo ans Ende.
Christian H.
www.Future-Coding.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz