obtenir installé la version d'une application à l'aide de c#
Je voudrais installer la version d'une application (par exemple, MyApp) à l'aide de C#.
Je vais faire beaucoup plus,
1. Créer un "Set Up" pour MyApp de la version 5.6
2. Installer MyApp.
Je vais créer une autre application (dire VersionTracker)pour obtenir la version des applications installées. Donc, si je passe le nom de 'MyApp' je voudrais obtenir la version '5.6'. Si une autre application dire Adobe Reader est installé sur mon système, je veux obtenir la version d'Adobe Reader si je passe Adobe Reader.
J'ai besoin de savoir comment construire des "VersionTracker'
Nous avons besoin de plus de détails. Quel outil utilisez-vous, que faites-vous exactement en train de faire, qu'avez-vous essayé?
Je suis d'accord. Cette question est extrêmement ambiguë. En d'autres termes, wtf parlez-vous?
Vous passez le nom "MyApp" d'où exactement? Dans l'application elle-même? Dans une autre partie de Windows? Où avez-vous mis dans ce nom? Certains de recherche?
Je suis d'accord. Cette question est extrêmement ambiguë. En d'autres termes, wtf parlez-vous?
Vous passez le nom "MyApp" d'où exactement? Dans l'application elle-même? Dans une autre partie de Windows? Où avez-vous mis dans ce nom? Certains de recherche?
OriginalL'auteur mmk_open | 2011-07-02
Vous devez vous connecter pour publier un commentaire.
La première et la chose la plus importante est que toutes les applications ne faire enregistrer leur version quelque part dans le système. Pour être honnête, seuls quelques-uns d'entre eux de le faire. L'endroit où vous devriez regarder sont le Registre de Windows. La plupart des applications installées mettre leurs données d'installation dans l'endroit suivant:
Cependant, il n'est pas facile - la version 64bit de Windows, le 32-bit (x86) applications enregistrer leurs données d'installation dans un autre registre, qui est:
Dans ces clés il y a beaucoup de touches, certains d'entre eux ont obtenu "lisibles" nom", comme
Google Chrome
, certains d'entre eux ont des noms tels que{63E5CDBF-8214-4F03-84F8-CD3CE48639AD}
. Vous devez analyser toutes ces clés dans votre application et de commencer à chercher les noms de l'application. Il y a généralement dansDisplayName
valeur, mais il n'est pas toujours vrai. La version de l'application est généralement dansDisplayVersion
valeur, mais certains installateurs ne utiliser d'autres valeurs, telles queInno Setup: Setup Version
, ... Certaines applications ont leur version écrite en son nom, il est donc possible que la version de l'application est déjà dans leDisplayName
valeur.Remarque: Il n'est pas facile d'analyser toutes ces clés de registre et les valeurs de et pour "ramasser" les valeurs correctes. Pas tous les installateurs d'enregistrer les données de l'application de ces touches, certains d'entre eux n'enregistrez pas la version de l'application il y, etcetera. Cependant, il est habituel que l'utilisation de l'application de ces clés de registre. [Source: StackOverflow: Détecter les programmes installés par le registre, la navigation sur mon propre registre]
Bon, alors maintenant, quand vous savez où vous devriez regarder, vous devez programmer tout en C#. Je ne vais pas écrire l'application pour vous, mais je vais vous dire ce que les classes que vous devez utiliser et comment. Tout d'abord, vous avez besoin de ces:
Pour se rendre à votre
HKEY_LOCAL_MACHINE
, créer unRegistryKey
comme ceci:Maintenant, vous devez définir les sous-clés:
Maintenant, vous devez aller à la sous-clé, afin de créer un nouveau
RegistryKey
:Maintenant, vous devez passer par tous les sous-clés qui sont là, nous avons d'abord obtenir les noms de tous les sous-clés:
Maintenant vous devez passer par toutes les sous-clés vous-même, un par un, par la création d'une nouvelle clé de registre (vous n'avez pas à, mais je vais le faire):
où
applicationSubKeyName
est le nom de la sous-clé que vous êtes en train de les vérifier. Je recommandeforeach
déclaration, qui vous aide à vous (vous devez cependant avoir une certaine expérience avec C# déjà, je ne vais pas vous dire comment utiliserforeach
ici).Maintenant, vérifiez le nom de l'application et de le comparer avec le nom de l'application de votre choix (vous ne pouvez pas compter sur la sous-clé nom, parce que, comme je l'ai déjà dit, ils peuvent être appelés par exemple
{63E5CDBF-8214-4F03-84F8-CD3CE48639AD}
, de sorte que vous devez vérifier le nom ici):Si c'est de la bonne application (vous devez vérifier par vous même), retrouvez la version:
Et voilà, vous avez la version. Au moins il y a comme un 60 - 80% de chance que vous avez...
Rappelez-vous! Si certains grands ou la valeur n'existe pas, la méthode renvoie
null
. N'oubliez pas de vérifier si la valeur retournée est null à chaque fois, sinon votre demande en panne.Où trouver de plus? Le Code du Projet: Lire, écrire et supprimer à partir du registre avec C#
J'espère vraiment que je vous ai aidé. Et si vous voulez savoir quelque chose d'autre et je n'ai pas compris votre question, alors, s'il vous plaît, demandez à mieux la prochaine fois. 🙂
Citation: "je ne vais pas écrire l'application pour vous..." - oh, bien sûr, vous ne. 🙂
OriginalL'auteur TomsonTom
OriginalL'auteur mmk_open