Discussion:
Manifest
(zu alt für eine Antwort)
Martin Schade
2016-10-07 08:47:19 UTC
Permalink
Sagt mal,

hat das noch eine Funktion? Ich finde dazu kaum Literatur.

Als das WinXP aufkam, ist behauptet worden, man solle, um die Programme an
das aktuelle Aussehen anzupassen, eine Manifest-Datei einbinden. Allerdings
habe ich nie WinXP gehabt.

Ich habe nun nochmal meinen alten Rechner angemacht und verglichen: Unter
Win98 sieht das aus wie (damals) üblich - mit eckigen Ecken. Unter Win_7
erscheint das damals mit Delphi_4 compilierte Programm im Transparent-Look
mit runden Ecken.

Ich habe es nochmal mit Delphi_7 und der XP-Manifest-Komponente übersetzt,
das ändert am Aussehen nichts, die Exe wird nur länger.

Grüße, Martin Schade
Martin Schade
2016-10-10 18:02:36 UTC
Permalink
Post by Martin Schade
Sagt mal,
hat das noch eine Funktion? Ich finde dazu kaum Literatur.
Als das WinXP aufkam, ist behauptet worden, man solle, um die Programme an
das aktuelle Aussehen anzupassen, eine Manifest-Datei einbinden.
Allerdings habe ich nie WinXP gehabt.
Ich habe nun nochmal meinen alten Rechner angemacht und verglichen: Unter
Win98 sieht das aus wie (damals) üblich - mit eckigen Ecken. Unter Win_7
erscheint das damals mit Delphi_4 compilierte Programm im Transparent-Look
mit runden Ecken.
Ich habe es nochmal mit Delphi_7 und der XP-Manifest-Komponente übersetzt,
das ändert am Aussehen nichts, die Exe wird nur länger.
da ist ein Beispiel auf
http://stackoverflow.com/questions/4757533/delphi-7-vista-windows-7-manifest
das funktioniert - wenn man es, wie angegeben mit dem Ressourcen-Compiler
übersetzt und einbindet. Eine separate manifest-Datei bewirkt nach meiner
Beobachtung nichts.
Allerdings seh' ich nicht was das soll, die Win98 - Steuerelemente sehen
m.E. schicker aus. Das Programm-Fenster erscheint auch ohne weiteres mit
abgerundeten Ecken und im Transparent-Look.

Grüße, Martin Schade
Achim Kalwa
2016-10-12 09:21:37 UTC
Permalink
Hallo Martin,
Post by Martin Schade
Post by Martin Schade
Ich habe es nochmal mit Delphi_7 und der XP-Manifest-Komponente
übersetzt, das ändert am Aussehen nichts, die Exe wird nur länger.
da ist ein Beispiel auf
http://stackoverflow.com/questions/4757533/delphi-7-vista-windows-7-manifest
das funktioniert - wenn man es, wie angegeben mit dem
Ressourcen-Compiler übersetzt und einbindet. Eine separate
manifest-Datei bewirkt nach meiner Beobachtung nichts.
Allerdings seh' ich nicht was das soll, die Win98 - Steuerelemente sehen
m.E. schicker aus. Das Programm-Fenster erscheint auch ohne weiteres mit
abgerundeten Ecken und im Transparent-Look.
Das Manifest bzw. die Manifest-Datei ist nicht nur für die Optik
zuständig. Sie sagt dem Betriebssystem auch:

1.)
Ob die Anwendung mit einer bestimmten Windows-Version kompatibel ist.
Dann schaltet Windows den Programmkompatibilitätsmodus entsprechen
ein/aus. Hier ist insbesondere die Umleitung von Dateizugriffen auf
geschützte Ordner zu nennen: Ohne Manifest werden Schreibzugriffe nach
C:\Windows oder C:\Programme\Anwendung\Datei.xyz in einen versteckten
Ordner im Profil des Benutzers umgeleitet.

2.)
Welche Version der Common-Controls geladen werden sollen. Das sieht man
z.B. in den Open- und Save-Dialogen.

3.)
Welche Berechtigungen zum Start der Anwendung erforderlich sind (z.B.
Administrator); Stichwort "Elevation".

4.)
Ob die Anwendung DPI-Aware ist und sich selber um die Skalierung bei
hochauflösenden Displays kümmert. Fehlt diese Information, dann
übernimmt Windows die Skalierung, was meistens zu einer
unscharfen/schwammigen Darstellung führt.

... weitere Dinge, die mir gerade nicht einfallen wollen ;-)

Anstelle die Unit "XPMan.pas" zu verwenden, welche nur ein altes, für
Windows XP angepasstes Manifest bereit stellt, sollte man heute besser
ein eigenes, externes Manifest erstellen und dieses als Resource in die
Anwendung einbinden.

Neuere Delphi-IDEs haben direkt in den Projekt-Optionen -> Anwendung
eine oder mehrere Optionen um ein Manifest zu erstellen und einzubinden.

Wenn Du aber sowieso nur für Windows 98 und mit Delphi 4 entwickelst,
dann ist die Verwendung eines Manifests tatsächlich nicht erforderlich.


Achim
Martin Schade
2016-10-15 17:05:49 UTC
Permalink
Post by Achim Kalwa
Post by Martin Schade
Post by Martin Schade
Ich habe es nochmal mit Delphi_7 und der XP-Manifest-Komponente
übersetzt, das ändert am Aussehen nichts, die Exe wird nur länger.
da ist ein Beispiel auf
http://stackoverflow.com/questions/4757533/delphi-7-vista-windows-7-manifest
das funktioniert - wenn man es, wie angegeben mit dem
Ressourcen-Compiler übersetzt und einbindet. Eine separate
manifest-Datei bewirkt nach meiner Beobachtung nichts.
Allerdings seh' ich nicht was das soll, die Win98 - Steuerelemente sehen
m.E. schicker aus. Das Programm-Fenster erscheint auch ohne weiteres mit
abgerundeten Ecken und im Transparent-Look.
Schön, daß jemand geantwortet hat!
Post by Achim Kalwa
Das Manifest bzw. die Manifest-Datei ist nicht nur für die Optik
Ja, das habe ich auch herausgefunden.
Post by Achim Kalwa
1.)
Ob die Anwendung mit einer bestimmten Windows-Version kompatibel ist. Dann
schaltet Windows den Programmkompatibilitätsmodus entsprechen ein/aus.
Hier ist insbesondere die Umleitung von Dateizugriffen auf geschützte
Ordner zu nennen: Ohne Manifest werden Schreibzugriffe nach C:\Windows
oder C:\Programme\Anwendung\Datei.xyz in einen versteckten Ordner im
Profil des Benutzers umgeleitet.
Jo, und mit Manifest? Schaltet das die Umleitung ganz ein oder aus, oder
gibt es da weitere Unterschiede? Bisher habe ich nichts zu Unterschieden
zwischen Vista, ~7, ~8 und ~10 gefunden.
Post by Achim Kalwa
2.)
Welche Version der Common-Controls geladen werden sollen. Das sieht man
z.B. in den Open- und Save-Dialogen.
Und welche gibt's nun alles? Gibt es nur die Unterschiede zwischen 5.0.0.0.
und 6.0.0.0. oder weitere?
Post by Achim Kalwa
3.)
Welche Berechtigungen zum Start der Anwendung erforderlich sind (z.B.
Administrator); Stichwort "Elevation".
jo, ich habe das eingebaut um überhaupt zu sehen ob das Manifest
berücksichtigt wird, und habe auf eine externe, d.h. im selben Verzeichnis
liegende Manifestdatei keine Reaktion festgestellt. Nur das eingebundene
Manifest bewirkt etwas. Es kann aber auch sein, daß das nur bei mit Delphi
erstellten Programmen so ist. Daher habe ich es mit Delphi 4 probiert, weil
dieses noch nichts von Manifesten weiß.
Post by Achim Kalwa
4.)
Ob die Anwendung DPI-Aware ist und sich selber um die Skalierung bei
hochauflösenden Displays kümmert. Fehlt diese Information, dann übernimmt
Windows die Skalierung, was meistens zu einer unscharfen/schwammigen
Darstellung führt.
Darüber habe ich nichts gefunden. Wie kann man das angeben?
Post by Achim Kalwa
... weitere Dinge, die mir gerade nicht einfallen wollen ;-)
Anstelle die Unit "XPMan.pas" zu verwenden, welche nur ein altes, für
Windows XP angepasstes Manifest bereit stellt, sollte man heute besser ein
eigenes, externes Manifest erstellen und dieses als Resource in die
Anwendung einbinden.
richtig, funktioniert.
Post by Achim Kalwa
Neuere Delphi-IDEs haben direkt in den Projekt-Optionen -> Anwendung eine
oder mehrere Optionen um ein Manifest zu erstellen und einzubinden.
Wenn Du aber sowieso nur für Windows 98 und mit Delphi 4 entwickelst, dann
ist die Verwendung eines Manifests tatsächlich nicht erforderlich.
Naja, ich bin auf das Problem gekommen, weil Windows 10 die Fenster wieder
anders darstellt und ich nun wissen möchte, ob und wie man das beeinflussen
kann. in c't 2/14 S. 162 steht, daß man auch an der Darstellungsweise von
Windows viel herumstellen kann, und daß im Web bereits entsprechende Dateien
zu finden sind. Wenn das alles auf das Anwendungsprogramm durchschlägt, dann
sieht das eventuell nicht schön aus.

Grüße, Martin Schade
Achim Kalwa
2016-10-17 09:47:15 UTC
Permalink
Hallo Martin,
Post by Martin Schade
[DPI-Einstellungen]
Darüber habe ich nichts gefunden. Wie kann man das angeben?
https://msdn.microsoft.com/library/windows/desktop/dn469266.aspx?f=255&MSPPError=-2147217396
Der entsprechende Abschnitt in der Manifest-Datei lautet dann:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"
xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">

....

<asmv3:application>
<asmv3:windowsSettings
xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>True</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>

....

</assembly>
Andreas Tscharner
2016-11-01 10:59:59 UTC
Permalink
On 12.10.2016 11:21, Achim Kalwa wrote:

[snip]
Post by Achim Kalwa
... weitere Dinge, die mir gerade nicht einfallen wollen ;-)
Wir verwenden das Manifest hauptsächlich, um die COM Registrierung zu
umgehen. Im Manifest können nämlich auch die ganzen Daten (ClassIDs,
TLB-IDs, Prog-IDs, DLL-Name, etc.) der verwendeten COM-Objekte stehen.
Das macht die COM-Registrierung wie erwähnt überflüssig, was auf den
neueren System (Vista und neuer) die ganze Installation wesentlich
einfacher macht.

Gruss
Andreas
--
("`-''-/").___..--''"`-._
`o_ o ) `-. ( ).`-.__.`)
(_Y_.)' ._ ) `._ `. ``-..-'
_..`--'_..-_/ /--'_.' .'
(il).-'' (li).' ((!.-'

Andreas Tscharner ***@vis.ethz.ch ICQ-No. 14356454

--- news://freenews.netfront.net/ - complaints: ***@netfront.net ---
Loading...