2011-04-15 2 views
1

J'ai essayé une application de mise à jour avec UAC et après avoir creusé, j'ai dû inclure un manifeste dans mon application.Le manifeste en double provoque 'Impossible de créer le processus'

Le manifeste est appelé MyApp.manifest. Afin d'inclure cela dans le projet, j'ai créé un fichier RC qui s'appelle MyApp.rc. Il est intégré dans un fichier appelé MyApp.rec avec une commande de pré-construction brcc32 $(PROJECTNAME).rc -fo$(PROJECTNAME).rec

Puis dans mon DPR J'ai

{$R *.REC} 
{$R *.RES} 

begin 
    Application.Initialize; 

Cela permet Delphi gérer les choses comme les informations de version.

Tout cela fonctionne très bien lorsque l'application est copiée dans Windows 7.

Je suis allé à déboguer aujourd'hui app et mon environnement de dev est Windows XP où je reçois immédiatement: Unable to Create Process

Après un peu plus creuser On m'a montré le XN Resource Editor. Ce qui a immédiatement montré le problème suivant:

Duplicate Manifest

La première de ces Manifestes (celui marqué 1) est le MyApp.manifest (ce qui est peut-être pourquoi il fonctionne bien dans Windows 7?) Et bien sûr si je supprime la deuxième manifeste l'application fonctionne parfaitement. Bizarrement, si je change le numéro dans le fichier RC, le numéro 1 change avec le numéro 2 mais le deuxième manifeste reste au numéro 2.

Je pense que le deuxième manifeste peut avoir quelque chose à voir avec les thèmes d'exécution mais la désactivation ne fonctionne tout simplement pas (Je décoche la case à cocher, ferme les options du projet, ouvre les options du projet et la case à cocher est cochée).

alors qu'est-ce qui provoque l'apparition du second manifeste? et comment puis-je m'en débarrasser?

La version Delphi est 2007

+0

MANIFEST_RESOURCE_ID de 2 est normalement utilisé dans une DLL. Je doute que cela vous aide mais il ne sera pas produit par l'IDE Delphi. Recherchez simplement votre projet pour $ R et vous devriez le trouver! –

Répondre

1

je suis revenu à ce projet après avoir travaillé sur quelque chose d'autre pendant un certain temps et supprimé le fichier .res existants avant d'ouvrir le projet

Je pense que Delphi met en cache le fichier projets .res en mémoire et ne le met à jour que lors de la compilation/construction car ce problème a entièrement disparu.

1

Quelle version de Delphi? Vérifiez la clause uses dans tous vos fichiers de projet pour UxTheme; c'est l'ancien gestionnaire de thème de Mike Lischke chez SoftGems qui a été incorporé dans la VCL. Vous pouvez également rechercher XPMan, qui ajoute un manifeste à Delphi 7; c'est aussi de Mike. Avant l'inclusion dans la VCL, il l'avait comme système d'exploitation libre sur son site Web.

Vous aurez également besoin de faire un Projet-> Construire plutôt qu'une simple compilation après (ou après avoir changé le paramètre 'thèmes d'exécution'), afin de forcer toutes les unités à être recompilées et l'exécutable à être entièrement recréé.

+0

Ajout de la version Delphi à la question. L'application contient seulement 1 formulaire et le formulaire contient seulement 1 barre de progression. Ni uxTheme ni XPTheme ne sont inclus dans l'application (que je puisse voir) –

+0

Il vient de créer une nouvelle application de formulaires VCL dans D2007 et y a déposé un bouton. Ran l'application, et le bouton était sur le thème. Utilisé Project-> Options-> Compilateur, les thèmes d'exécution non cochée, les modifications enregistrées, et a couru l'application. Le bouton a été dessiné sans motif. Répéter cela avec la même application (option de basculement, exécution, option de bascule, exécution) continue de changer l'apparence du bouton à chaque fois. –

2

Si vous voulez utiliser votre propre manifeste, vous devez désactiver le manifeste généré par Delphi en suivant ces étapes en fonction de votre version de Delphi.

  1. Retirez de votre projet
  2. supprimer toute référence à l'unité XpMan dans votre projet
  3. Désactiver l'option « Activer les thèmes d'exécution », présente dans le projet tout composant TXPManifest -> Options -> Application
+0

Je ne peux pas désactiver l'option "Activer les thèmes d'exécution". Il refuse d'être décacheté (je ne sais pas pourquoi) –

+0

quand vous dites '... Je décoche la case à cocher, ferme les options du projet, ouvre les options du projet et la case à cocher est cochée cela peut être causé par un plugin tiers dans votre ide qui permet cette option. – RRUZ

Questions connexes