![]() |
Re: Problem mit UpdateResource und XP-Manifest
Zitat:
|
Re: Problem mit UpdateResource und XP-Manifest
Ja in der Tat. Ich mache es so:
Delphi-Quellcode:
PTemp ist ein PChar.
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); Vielen Dank Florian |
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:
Ich bin mir auch nicht sicher ob PChar(24) hier zielführend ist. Warum benutzt Du nicht MakeIntResource(RT_MANIFEST)? |
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; |
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. |
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? |
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*
|
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 12:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz