5 votes

Où le nombre de dossiers est-il conservé ?

Lorsque j'installe une application qui a un fichier somet.txt il l'installe à un certain endroit C:\temp et Windows garde un registre indiquant qu'il a été installé 1 fois.

Si une autre application installe le même fichier avec le même identifiant au même endroit, le nombre d'installations est porté à 2.

Ainsi, si vous voulez supprimer complètement ce fichier, vous devez désinstaller les deux applications avant de supprimer le fichier.

Je recherche la possibilité de lire ce compte/éditer ce compte/etc.

Quelqu'un sait-il comment faire, soit manuellement/via wix/via c# ?

J'ai trouvé cette information

le programme d'installation incrémente le nombre de références dans le registre DLL partagé du fichier clé du composant.

4voto

Wim Coenen Points 41940

Il existe deux mécanismes distincts de comptage des références dans le programme d'installation de Windows, et les autres réponses font chacune référence à des mécanismes différents :

  1. Les composants (et non les fichiers) sont comptés en référence par le nombre de produits installés qui s'y réfèrent. Pour cela, il faut que le composant ait le même GUID et le même nom de fichier. chemin des clés dans les différents produits qui y font référence.

  2. Il existe également un héritage SharedDllRefCount mécanisme qui peut être activé pour le chemin de clés d'un composant. Cela fonctionne sur les chemins de fichiers, donc cela fonctionnera même si les GUID des composants ne correspondent pas. Cependant, les produits pas nécessaire pour incrémenter/décrémenter correctement ce compte de référence, donc cette utilisation n'est pas recommandée. Le comportement par défaut de wix est d'incrémenter ce nombre de référence uniquement s'il est déjà présent.

Ces comptes de référence sont utilisés en interne dans le programme d'installation de Windows : lorsqu'ils atteignent tous deux zéro, le composant est désinstallé. AFAIK le API de l'installateur Windows n'expose ce nombre de références nulle part car vous ne devriez pas avoir besoin de les lire ou de les modifier directement.

3voto

harper Points 5962

Les fichiers sont inclus dans les composants. Les composants sont référencés dans les produits. Le nombre de références n'est pas stocké comme un nombre mais les références des produits aux composants sont considérées comme ce nombre.

Pour désinstaller un composant qui inclut votre fichier, vous devez désinstaller tous les produits qui font référence à ce composant.

2voto

Steve Townsend Points 36948

Le registre des DLL partagées se trouve à

HKEY_LOCAL_MACHINE \SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs

Si vous modifiez ceci, vous obtiendrez un comportement non défini.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X