J'utilise l'excellent programme d'installation Inno Setup et je remarque que certaines applications (souvent de Microsoft) sont installées avec leur icône de lancement déjà très visible ('bloquée?') Dans le menu Démarrer (sous Windows 7). Suis-je totalement dépendant de l'algorithme le plus récemment utilisé pour mon icône pour être "grand" dans le menu Démarrer ou existe-t-il un moyen de promouvoir mon application à partir de l'installateur s'il vous plaît? P>
3 Réponses :
Regardez à: http://blogs.technet.com/deploymentguys/archive/2009/04/08/pin-items-a-the-start-menu-or- Windows-7-Taskbar-via-script.aspx P>
Et comme indiqué dans cet article, il y a une raison qu'il n'y a pas d'API pour épingler directement. S'il vous plaît ne spamez pas le bureau / la barre des tâches / StartMenu / etc.
Il y a une raison là-bas, il y a Aucune manière programmatique Pour broyer les choses dans le menu Barre de tâches / Démarrer. Dans mon expérience, j'ai vu le menu de démarrage Mettre en évidence nouvellement créé Raccourcis , et c'est conçu pour gérer exactement cette situation. Lorsque vous voyez un programme nouvellement installé apparaître dans le menu Démarrer, c'est probablement à cause de cet algorithme et non parce que l'installateur l'a placé là-bas. P>
qui dit, si un nouveau raccourci ne pas em> apparaît en surbrillance, il peut s'agir du fait que l'installateur extrait un raccourci préexistant et conserve un horodatage ancien, plutôt que d'utiliser la fonction API pour créer un raccourci dans le menu Démarrer. P>
Il est possible de broder des programmes, mais pas officiellement. Basé sur un code posté dans ce fil code>
(qui utilise la même manière que celle décrite dans l'article lié par @mark Redman) J'ai écrit ce qui suit:
if UnpinAppFrom(ExpandConstant('{sys}\calc.exe'), pdTaskbar) then MsgBox('Calc is not pinned to the taskbar anymore.', mbInformation, MB_OK); if UnpinAppFrom(ExpandConstant('{sys}\calc.exe'), pdStartMenu) then MsgBox('Calc is not pinned to the start menu anymore.', mbInformation, MB_OK);
OMG, combien d'heures avez-vous essayé de comprendre cela? Merci beaucoup!
@Tmighty, je suis content que cela ait aidé quelqu'un! Et cela m'a pris moins d'une heure; C'est juste un code refouturé du fil lié :-)
Merci! :-) Pouvez-vous me dire votre moyen préféré d'exécuter votre code? Je veux dire le "Si Pinappto (expandactsant ('{sys} \ calc.exe'), pdtaskbar) alors ...". Où faites-vous cela? Le définissez-vous comme tâche ou exécutez-vous automatiquement ce code? Je n'ai jamais couru un code avant, à l'exception de l'installation des runtimes de VCreDist_x86 que j'ai couru à l'aide de [Run] "" nom_fichier: "{tmp} \ gcredist_x86.exe"; paramètres: "/ q"; chèque: mrscredistneedsInstall. C'était juste un exe que je dû courir, pas une fonction comme la vôtre.
@Tmighty, je n'ai jamais été invité à déployer une application qui s'impouche quelque part. C'est ce que les utilisateurs doivent faire eux-mêmes en premier lieu. Mais s'il y aurait une telle exigence, une tâche serait assez juste, je pense (car les tâches sont généralement utilisées pour confirmer la création d'icônes). Pour exécuter J'utiliserais l'étape d'installation de poteau code>
.
Incroyable! Attachez mon application au menu Démarrer fonctionne. L'attachement à la barre de tâches ne fonctionne pas encore, mais le menu Démarrer était mon objectif principal. Merci beaucoup encore une fois! Je vais essayer de comprendre ce qui ne va pas à ajouter mon application à la barre des tâches.
La barre des tâches a également fonctionné. Il a simplement pris quelques minutes pour rafraîchir, je pense. Merci beaucoup!
Sous Windows 7 et la fenêtre 8, cela fonctionne bien. Cependant, sur Windows XP, je reçois l'erreur "La variante est NULL, impossible d'invoquer". Avez-vous une idée de la façon de résoudre ce problème?
@Tmighty, il est fort possible que sur Windows XP, ces noms de verbe soient stockés sur différents indices de ressources dans la bibliothèque Shell32.dll. Vous pouvez trouver ces noms si vous ouvrez (une copie de) la bibliothèque Shell32.dll dans certains travaux d'éditeur de ressources et trouvez dans sa table de ressources à chaîne un élément qui correspond à l'élément de menu contextuel utilisé dans l'application PIN pour lancer le menu (bien sûr, il y a Aucun pour la barre des tâches épinglé depuis que cela a été ajouté à Vista).
Je suis un débutant total en ce qui concerne le code de Inno Configuration. Pensez-vous que vous pouvez éditer votre code afin que je puisse voir comment sauter la barre des tâches épinglé pour les fenêtres pré-vista?
@TMighty, vous pouvez utiliser cette fonction d'aide code>
. Il retourne true si vous exécutez Windows Vista ou ci-dessus, false sinon.
Sur "Windows 8.1 64bit avec le centre des médias", cela ne fonctionne pas. Avez-vous déjà découvert comment faire cela sur ce système d'exploitation?
J'ai fait l'objet d'une enquête et la chaîne "PIN à" "Démarrer" "ne doit pas être trouvée sur" Windows 8.1 avec MediaCenter "dans user32.dll, kernel32.dll ou shell32.dll. Hmmmm. Je n'ai aucune idée d'où cela pourrait être trouvé.
@Tmighty, j'ai bien peur de ne pouvoir m'empêcher ici. Il est difficile de dire pour moi que même si vous trouvez cet élément de menu, il y aura les mêmes services Windows Shell que sur les versions de bureau classiques.
@Tlama Comment puis-je épingler à la barre des tâches avec argument? EDIT: J'ai essayé sans argument maintenant et dans la dernière page d'installateur, il échoue à la goupille de Windows 10. La liste des verbes ne contient rien de code PIN à la barre des tâches. Mais il a une épingle pour commencer ce que je n'ai pas besoin.