J'ai une application C++ que j'ai écrite pour Windows XP, et je voudrais la porter sur Windows Vista/7. Il utilise du MFC (pour les E/S série) et ATL (pour WMI), mais il utilise principalement la bonne vieille API Windows. Quels sont les get-yas que je devrais garder à l'esprit lors du portage de mon application? Merci.Portage de l'application C++ de XP à Vista/7
Répondre
Vous n'avez probablement pas besoin de faire quoi que ce soit. En général, les applications écrites pour XP fonctionnent correctement sous Vista et Windows 7. (Les pilotes de périphériques et autres codes de bas niveau peuvent être différents.)
Avez-vous des problèmes avec Vista ou Windows 7? Avez-vous déjà essayé?
Quelques possibles gotchas:
-
sécurité
- (que votre application suppose qu'il est en cours d'exécution en tant qu'administrateur et a un contrôle complet sur la machine?)
- questions cosmétiques (en raison de changements dans l'apparence de la fenêtre et de contrôle dans Vista et 7)
- chemins de fichiers/répertoires codés en dur
- beaucoup plus d'utilisateurs exécutent des versions 64 bits de Windows Vista et 7 que XP 64 bits. Donc, si vous avez une application 32 bits et que vous chargez dynamiquement du code (DLL, contrôles ActiveX, etc.), vous risquez de rencontrer des problèmes de 32 bits par rapport à 64 bits.
Application Compatibility Toolkit vous aidera à repérer problèmes que votre application peut avoir le portage vers Vista/Windows 7:
je avais deuxième suggestion de Michael Burr utiliser la boîte à outils AppCompat, comme celle détectera la plupart des problèmes probables. Quelques règles générales:
- N'écrivez pas de données dans HKLM en dehors de l'installateur. Utilisez HKCU. Toute lecture/écriture à HKLM peut être virtualised et vous pouvez obtenir un comportement très étrange lors du passage entre les comptes utilisateur
- Ne pas utiliser chemins d'accès directement, utilisez SHGetFolderLocation
- Ne pas écrire des données sur les zones du système telles que
c:\windows
,c:\program files
, etc. Si vous avez besoin d'écrire des données qui doit être disponible à tous les utilisateurs, utilisezCSIDL_COMMON_APPDATA
(c:\ProgramData
par défaut)
en supposant que vous faites la plupart de ces choses de toute façon je pense que vous n'aurez pas des problèmes majeurs supportant Vista/Win7.
+1, Note supplémentaire, pour les personnes qui se demandent "Certaines applications fonctionnaient sous XP mais pas sur 7": Utilisez [ces directives détaillées pour la compatibilité avec Windows 7] (http://technet.microsoft.com/fr -us/windows/application-compatibility.aspx). Aussi, si l'application de quelqu'un d'autre, utilisez le mode de compatibilité ET/OU ** vous pouvez réellement exécuter l'application Windows XP en 7 **, si vous avez [mode XP] (http://microsoft.com/windows/virtual-pc/ download.aspx) installed => Il fonctionne sous XP dans un PC virtuel. Vous installez votre application sous XP. Vous trouverez votre application ** XP dans le menu de démarrage de 7 **! et la prochaine fois exécuter l'application (dans le cadre de style XP) sans lancer XP à nouveau! –