2017-09-15 9 views
0

Je viens d'utiliser Desktop Bridge pour empaqueter trois applications MFC à télécharger sur le Windows Store.Impossible d'ouvrir le fichier d'aide en tant qu'application Windows 10 Universal

Ils fonctionnent tous très bien, mais pour une raison quelconque, l'un d'eux est incapable d'ouvrir le fichier d'aide. (L'aide fonctionne correctement dans les deux autres applications.)

L'application du problème fonctionne parfaitement lorsqu'elle est exécutée à partir de Visual Studio ou en double-cliquant sur l'exécutable. Mais l'accès à l'aide me donne l'erreur suivante après avoir été installé à partir du paquet de test AppX.

Impossible de lancer l'aide.

Je peux utiliser le Gestionnaire des tâches pour localiser l'emplacement d'application installé et confirmer qu'il contient mon fichier d'aide. De plus, j'ai ajouté du code pour afficher le chemin du fichier d'aide au démarrage, et il affiche le bon chemin d'aide! Mais peu importe ce que je fais, mon application ne peut pas apporter d'aide.

Est-ce que quelqu'un sait s'il y a quelque chose au sujet des privilèges limités d'être installé en tant qu'application Windows 10 qui pourrait en quelque sorte limiter l'accès au fichier d'aide? Ou quelqu'un peut-il suggérer comment dépasser le message d'erreur complètement inutile ci-dessus pour obtenir un indice sur la raison pour laquelle il échoue?

+0

Où se trouve le fichier et comment voulez-vous l'ouvrir/le lancer? –

+0

Le fichier d'aide se trouve dans le même dossier que l'exécutable. J'ai un gestionnaire de commandes dans ma classe d'application qui délègue à CWinApp :: OnHelp. –

+0

Essayez de définir le répertoire de travail actuel sur ce chemin. S'il essaie d'ouvrir le fichier à partir du répertoire de travail actuel, il ne fonctionnera pas dans l'application convertie, car ce chemin pointe ailleurs. –

Répondre

1

Vous obtenez cette erreur car le fichier .chm qui contient votre contenu d'aide se trouve dans le dossier d'installation de votre application. Dans le modèle d'application Windows moderne, ce dossier est verrouillé afin que seuls les processus faisant partie de votre package d'application puissent y accéder. Avec le cadre MFC, cependant, l'afficheur d'aide qui est invoqué ne fait pas partie de votre package. Par conséquent, il ne peut pas accéder au fichier .chm. La solution est pour votre application au moment de l'exécution (par exemple juste après le lancement) pour faire une copie du fichier .chm dans un emplacement accessible (par exemple% TEMP%) et mettre à jour m_pszHelpFilePath pour pointer vers cet emplacement. Maintenant, le processus de visualisation de l'aide devrait être capable de charger l'aide avec succès.

+0

Merci d'avoir travaillé avec moi. Mais je ne vois toujours pas le problème comme résolu. Premièrement, comme je l'ai mentionné dans mon OP, j'ai trois programmes de ce genre. Et l'aide fonctionne bien dans les deux autres. Deuxièmement, il ne serait guère acceptable que l'aide ne fonctionne pas dans le nouveau modèle d'application. L'API Windows HtmlHelp() devrait fonctionner! Et pour toutes mes applications, sauf une. –

+0

Le modèle MFC a été inventé il y a 25 ans, à une époque où le logiciel était acheté dans une boîte, tout le monde était administrateur, Internet et la sécurité n'était pas une chose. Cela a entraîné de nombreux problèmes qui existent aujourd'hui: DLL enfer, pourriture du registre, les préoccupations de sécurité et de confidentialité, pour n'en citer que quelques-uns. Lorsque vous déplacez une application de cette époque, nous devons appliquer les règles du nouveau modèle, ce qui dans certains cas vous obligera à apporter quelques modifications de code, comme dans ce cas. Je serai heureux de jeter un coup d'oeil à la raison pour laquelle l'aide dans vos autres applications a fonctionné sans changements. Sont ceux qui sont déjà dans le magasin, donc je peux jeter un oeil? –

+0

Windows est vieux aussi. Et l'API Windows doit fonctionner pour que Windows reste viable. Et je pense que l'aide est toujours importante (même si Microsoft n'en a pas l'air). Mes autres applications ne sont pas encore en ligne et ne seront pas gratuites lorsqu'elles le seront. J'ai un contact Microsoft qui m'a aidé avec le pont de bureau. Je pense qu'il va regarder ça plus loin. J'aimerais que quelqu'un d'autre prenne un coup d'oeil, mais j'aurais probablement besoin de partager des informations et des morceaux qui ne seraient pas appropriés ici sur Stackoverflow. –