![]() |
Vista und XP Manifest vereinigen
Ich habe zum einm das XP Manifest:
XML-Code:
Und zum anderen das Vista Manifest, um für mein Programm beim Start gleich administrative Rechte anzufordern (Das ist doch das richtige oder?):
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="6.0.0.0" processorArchitecture="X86" name="MyApp" type="win32" /> <description>Message Sender</description> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency> </assembly>
XML-Code:
Aber wie sieht jetzt das jetzt zusammen aus? An welcher Stelle im XP-Manifest muss ich welchen Teil des Vista-Manifestes einfügen?
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="VistaLogonCustomizer.exe" type="*"/> <description>elevate execution level</description> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <security> <requestedPrivileges> <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/> </requestedPrivileges> </security> </trustInfo> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="*"/> </dependentAssembly> </dependency> </assembly> |
Re: Vista und XP Manifest vereinigen
Hi Luckie,
wenn ich das richtig erkenne, dann verweist auch Dein Vista Manifest bereits auf die Common Controls-Version, die für die Darstellung der Controls im WinXP/Vista-Design zuständig ist:
XML-Code:
Da musst Du nichts vereinen, es ist bereits im Vista-Manifest beides komplett :-)
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="*"/> Gruß Patrick |
Re: Vista und XP Manifest vereinigen
Die Beispiele von Microsoft aus dem Windows SDK zeigen den <trustinfo>-Teil (für Vista) immer nach <description> und vor dem abschließenden </assembly>-root-Knoten.
Wenn nicht gerade der Aufbau der XML-Datei per Schema geprüft wird, und wenn dabei nicht auf eine bestimmte Reihenfolge Wert gelegt wird, dann sollte dein zweites Beispiel, @Micha, auch richtig sein. |
Re: Vista und XP Manifest vereinigen
So ist es.
Das Manifest für Vista ist auch für XP gültig. Der Abschnitt ( <trustInfo ...> </trustInfo> ) ist für XP uninteressant. Hier noch ein Vista (& XP) Manifest:
XML-Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity processorArchitecture="x86" version="5.6.0.0" type="win32" name="XPUsermanager.exe"/> <description>Windows XP & Vista Usergroup Control Center</description> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="x86"/> </dependentAssembly> </dependency> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/> </requestedPrivileges> </security> </trustInfo> </assembly> // Edit: :gruebel: Ist noch keiner auf die Idee gegommen ein Manifest-Generator Tool zu schreiben ? |
Re: Vista und XP Manifest vereinigen
Zitat:
![]() |
Re: Vista und XP Manifest vereinigen
Hallo,
ich find es sehr interessant ein Manifest zu haben, das für XP und Vista ist. Kann mir einer verraten, wie man daraus eine komponente macht, wie das TXPMan in Delphi7? |
Re: Vista und XP Manifest vereinigen
Naja, so ein Manifest-Generator ist so simpel, daß ihn sich wahrscheinlich jeder selberbastelt ;)
Allgemein bin ich dazu übergegangen, alle Resourcen (auch Icon und Versionsinfos - letztere erlaubt die IDE ja leider nur monolingual, der entsprechende QC-Eintrag wird auch nur regelmässig auf "Next Rel" verschoben) mit einem externen Tool zusammenzubauen. Das kompiliert und codesigniert dann auch gleich, denn vor Delphi 2007 gab es ja noch keine direkte After-Compile-Möglichkeiten innerhalb der IDE. Übrigens ein Unterschied zwischen den beiden oben angezeigten: trustInfo ist einmal v2 und einmal v3. Die Unterschiede habe ich noch nirgendwo erklärt gefunden; Certified for Vista spezifiert nicht näher, was benötigt wird, aber InstallShield Enterprise erwartet zwingend v3. Keine Ahnung wieso, aber da v3 scheinbar auch nicht schadet, würde ich empfehlen das zu verwenden. Eine Komponente daraus machen, dürfte schwer möglich sein. Der Knackpunkt ist ja, daß schon XPMan eigentlich etwas zu "dumm" ist und als Programmnamen immer "Delphi Application" anzeigt. Scheinbar funktioniert der XPManager nur darüber, daß eine irgendwas.res mit Standard-Manifest eingebunden wird. Unter Vista gibt es jetzt drei Berechtigungsstufen, plus UI-Switch, d.h. selbst wenn man den Namen weglässt, bräuchte man für 6 Situationen 6 verschiedene Komponenten in 6 verschiedenen Units, und wär dann noch "unschön" anonym, und inkompatibel zu Delphi 2007 (was aber eh sehr halbgar ist, s.u.). Ich hatte da mal ins QC einen entsprechenden Eintrag geschrieben. Der ist auch als "in 2007 gefixt" markiert. Der "Fix" sieht allerdings nur so aus, als daß eine Standardberechtigungsstufe vorgegeben wird, d.h. es ist weiterhin ein festes Manifest, nur jetzt über die Projekteinstellungen statt über eine Komponente wählbar. Edith hat diesen Link gefunden: Report No: 37448 (RAID: unavailable) Status: Closed Current XPManifest is incompatible to "Certified for Vista" program ![]() |
Re: Vista und XP Manifest vereinigen
"Einfache" Komponente wird nicht möglich sein. Hier müßte der Compiler abhängig von Projekteinstellungen ein Manifest dynamisch generieren müssen. Wieso das man das nicht in den D2007-Compiler (der ja für Vista entwickelt wurde) gleich ergänzt hat ist m.E. komisch.
Habs bei uns über mehrer Res-Dateien gelößt die per Compiler-Switch ausgewählt werden. Als App-Name etwas unverfängliches genommen (Als Anwendungs-Name hat man ja noch die Infos in den "normalen" Versionsinfos). |
Re: Vista und XP Manifest vereinigen
Zitat:
enthalten ist. ;) Was man so alles findet beim suchen... ;) |
Re: Vista und XP Manifest vereinigen
Zitat:
Aber ist das richtig, wenn ich unter Vista erzwingen will, dass mein Programm Administratorenrechte beim Start anfordert:
XML-Code:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:10 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