Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Fichier .manifest sous Vista

16 réponses
Avatar
Kiriasse
Bonjour,

Dans une application écrite en VB6, j'ajoute dans le répertoire où se trouve
l'EXE de cette application le fichier MonAppli.exe.manifest (c'est un
fichier texte que l'on peut créer avec Notepad).
Cela a pour effet, sous Windows XP, de donner aux boutons de commande de
l'application MonAppli.exe le look XP (les 4 coins des boutons sont
arrondis).
Le contenu de ce fichier MonAppli.exe.manifest est le suivant :

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Editeur"
processorArchitecture="X86"
version="4.4.0.0"
/>
<description>Mes logiciels </description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
language="*"
processorArchitecture="X86"
version="6.0.0.0"
publicKeyToken="6595b64144ccf1df"
/>
</dependentAssembly>
</dependency>
</assembly>

Un utilisateur de cette appli sous Vista me dit que ça ne marche pas sous ce
nouvel O.S. : les coins des boutons restent des angles droits.
Savez-vous comment on doit procéder pour obtenir le même résultat graphique
sous Vista ?
Suffit-il de prévoir un fichier .manifest ?
Et dans ce cas, quel doit être son contenu ?
Merci d'avance pour votre aide.

10 réponses

1 2
Avatar
Jacques93
Bonjour,
Kiriasse a écrit :
Bonjour,

Dans une application écrite en VB6, j'ajoute dans le répertoire où se trouve
l'EXE de cette application le fichier MonAppli.exe.manifest (c'est un
fichier texte que l'on peut créer avec Notepad).
Cela a pour effet, sous Windows XP, de donner aux boutons de commande de
l'application MonAppli.exe le look XP (les 4 coins des boutons sont
arrondis).
Le contenu de ce fichier MonAppli.exe.manifest est le suivant :

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Editeur"
processorArchitecture="X86"
version="4.4.0.0"
/>
<description>Mes logiciels </description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
language="*"
processorArchitecture="X86"
version="6.0.0.0"
publicKeyToken="6595b64144ccf1df"
/>
</dependentAssembly>
</dependency>
</assembly>

Un utilisateur de cette appli sous Vista me dit que ça ne marche pas sous ce
nouvel O.S. : les coins des boutons restent des angles droits.
Savez-vous comment on doit procéder pour obtenir le même résultat graphique
sous Vista ?
Suffit-il de prévoir un fichier .manifest ?
Et dans ce cas, quel doit être son contenu ?
Merci d'avance pour votre aide.




Si comme je le suppose tu appelles bien InitCommonControls dans
l'événement Form_Initialize :

Private Declare Function InitCommonControls Lib "comctl32.dll" () _
As Long


Private Sub Form_Initialize()
Dim lResult As Long

'Initialise les controles pour leur donner le style de Windows XP.
lResult = InitCommonControls
End Sub

Cela doit fonctionner. Avec une nuance, sous XP => Look XP :

<http://cjoint.com/?lErqR2jyWy>

et sous Vista => Look Vista :

http://cjoint.com/?lErrUZnGpZ>

Avec le même fichier manifest, bien sûr.

D'ailleurs, ce que tu fais est bien conforme à la FAQ :

<http://faq.vb.free.fr/index.php?question2>

--
Cordialement,

Jacques.
Avatar
Kiriasse
Merci beaucoup pour votre réponse.
Mais, bien que j'aie prévu exactement ce que vous dites, sous Vista, les
boutons de commande demeurent parfaitement rectangulaires (l'utilisateur m'a
envoyé une copie d'écran) contrairement à ce que j'obtiens sous XP (angles
arrondis).
Je ne comprends pas pourquoi.
Kiriasse
Répondant à

== "Jacques93"
Bonjour,
Si comme je le suppose tu appelles bien InitCommonControls dans
l'événement Form_Initialize :

Private Declare Function InitCommonControls Lib "comctl32.dll" () _
As Long


Private Sub Form_Initialize()
Dim lResult As Long

'Initialise les controles pour leur donner le style de Windows XP.
lResult = InitCommonControls
End Sub

Cela doit fonctionner. Avec une nuance, sous XP => Look XP :

<http://cjoint.com/?lErqR2jyWy>

et sous Vista => Look Vista :

http://cjoint.com/?lErrUZnGpZ>

Avec le même fichier manifest, bien sûr.

D'ailleurs, ce que tu fais est bien conforme à la FAQ :

<http://faq.vb.free.fr/index.php?question2>
Avatar
Jacques93
Kiriasse a écrit :
Merci beaucoup pour votre réponse.
Mais, bien que j'aie prévu exactement ce que vous dites, sous Vista, les
boutons de commande demeurent parfaitement rectangulaires (l'utilisateur m'a
envoyé une copie d'écran) contrairement à ce que j'obtiens sous XP (angles
arrondis).
Je ne comprends pas pourquoi.



Ben là moi non plus, j'ai repris le .manifest tel que tu l'a posté, et
chez moi ça marche (XP PRO SP2 et Vista Ultimate) ???? mystère

--
Cordialement,

Jacques.
Avatar
Kiriasse
Merci de cette confirmation.
C'est vraiment sympa d'avoir pris le temps de faire ce test.
En fait, je n'ai pas encore trouvé le temps d'installer Vista sur mon
ordinateur, car ce n'est pas simple, il me faut changer mon lecteur de CD
contre un lecteur de DVD puisque Vista est commercialisé sur DVD (c'est le
progrès ?) et acheter et installer un nouveau disque dur...
L'appli en question tourne donc sur mon ordi sous XP et c'est une autre
personne qui me demande de la modifier afin qu'elle fonctionne sous Vista.
Cette personne m'affirme que le look XP/Vista n'apparaît pas.
Bizarre...
Je comprendrai mieux quand j'aurai pu installer Vista.
Encore merci.
Kiriasse
Répondant à

== "Jacques93"
Je ne comprends pas pourquoi.


Ben là moi non plus, j'ai repris le .manifest tel que tu l'a posté, et
chez moi ça marche (XP PRO SP2 et Vista Ultimate) ???? mystère
Avatar
Kiriasse
Il semblerait (hypothèse) que, sur l'ordinateur sous Vista de l'utilisateur
de mon appli, la présence du fichier MonAppli.exe.manifest (qui,
normalement, devrait donner à l'interface de cette appli le look Windows
Vista) puisse empêcher l'appli de démarrer. Il manquerait sur l'ordinateur
des composants indispensables d'où le message d'erreur sibyllin (pour moi)
qui m'est signalé : « L'application n'a pas pu démarrer car sa configuration
côte à côte est incorrecte. »
J'ai trouvé la page :
http://www.guwiv.com/portal/forums/thread/3210.aspx
Qui renvoie à :
http://www.microsoft.com/downloads/details.aspx?familyid 0B2FD9-AE1A-4A14-984D-389C36F85647&displaylang=fr

J'y lis : « Le package redistribuable Microsoft Visual C++ 2005 SP1 (x86)
installe les composants du runtime des bibliothèques Visual C++ nécessaires
pour exécuter des applications développées en Visual C++ sur un ordinateur
sur lequel Visual C++ 2005 n'est pas installé. Nom du fichier à télécharger
: vcredist_x86.exe ».

Qu'en pensez-vous ? L'activation de ce programme va-t-elle résoudre ce
problème ?
Kiriasse
Répondant à

== "Jacques93"
Ben là moi non plus, j'ai repris le .manifest tel que tu l'a posté, et
chez moi ça marche (XP PRO SP2 et Vista Ultimate) ???? mystère
Avatar
Kiriasse
L'utilisateur de mon appli me dit que l'activation de vcredist_x86.exe n'a
pas résolu le problème.
Kiriasse
Se complétant

== "Kiriasse"
Il semblerait (hypothèse) que, sur l'ordinateur sous Vista de l'utilisateur
de mon appli, la présence du fichier MonAppli.exe.manifest (qui,
normalement, devrait donner à l'interface de cette appli le look Windows
Vista) puisse empêcher l'appli de démarrer. Il manquerait sur l'ordinateur
des composants indispensables d'où le message d'erreur sibyllin (pour moi)
qui m'est signalé : « L'application n'a pas pu démarrer car sa configuration
côte à côte est incorrecte. »
J'ai trouvé la page :
http://www.guwiv.com/portal/forums/thread/3210.aspx
Qui renvoie à :
http://www.microsoft.com/downloads/details.aspx?familyid 0B2FD9-AE1A-4A14-984D-389C36F85647&displaylang=fr

J'y lis : « Le package redistribuable Microsoft Visual C++ 2005 SP1 (x86)
installe les composants du runtime des bibliothèques Visual C++ nécessaires
pour exécuter des applications développées en Visual C++ sur un ordinateur
sur lequel Visual C++ 2005 n'est pas installé. Nom du fichier à télécharger
: vcredist_x86.exe ».

Qu'en pensez-vous ? L'activation de ce programme va-t-elle résoudre ce
problème ?
Kiriasse
Répondant à

== "Jacques93"
Ben là moi non plus, j'ai repris le .manifest tel que tu l'a posté, et
chez moi ça marche (XP PRO SP2 et Vista Ultimate) ???? mystère
Avatar
Jacques93
Bonjour Kiriasse,
Kiriasse a écrit :
L'utilisateur de mon appli me dit que l'activation de vcredist_x86.exe n'a
pas résolu le problème.
Kiriasse
Se complétant

== > "Kiriasse"
Il semblerait (hypothèse) que, sur l'ordinateur sous Vista de l'utilisateur
de mon appli, la présence du fichier MonAppli.exe.manifest (qui,
normalement, devrait donner à l'interface de cette appli le look Windows
Vista) puisse empêcher l'appli de démarrer. Il manquerait sur l'ordinateur
des composants indispensables d'où le message d'erreur sibyllin (pour moi)
qui m'est signalé : « L'application n'a pas pu démarrer car sa configuration
côte à côte est incorrecte. »
J'ai trouvé la page :
http://www.guwiv.com/portal/forums/thread/3210.aspx
Qui renvoie à :
http://www.microsoft.com/downloads/details.aspx?familyid 0B2FD9-AE1A-4A14-984D-389C36F85647&displaylang=fr

J'y lis : « Le package redistribuable Microsoft Visual C++ 2005 SP1 (x86)
installe les composants du runtime des bibliothèques Visual C++ nécessaires
pour exécuter des applications développées en Visual C++ sur un ordinateur
sur lequel Visual C++ 2005 n'est pas installé. Nom du fichier à télécharger
: vcredist_x86.exe ».

Qu'en pensez-vous ? L'activation de ce programme va-t-elle résoudre ce
problème ?


Quel est le problème exactement, le message :

L'application n'a pas pu démarrer car sa configuration
côte à côte est incorrecte

ou le look Vista qui n'apparaît pas ?

Pour le premier point, en ce qui me concerne sous XP et Vista, j'ai
visual Studio 6.0 et Visual Studio 2005 installé, vcredist_x86.exe est
donc superflu, mais effectivement il est lié aux manifest qui se trouve
dans %windir%WinSxS (Side by Side, ou côte à côte). Quelques infos sur
WinSxS sur ce fil ;-) :

<http://groups.google.fr/group/microsoft.public.fr.windows.vista.general/browse_thread/thread/619f345dc5378eb2/1937537c6c5774a4?hl=fr&lnk=st&q=winsxs+bellamy+group%3Amicrosoft.public.fr.windows.vista.general#1937537c6c5774a4>

Pour le second point, le look vista, il y a un cache des associations
.EXE / Manifest sous Vista qui peut poser problème :

<http://blogs.developpeur.org/coq/archive/2006/10/28/Manifest-d_2700_application-sous-Vista-_3A00_-m_E900_fiez-vous-du-cache.aspx>

Si le manifest est ajouté après l'exe, il faut réinitialisé le cache en
changeant la date de l'exe. Soit en recompilant l'exe, soit avec un
utilitaire comme Touch99 de Pierre Torris :

http://www.ptorris.com/download.php?file=touch99.zip

Peut être pas facile en clientèle, sauf à être sur place.

A tout hasard, peux tu indiquer la version de Vista utilisé par ton client ?

--
Cordialement,

Jacques.
Avatar
Kiriasse
Merci pour toutes ces informations.
Effectivement, en donnant au fichier MonAppli.exe une date de dernière
modification antérieure à celle du fichier manifest, les boutons de commande
aux angles arrondis apparaissent sous Vista.
Fallait le savoir...
Encore merci. Vous avez été particulièrement efficace.
Kiriasse
Répondant à

== "Jacques93"
Bonjour Kiriasse,
(...)
Pour le second point, le look vista, il y a un cache des associations
.EXE / Manifest sous Vista qui peut poser problème :
Si le manifest est ajouté après l'exe, il faut réinitialisé le cache en
changeant la date de l'exe. Soit en recompilant l'exe, soit avec un
utilitaire comme Touch99 de Pierre Torris :
Avatar
Jacques93
Bonjour Kiriasse,
Kiriasse a écrit :
Merci pour toutes ces informations.
Effectivement, en donnant au fichier MonAppli.exe une date de dernière
modification antérieure à celle du fichier manifest, les boutons de commande
aux angles arrondis apparaissent sous Vista.
Fallait le savoir...



Merci du retour, les forums ça sert aussi à ça ;-)

--
Cordialement,

Jacques.
Avatar
Kiriasse
Re-bonjour,
J'ai en fait un nouveau problème.
Comme c'est mon programme qui crée le fichier MonAppli.exe.manifest, à la
fin de la procédure de création, j'ajoute des lignes de code utilisant la
fonction SetFileTime de l'API Windows. Ce code modifie la date de création,
la date de dernière modification et la date du dernier accès. Je donne une
date antérieure à la date de la compilation de l'EXE, par exemple le 1er
janvier 2007 à 0 H.
Quand je lance l'appli depuis Visual Basic, les choses se passent comme je
m'y attends.
Mais, quand j'utilise l'EXE, la date de création devient la suivante :
lundi 1 janvier 1601, 01:14:18
En l'occurrence, cela n'a pas vraiment d'importance puisque la date qui est
prise en compte par MonAppli est la date de la dernière modification qui est
bien devenue le 1er janvier 2007 à 0 H.
Et, de toute façon, l'an 1 du XVIIe siècle est sans conteste antérieure à la
date de compilation de l'EXE.

Mais j'aimerais comprendre d'où sort cette date étrange du lundi 1 janvier
1601, 01:14:18.

Une idée ?
Kiriasse
1 2