Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem mit UpdateResource und XP-Manifest (https://www.delphipraxis.net/22836-problem-mit-updateresource-und-xp-manifest.html)

OldGrumpy 20. Jan 2007 10:28

Re: Problem mit UpdateResource und XP-Manifest
 
Zitat:

Zitat von MrKnogge
Die Funktion zum patchen steht im ersten Post.

Er schrieb irgendwas von Umschreiben, daher nahm ich an er hätte da noch was geändert. :)

Zacherl 20. Jan 2007 12:17

Re: Problem mit UpdateResource und XP-Manifest
 
Ja in der Tat. Ich mache es so:

Delphi-Quellcode:
 PTemp :=
      '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' + #13#10 +
      '<assembly' + #13#10 +
      '  xmlns="urn:schemas-microsoft-com:asm.v1"' + #13#10 +
      '  manifestVersion="1.0">' + #13#10 +
      ' <dependency>' + #13#10 +
      ' <dependentAssembly>' + #13#10 +
      ' <assemblyIdentity' + #13#10 +
      '  type="win32"' + #13#10 +
      '  name="Microsoft.Windows.Common-Controls"' + #13#10 +
      '  version="6.0.0.0"' + #13#10 +
      '  publicKeyToken="6595b64144ccf1df"' + #13#10 +
      '  language="*"' + #13#10 +
      '  processorArchitecture="x86"' + #13#10 +
      ' />' + #13#10 +
      '  </dependentAssembly>' + #13#10 +
      ' </dependency>' + #13#10 +
      '</assembly>';

      hFile := BeginUpdateResource(PChar(Target), true);
      UpdateResource(hFile, PChar(24), '1', 0, PTemp, length(PTemp) +1);
      EndUpdateResource(hFile, false);
PTemp ist ein PChar.

Vielen Dank
Florian

OldGrumpy 20. Jan 2007 19:50

Re: Problem mit UpdateResource und XP-Manifest
 
Das allererste was mir an Deinem neuen Source auffiel, war das TRUE bei BeginUpdateResource. Die MSDN schreibt zu diesem Parameter:
Zitat:

Zitat von MSDN
bDeleteExistingResources
[in] Specifies whether to delete the pFileName parameter's existing resources. If this parameter is TRUE, existing resources are deleted and the updated file includes only resources added with the UpdateResource function. If this parameter is FALSE, the updated file includes existing resources unless they are explicitly deleted or replaced by using UpdateResource

Da sollte also wohl besser FALSE statt TRUE stehen :)

Ich bin mir auch nicht sicher ob PChar(24) hier zielführend ist. Warum benutzt Du nicht MakeIntResource(RT_MANIFEST)?

himitsu 20. Jan 2007 19:58

Re: Problem mit UpdateResource und XP-Manifest
 
PChar(24) <=> MakeIntResource(RT_MANIFEST)

ist eigentlich egal, da es genau das Selbe ist, denn
Delphi-Quellcode:
Type MakeIntResource = PChar;

//und

Const RT_MANIFEST = 24;

OldGrumpy 20. Jan 2007 20:14

Re: Problem mit UpdateResource und XP-Manifest
 
Allerdings wird es viel verständlicher wenn man die vorgesehenen Typen usw. benutzt, dazu gibts die drei Millionen Defines ja überhaupt. Es gibt wenig schlimmeres als API-Aufrufe mit irgendwelchen Zahlen statt sprechenden Defines. Ein (Pseudocode) GetShellFolder(14) sagt mir erstmal gar nix, bei GetShellFolder(CSIDL_MY_VIDEOS) kann mans wenigstens sinnvoll ergooglen :) Ich warte jetzt erstmal ne neue Exe zum Vergleichen ab, mal sehen was sich ändert wenns auf FALSE gesetzt wird.

Edit: Typo gefixt.

Zacherl 21. Jan 2007 10:43

Re: Problem mit UpdateResource und XP-Manifest
 
So, also RT_MANIFEST ist leider nicht deklariert, weshalb ich die 24 einfach mal so genommen habe. Dann zum zweiten Parameter von BeginUpdateResource: das ist so von mir gewünscht, sollte ja eigentlich auch nichts mit dem Manifest Problem zu tun haben, oder? Zumindest macht es keinen Unterschied, wenn der Parameter false ist.

Woran könnte es nocht liegen?

OldGrumpy 22. Jan 2007 03:33

Re: Problem mit UpdateResource und XP-Manifest
 
Naja, Du killst damit explizit alle Resourcen die vorher vorhanden waren, Resourcestrings, Icons, Bitmaps, uvm. - das kann nicht wirklich gewollt sein, oder? :) Kann ich bitte noch die Test-Exe vor der Behandlung für den 3-Wege-Vergleich bekommen? Wenn Delphi RT_MANIFEST nicht direkt selber kennt, dann schreibs wenigstens als Kommentar dazu. Alternativ gibts z.B. bei den Jedis jede Menge Defines zum mitbenutzen - Geschmackssache. Ich schau mir das morgen nochmal genauer an, ich hab momentan etwas Probleme mit meinem XP, hab mir irgendeinen Teil des Devicestacks für optische Laufwerke zerschossen beim Experimentieren, und selbst nach Vergleich mit einem heilen XP und entsprechenden Registryreparaturen zickt mein XP hier immer noch - zuviel rumgespielt am Entwicklersystem :) Muss es doch wohl oder übel mal neu aufsetzen *g*

Zacherl 22. Jan 2007 12:43

Re: Problem mit UpdateResource und XP-Manifest
 
:D ja also das Entfernen aller Resourcen ist doch wirklich gewollt. Die EXE ist selbstgeschrieben und hat auch nur die Standard Delphi RCDATA Resourcen, die man nicht braucht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:08 Uhr.
Seite 3 von 3     123   

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