Bonjour tout le monde,

Notre application delphi est installée chez nos clients et elle apparaît dans "Programmes et fonctionnalités" (Ou Ajout/Suppression de programme sous XP) en tant que "NomDuProduit vx.x"

vx.x étant la version du produit lors de son installation.

Lorsque nous faisons des mises à jour de notre produit, nous remplaçons les exécutables et les dll de l'application. Nous réalisons ensuite une mise à jour de notre base de données.

Nous aimerions pouvoir modifier la version du produit telle qu'elle apparaît dans vx.x

Après quelques recherches, j'ai réussi à changer manuellement ce nom en modifiant la valeur "ProductName" dans la clé "HKLM\SOFTWARE\CLASSES\INSTALLER\PRODUCTS\A1BXXXXXXX...\" de la manière suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
procedure TForm1.btnChangerVersionClick(Sender: TObject);
 
var
  MyRegistry: TRegistry;
  iKey: Integer;
  valKey: string;
  MyList: TStringList;
 
Begin
     If edtVersion.Text = '' Then Exit;
 
     MyRegistry:=TRegistry.Create;
     MyList:=TStringList.Create;
     With MyRegistry Do
     Begin
          RootKey:=HKEY_LOCAL_MACHINE;
          If OpenKey(strRootKey,False) = True Then GetKeyNames(MyList);
          CloseKey;
 
          For iKey:=0 To MyList.Count-1 Do
          Begin
               RootKey:=HKEY_LOCAL_MACHINE;
               OpenKey(strRootKey+MyList[iKey],False);
               valKey:=ReadString(strNomCle);
               If Pos(UpperCase(strNomAppli),UpperCase(valKey)) > 0 Then
               WriteString(strNomCle,strNomAppli+edtVersion.Text);
               CloseKey;
          End;
     End;
End;
J'ai plusieurs questions à ce sujet :
- Mon approche pour changer ce nom (En modifiant ProductName) est-elle correcte?
- La clé dans laquelle il faut rechercher "ProductName" est-elle toujours identique (Windows XP/Vista/7/8, 32 ou 64 bits)?
- Actuellement, pour retrouver ma bonne clé, je parcours toutes les clés de "PRODUCTS" et je recherche le bon ProductName. Y a-t-il un moyen de connaître le nom "A1BXXXXX...\ d'après mon exécutable pour pouvoir y accéder directement?

Merci d'avance de vos réponses

Salutations

Nono