Partager via


Mise à jour corrective des régions sélectionnées d’un fichier

Lors d’une mise à jour corrective de fichiers ayant du contenu variable, il peut être nécessaire de conserver les régions sélectionnées du fichier cible pour éviter la perte d’informations critiques. Par exemple, certaines applications horodatent les informations utilisateur dans le fichier exécutable. Étant donné que le contenu du fichier cible peut changer en fonction de l’ordinateur sur lequel l’application est installée, il devient difficile de déterminer si un fichier particulier est une cible valide pour le correctif. Les informations utilisateur écrites dans le fichier cible peuvent également être remplacées par un correctif.

Lorsque vous générez un fichier de propriétés de création de correctif (PCP) avec Msimsp.exe et PATCHWIZ.DLL, vous pouvez spécifier que les informations dans certaines régions du fichier cible soient ignorées durant la mise à jour corrective. Vous pouvez aussi spécifier que les informations d’autres régions du fichier cible soient conservées et copiées dans un emplacement de décalage dans le fichier mis à jour. Vous spécifiez les régions du fichier cible à ignorer et les régions à conserver lors de la création des tables TargetFiles OptionalData, ExternalFiles et FamilyFileRanges.

Utilisez la colonne RetainOffsets de la table TargetFiles OptionalData ainsi que les colonnes RetainOffsets et RetainLengths de la table FamilyFileRanges pour copier une plage d’informations du fichier cible vers une plage de décalage dans le fichier mis à jour. Les informations de cette plage sont conservées. Spécifiez la longueur de la plage avec les colonnes RetainLengths de la table FamilyFileRanges. La longueur de la plage conservée est la même dans le fichier cible et le fichier mis à jour. Spécifiez le décalage de la plage dans le fichier cible avec la colonne RetainOffsets de la table TargetFiles OptionalData. Spécifiez le décalage de la plage dans le fichier mis à jour avec la colonne RetainOffsets de la table FamilyFileRanges. La plage du fichier cible conservée est donc la valeur de RetainOffsets dans la table TargetFiles OptionalData plus RetainLengths. Ces informations sont copiées dans le fichier mis à jour dans la plage définie par la valeur de RetainOffsets dans les tables FamilyFileRanges plus RetainLengths. Vous pouvez spécifier plusieurs plages, mais l’ordre des longueurs doit correspondre à l’ordre des décalages.

Utilisez la table TargetFiles OptionalData pour ignorer une plage du fichier cible. Les informations contenues dans cette plage du fichier cible peuvent être remplacées par le correctif. Spécifiez le décalage de la plage dans la colonne IgnoreOffsets et sa longueur dans la colonne IgnoreLengths. Vous pouvez spécifier plusieurs plages, mais l’ordre des longueurs doit correspondre à l’ordre des décalages.

Les valeurs des colonnes de longueurs et de décalages peuvent être décimales ou hexadécimales. PATCHWIZ.DLL traite la valeur comme une valeur hexadécimale si elle est précédée de « 0x ». Les colonnes sont des colonnes de type chaîne, et PATCHWIZ.DLL convertit les valeurs en ULONG. La colonne de longueur spécifie la longueur en octets.