Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Manifest-Datei verwenden (https://www.delphipraxis.net/151404-manifest-datei-verwenden.html)

taaktaak 16. Mai 2010 21:12


Manifest-Datei verwenden
 
Moin, Moin.

Eigentlich bin ich ja ein verbohrter Verfechter des "Uralt-Designs", möchte nun aber doch im rzDelphiGuide die Möglichkeit eröffnen, optional ein modernes Design zu verwenden. Das funktioniert grundsätzlich auch auf diesem Weg:

Delphi-Quellcode:
implementation
{$R WindowsXP.res}
{$R *.dfm}
Damit ergeben sich für mich ungeahnte Betätigungsfelder: Das bekannte "Panel-Problem" erfordert bei "gefühlten" hunderten Panels Anpassungsarbeiten. Auch so einige andere Sachen schauen plötzlich unerwartet anders (und damit falsch) aus. Daher möchte ich die Nutzung des Manifestes grundsätzlich optional gestalten.

Damit scheidet der bisher beschrittene Weg, "WindowsXP.res" einzubinden, ja wohl aus. Nun meine ich aus einigen DP-Beiträgen entnommen zu haben, dass der gleiche Effekt erzielt wird, wenn im Programmverzeichnis eine Manifest-Datei mit dem gleichen Namen wie das Programm placiert wird - das "schlaue Windows" schaut da vor dem Programmstart nach und passt dann die Programmoptik an. Ich habe nun nach einer Vorlage von RWarnecke eine solche Manifest-Datei erzeugt, die oben stehende Compileranweisung wieder aus dem Quelltext entfernt und mal einen Versuch gestartet: Das Programm verändert unter VISTA seine Optik nun leider nicht mehr!

Frage: Wie funktioniert denn dass mit der separaten Manifest-Datei?

RWarnecke 17. Mai 2010 03:47

Re: Manifest-Datei verwenden
 
Moin Moin Ralph,

wie hast Du denn die Manifest-Datei benannt ? Die Manifest-Datei muss den gleichen Namen wie die EXE-Datei haben, plus .manifest dahinter. Als Beispiel, wenn Deine EXE-Datei rzDelphiGuide.exe heißt, dann muss Deine Manifestdatei rzDelphiGuide.exe.manifest heißen. Zusätzlich muss in der Manifest-Datei noch der Name rzDelphiGuide.exe an einer Stelle stehen. Sind diese beiden Voraussetzungen gegeben, dann sollte es kein Problem mit der Manifest-Datei geben.

H4ndy 17. Mai 2010 04:14

Re: Manifest-Datei verwenden
 
Es liegt vermutlich ein Parsing-Program vor, d.h. dein Manifest ist fehlerhaft.

Dieses setzte ich ein (fordert Admin-Rechte unter Vista an).
Das "name="Application.exe"" kann so bleiben, das hab ich noch nie angepasst und es funktioniert trotzdem (Vista & Win7).

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="1.0.0.0"
    type="win32"
    name="Application.exe"/>
    <description>Application</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>

RWarnecke 17. Mai 2010 04:30

Re: Manifest-Datei verwenden
 
Hallo Manuel,

mit Deinem Manifest könntest Du eventuell Probleme unter Windows XP ohne Service Pack bekommen. Schaue Dir mal diesen Link an. Da habe ich es mit dem Manifest beschrieben, warum es Probleme gibt.

himitsu 17. Mai 2010 07:46

Re: Manifest-Datei verwenden
 
Soweit ich das mitbekommen hab, ist Name "irgendein Name" und nicht der "Name der EXE" ... also wäre es egal, was da steht ... einzige Vorgabe ist, daß es ein "eindeutiger Name sein soll"

Aber offiziell wird von MS sowas vorgeschlagen:
"Organization.Division.Name", also z.B. "Microsoft.Windows.mysampleApp"

jaenicke 17. Mai 2010 08:10

Re: Manifest-Datei verwenden
 
Wichtig ist noch, dass das Manifest auch noch zu einem Fehler führen wird! Bisher landen die Einstellungen und sowas bei dem Programm ja unter Vista z.B. unter:
C:\Users\Sebastian\AppData\Local\VirtualStore\Prog ram Files\rzDelphiGuide Build 1287
(Das Programm liegt in "C:\Program Files\rzDelphiGuide Build 1287".)

Wenn das Manifest existiert, passiert das aber nicht mehr, denn damit sagst du Windows XP und höher ja, dass es für diese Windowsversionen kompatibel ist. Das ist es aber nicht. Das Programm ist nur für Windows 9x kompatibel, da es ins eigene Verzeichnis schreibt, also wird es mit dem Manifest Schreibfehler geben...

taaktaak 17. Mai 2010 12:19

Re: Manifest-Datei verwenden
 
Moin, Moin.

Vielen Dank für die hilfreichen Antworten - nun klappt es! Es waren allerdings gleich zwei Umstände, die zu dem "Nichtfunktionieren" führten:
  • Der Dateiname war falsch: Verwendet hatte ich "DelphiGuide.manifest", richtig ist "DelphiGuide.exe.manifest"
  • Da ich derartige Programme NIE unter "c:\programme\.." ablege, wurde der Test auf dem Laufwerk "D:" ausgeführt. Auch mit dem korrekten Dateinamen hat das Manifest auf Laufwerk D: keinen Effekt. Einer Eingebung folgend habe ich dann ein Verzeichnis "c:\test" angelegt und darin erneut probiert - mit Erfolg! Offenbar berücksichtigt Windows die Manifest-Dateien also nur, wenn der Programmstart auf dem Laufwerk C: erfolgt
  • Der im Manifest verwendete Name ist tatsächlich irrelevant, egal was da steht, es funktioniert
zur Anmerkung von jaenicke:

Das Dateihandling von rzDelphiGuide in diesem Punkt so flexibel gestaltet, dass es entsprechend seiner ihm zugewiesen Schreibrechte agiert. Erneute Tests haben allerdings ergeben, dass in diesem Punkt tatsächlich noch nachgearbeitet werden muss - vielen Dank für den Hinweis!

Luckie 17. Mai 2010 12:43

Re: Manifest-Datei verwenden
 
Zitat:

Zitat von taaktaak
Offenbar berücksichtigt Windows die Manifest-Dateien also nur, wenn der Programmstart auf dem Laufwerk C: erfolgt

Das halte ich für ein Gerücht.

taaktaak 17. Mai 2010 14:18

Re: Manifest-Datei verwenden
 
Zitat:

Das halte ich für ein Gerücht.
- und Recht hat der Luckie! :thumb:

Nun funktioniert es auch auf dem Laufwerk D: meiner VM - leider kann ich nicht mehr ergründen, wieso heute morgen keine Wirkung zu erkennen war und ich mich zu dieser falschen Vermutung habe hinreissen lassen.
:oops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:50 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