Exemple de création de package unique
L’exemple PUASample.msi est un exemple de package Windows Installer 5.0 à double usage qui peut être installé dans le contexte d’installation par utilisateur ou par ordinateur sur Windows Server 2008 R2 et Windows 7. Cet exemple de package suit les instructions de développement décrites dans Création de package unique.
Obtention d’une copie de l’exemple
Une copie de cet exemple et un éditeur de table de base de données Windows Installer, Orca.exe, se trouvent dans les composants du Kit de développement logiciel (SDK) Windows pour les développeurs Windows Installer. L’exemple et l’éditeur de table sont fournis avec le Kit de développement logiciel Windows pour Windows Server 2008 R2 et Windows 7 en tant que fichiers d’installation de Windows Installer PUASample1.msi et Orca.msi.
Configuration requise
L’éditeur de base de données, Orca.exe, nécessite Windows Server 2008 R2 et versions antérieures et Windows 7 et versions antérieures. Le package à double usage, PUASample1.msi, peut être installé dans le contexte d’installation par ordinateur ou par utilisateur sur Windows Server 2008 R2 et Windows 7. PUASample1.msi ne peuvent être installés que dans le contexte par machine sur Windows Server 2008 et versions antérieures et Windows Vista et versions antérieures. Vous pouvez installer l’éditeur de base de données pour examiner le contenu de PUASample1.msi sans installer l’exemple. Pour installer les packages d’exemple ou d’éditeur, vérifiez que la stratégie DisableMSI n’est pas définie sur une valeur qui bloque les installations d’application.
Identification d’un package Dual-Purpose
Les packages à double usage doivent initialiser la valeur de la propriété MSIINSTALLPERUSER sur 1. Cela identifie le package comme pouvant être installé dans le contexte par ordinateur ou par utilisateur sur Windows Server 2008 R2 et Windows 7. Définissez la propriété MSIINSTALLPERUSER dans le package uniquement si elle a été écrite conformément aux instructions de développement décrites dans Création de package unique et si vous avez l’intention de fournir aux utilisateurs la possibilité d’installer le package dans le contexte par utilisateur ou par machine. Un package à double usage doit également initialiser la valeur de la propriété ALLUSERS sur 2. Cela spécifie par utilisateur comme contexte d’installation par défaut pour l’application. Si la valeur de la propriété ALLUSERS n’est pas égale à 2, Windows Installer ignore la valeur de la propriété MSIINSTALLPERUSER.
Utilisez un éditeur de base de données Windows Installer, tel que Orca.exe, pour examiner le contenu de PUASample1.msi. La table Property dans l’exemple de package contient les deux entrées suivantes.
Propriété Table (partielle)
Propriété | Valeur |
---|---|
ALLUSERS | 2 |
MSIINSTALLPERUSER | 1 |
Boîte de dialogue personnalisée pour le contexte d’installation
L’interface utilisateur de l’exemple de package inclut un exemple de boîte de dialogue personnalisée, VerifyReadyDialog, qui permet aux utilisateurs de sélectionner le contexte d’installation par utilisateur ou par ordinateur au moment de l’installation. La table Dialog contient un enregistrement qui décrit la boîte de dialogue VerifyReadyDialog. La valeur entrée dans le champ Attributs est 39, car cette boîte de dialogue utilise les bits de style de dialogue msidbDialogAttributesVisible (1), msidbDialogAttributesModal (2), msidbDialogAttributesMinimize (4) et msidbDialogAttributesTrackDiskSpace (32). La barre de titre de la boîte de dialogue affiche un titre donné par la valeur de la propriété ProductName .
Table Dialog (partielle)
Boîte de dialogue | HCentering | VCentering | Largeur | Hauteur | Attributs | Titre | Control_First | Control_Default | Control_Cancel |
---|---|---|---|---|---|---|---|---|---|
VerifyReadyDialog | 50 | 50 | 480 | 280 | 39 | [ProductName] | InstallPerUser | Suivant | Annuler |
La table Control contient des entrées pour les contrôles affichés par la boîte de dialogue VerifyReadyDialog. La boîte de dialogue affiche les contrôles PushButton et un contrôle Texte . Tous les contrôles utilisent les attributs de contrôle msidbControlAttributesEnabled (2) et msidbControlAttributesVisible (1). Le contrôle InstallPerMachine utilise également l’attribut de contrôle ElevationShield , msidbControlAttributesElevationShield (8388608.) Cet attribut de contrôle ajoute l’icône d’élévation du contrôle de compte d’utilisateur (icône de bouclier) au contrôle InstallPerMachine et informe l’utilisateur que les informations d’identification UAC sont nécessaires pour installer l’application dans le contexte par machine. La valeur dans le champ Texte de la table Contrôle est le style de texte et le texte affichés par le contrôle. Pour plus d’informations sur l’ajout de texte à un contrôle à l’aide de styles prédéfinis, consultez la description du champ Texte de la table De contrôle.
Table Control (partielle)
Dialog_ | Control | Type | Attribut | Texte | Control_Next |
---|---|---|---|---|---|
VerifyReadyDialog | Annuler | Bouton | 3 | {\Tahoma10}&Cancel | Suivant |
VerifyReadyDialog | Précédent | Bouton | 3 | {\Tahoma10}<<&Previous | Annuler |
VerifyReadyDialog | Suivant | Bouton | 3 | {\Tahoma10}&Next >> | InstallPerUser |
VerifyReadyDialog | Text2 | Texte | 3 | Êtes-vous prêt à terminer votre installation suspendue ? | |
VerifyReadyDialog | InstallPerUser | Bouton | 3 | {\Tahoma10} Installer uniquement pour &moi | InstallPerMachine |
VerifyReadyDialog | InstallPerMachine | Bouton | 8388611 | {\Tahoma10} Installer pour &tout le monde | Précédent |
VerifyReadyDialog | Annuler | Bouton | 3 | {\Tahoma10}&Cancel | Suivant |
La table ControlEvent spécifie les actions ControlEvents effectuées par le programme d’installation lorsque l’utilisateur interagit avec un contrôle. Lorsqu’un utilisateur active le bouton pushbutton InstallPerUser, l’interface utilisateur affiche une boîte de dialogue OutOfDisk si la propriété OutOfDiskSpace a la valeur 1, définit la valeur de la propriété MSIINSTALLPERUSER sur 1, définit la valeur de la propriété ALLUSERS sur 2, définit la propriété MSIFASTINSTALL sur 1 et retourne . Étant donné que la propriété MSIFASTINSTALL est définie, aucun point de restauration du système n’est généré pour l’installation. Lorsqu’un utilisateur active le bouton pushbutton InstallPerMachine, l’interface utilisateur affiche une boîte de dialogue OutOfDisk si la propriété OutOfDiskSpace a la valeur 1, définit la valeur de la propriété ALLUSERS sur 1 et retourne.
Table ControlEvent (partielle)
Dialog_ | Control_ | Événement | Argument | Condition | JSON |
---|---|---|---|---|---|
VerifyReadyDialog | InstallPerUser | SpawnDialog | OutOfDisk | OutOfDiskSpace = 1 | 1 |
VerifyReadyDialog | InstallPerUser | EndDialog | Renvoie | OutOfDiskSpace <> 1 | 5 |
VerifyReadyDialog | InstallPerUser | [MSIINSTALLPERUSER] | 1 | 1 | 2 |
VerifyReadyDialog | InstallPerUser | [ALLUSERS] | 2 | 1 | 3 |
VerifyReadyDialog | InstallPerMachine | SpawnDialog | OutOfDisk | OutOfDiskSpace = 1 | 1 |
VerifyReadyDialog | InstallPerMachine | EndDialog | Renvoie | OutOfDiskSpace <> 1 | 3 |
VerifyReadyDialog | InstallPerMachine | [ALLUSERS] | 1 | 1 | 2 |
VerifyReadyDialog | InstallPerUser | [MSIFASTINSTALL] | 1 | 1 | 4 |
Le contrôle InstallPerUser doit être supprimé de l’interface utilisateur de toute installation utilisant une version de Windows Installer antérieure à Windows Installer 5.0. La table ControlCondition de l’exemple de package contient quatre entrées qui désactivent et masquent le contrôle InstallPerUser si la version actuelle est inférieure à Windows Installer 5.0. La table utilise la valeur de la propriété VersionMsi et la syntaxe d’instruction conditionnelle pour définir cette condition. L’action spécifiée dans le champ Action est exécutée uniquement si l’instruction dans le champ Condition a la valeur true.
ControlConditionTable (partielle)
Dialog_ | Control_ | Action | Condition |
---|---|---|---|
VerifyReadyDialog | InstallPerUser | Activer | VersionMsi >= "5.00" |
VerifyReadyDialog | InstallPerUser | Désactiver | VersionMsi <= "5.00" |
VerifyReadyDialog | InstallPerUser | Afficher | VersionMsi >= "5.00" |
VerifyReadyDialog | InstallPerUser | Masquer | VersionMsi <= "5.00" |
Spécification de la structure de répertoires
Utilisez l’éditeur de base de données pour examiner la table Directory de PUASample1.msi. L’enregistrement de la table d’annuaires contenant une chaîne vide dans son champ Directory_Parent représente le répertoire racine des arborescences de répertoires source et cible. Si la propriété TARGETDIR n’est pas définie, le programme d’installation définit sa valeur au moment de l’installation sur la valeur de la propriété ROOTDRIVE . Si la propriété SourceDir n’est pas définie, le programme d’installation définit sa valeur sur l’emplacement du répertoire contenant le package Windows Installer (fichier .msi.) Les noms de répertoires sont spécifiés à l’aide du format court|long.
RépertoireTable (partielle)
Répertoire | Directory_Parent | DefaultDir |
---|---|---|
TARGETDIR | SourceDir | |
ProgramFilesFolder | TARGETDIR | . |
ProgramMenuFolder | TARGETDIR | . |
INSTALLLOCATION | MyVendor | Sample1|MSDN-PUASample1 |
MyVendor | ProgramFilesFolder | Msft|Microsoft |
À la source, cette table Répertoire correspond aux chemins d’accès de répertoire suivants.
- \[SourceDir\]\\Msft\\Sample1 \[SourceDir\]
Sur la cible, la table Répertoire est résolue en chemins d’accès dans le tableau suivant. Le programme d’installation définit les valeurs des propriétés ProgramFilesFolder et ProgramMenuFolder sur des emplacements qui dépendent du contexte d’installation et si le système est les versions 32 bits ou 64 bits de Windows Server 2008 R2 et Windows 7. Les chemins d’accès aux dossiers cibles varient selon que l’utilisateur sélectionne une installation par utilisateur ou par ordinateur.
Contexte d’installation | Système | Exemples de chemins d’accès |
---|---|---|
Per-Machine | Windows Server 2008 R2 et Windows 7 Version 32 bits |
%ProgramFiles%\Msft\Sample1 %ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs |
Per-Machine | Windows Server 2008 R2 et Windows 7 Version 64 bits |
%ProgramFiles(x86)%\Msft\Sample1 %ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs |
Par utilisateur | Windows Server 2008 R2 et Windows 7 Version 32 bits ou 64 bits |
%USERPROFILE%\AppData\Local\Programs\Msft\Sample1 %APPDATA%\Microsoft\Windows\Start Menu\Programs |
Les applications par utilisateur doivent être stockées dans des sous-dossiers sous le dossier Programmes spécifié par la valeur de la propriété ProgramFilesFolder . En règle générale, le chemin d’accès à l’application prend la forme suivante.
%LOCALAPPDATA%\Programs\ISV name\AppName.
Les données de configuration par utilisateur doivent être stockées dans le dossier Programmes spécifié par la valeur de la propriété ProgramMenuFolder . En règle générale, ce dossier se trouve au chemin d’accès suivant.
%APPDATA%\Microsoft\Windows\Start Menu\Programs
Si vous installez des composants de package Windows Installer 32 bits , utilisez les propriétés ProgramFilesFolder et CommonFilesFolder dans la table Directory . Si vous installez des composants de package Windows Installer 64 bits , utilisez les propriétés ProgramFiles64Folder et CommonFiles64Folder . Si votre application contient des versions 32 bits et 64 bits du même composant, avec le même nom, vérifiez que ces versions sont enregistrées dans des répertoires différents ou donnez-leur des noms différents.
Le tableau Répertoire suivant fournit un exemple de disposition d’annuaire compatible avec un package qui comprend des composants 32 bits et 64 bits et certains composants qui sont partagés entre les applications.
Répertoire | Directory_Parent | DefaultDir |
---|---|---|
TARGETDIR | SourceDir | |
ProgramFilesFolder | TARGETDIR | .:Prog32 |
ProgramFiles64Folder | TARGETDIR | .:Prog64 |
CommonFilesFolder | TARGETDIR | .:Share32 |
CommonFiles64Folder | TARGETDIR | .:Share64 |
ProgramMenuFolder | TARGETDIR | .:Sample1|MSDN-PUASample1 |
INSTALLLOCATION | MyVendor | Sample1|MSDN-PUASample1 |
INSTALLLOCATIONX64 | Vendorx64 | Sample1|MSDN-PUASample1 |
SHAREDLOCATION | ShVendor | Sample1|MSDN-PUASample1 |
SHAREDLOCATIONX64 | ShVendorx64 | Sample1|MSDN-PUASample1 |
MyVendor | ProgramFilesFolder | Msft|Microsoft |
Vendorx64 | ProgramFiles64Folder | Msft|Microsoft |
ShVendor | CommonFilesFolder | Msft|Microsoft |
ShVendorx64 | CommonFiles64Folder | Msft|Microsoft |
Shrx86 | SHAREDLOCATION | Composants x32|32 bits |
Shrx64 | SHAREDLOCATIONX64 | Composants x64|64 bits |
Binx86 | INSTALLLOCATION | Composants x32|32 bits |
Binx64 | INSTALLLOCATIONX64 | Composants x64|64 bits |
App32 | Binx86 | composants myapp|unshared 32 bits |
App64 | Binx64 | composants myapp|unshared 64 bits |
Share32 | Shrx86 | composants 32 bits partagés|partagés |
Share64 | Shrx64 | composants 64 bits partagés|partagés |
À la source, cette table Répertoire correspond aux chemins d’accès de répertoire suivants.
- \[SourceDir\]Prog32\\Msft\\Sample1\\x32\\myapp \[SourceDir\]Share32\\Common Files\\Msft\\Sample1\\x32\\shared \[SourceDir\]Prog64\\Msft\\Sample1\\x64\\myapp \[SourceDir\]Share64\\Common Files\\Msft\\Sample1\\x64\\shared \[SourceDir\]Sample1
À la source, cette table Répertoire correspond aux chemins d’accès de répertoire suivants. Les chemins d’accès cibles dépendent du contexte d’installation et du système.
Contexte d’installation | Système | Exemples de chemins d’accès |
---|---|---|
Per-Machine | Windows Server 2008 R2 et Windows 7 Version 32 bits |
%ProgramFiles%\Msft\Sample1\x32\myapp %ProgramFiles%\Common Files\Msft\Sample1\x32\shared %ProgramFiles(x86)%\Msft\Sample1\x64\myapp %ProgramFiles(x86)%\Common Files\Msft\Sample1\x64\shared %ProgramData%\Microsoft\Windows\Start Menu\Programs\Sample1 |
Per-Machine | Windows Server 2008 R2 et Windows 7 Version 64 bits |
%ProgramFiles(x86)%\Msft\Sample1\x32\myapp %ProgramFiles(x86)%\Common Files\Msft\Sample1\x32\shared %ProgramFiles%\Msft\Sample1\x64\myapp %ProgramFiles%\Common Files\Msft\Sample1\x64\shared %ProgramData%\Microsoft\Windows\Start Menu\Programs\Sample1 |
Par utilisateur | Windows Server 2008 R2 et Windows 7 Version 32 bits ou 64 bits |
%LOCALAPPDATA%\Programs\Msft\Sample1\x32\myapp %LOCALAPPDATA%\Programs\Common\Msft\Sample1\x32\shared %LOCALAPPDATA%\Programs\Msft\Sample1\x64\myapp %LOCALAPPDATA%\Programs\Common\Msft\Sample1\x64\shared %APPDATA%\Microsoft\Windows\Start Menu\Programs\Sample1 |
Inscription d’application
Le PUASample.msi ajoute une sous-clé à la clé de Registre Chemins d’accès de l’application pour l’application et effectue des inscriptions qui permettent d’enregistrer les informations de l’application dans le Registre sous cette clé. Pour plus d’informations sur les chemins d’accès des applications et l’inscription des applications, consultez la section PerceivedTypes, SystemFileAssociations et Inscription des applications dans la section extensibilité de l’interpréteur de commandes du Guide du développeur Shell. Au moment de l’installation, l’utilisateur prend la décision d’installer l’application dans le contexte d’installation par utilisateur ou par machine. Au moment de la création du package à double usage, le développeur de package ne peut pas savoir si les inscriptions doivent être effectuées sous les clés HKEY_LOCAL_MACHINE ou HKEY_CURRENT_USER.
Le développeur de package définit l’identificateur de fichier pour le fichier exécutable de l’application dans le champ Fichier de la table de fichiers .
Table File (partielle)
Fichier | Component_ | FileName | FileSize | Version | Langage | Attributs | Séquence |
---|---|---|---|---|---|---|---|
MyAppFile | ProductComponent | PUASAMP1.EXE|PUASample1.exe | 81920 | 0 | 1 |
Les valeurs à enregistrer dans le Registre peuvent être spécifiées dans le champ Valeur de la table Registre sous forme de chaîne mise en forme . Utilisez l’identificateur de fichier défini dans le champ Fichier de la table Fichier et la convention [#filekey] du type mis en forme pour spécifier la valeur par défaut de la clé de Registre Chemins d’accès de l’application. L’action INSTALL de niveau supérieur effectue les actions dans la table InstallExecuteSequence . Une fois les actions CostInitialize, FileCost et InstallFinalize de ce tableau terminées, Windows Installer remplace la sous-chaîne mise en forme [#MyAppFile] dans la table Registre par le chemin d’accès complet au fichier d’application.
L’exemple définit une propriété personnalisée, RegRoot, pour contenir l’emplacement de la clé racine et utilise une action personnalisée pour réinitialiser la valeur de la propriété si l’utilisateur choisit une installation par ordinateur. Utilisez la propriété personnalisée RegRoot dans toutes les valeurs de chaîne mises en forme qui référencent l’emplacement racine. Dans la table Property , le package PUASample.msi définit la propriété personnalisée et définit la valeur de RegRoot sur HKCU. Cela initialise la valeur de la propriété pour le contexte d’installation par utilisateur, le contexte par défaut recommandé pour les packages à double usage.
Propriété Table (partielle)
Propriété | Valeur |
---|---|
RegRoot | HKCU |
Dans la table CustomAction , le package définit une action personnalisée nommée Set_RegRoot_HKLM. La valeur dans le champ Type identifie cette action en tant qu’action personnalisée standard de type 51 . La signification des champs Source et Cible dans la table CustomAction dépend du type d’action personnalisé. Pour plus d’informations sur les types standard d’actions personnalisées, consultez Types d’actions personnalisées. Le champ Source de l’action personnalisée Set_RegRoot_HKLM spécifie que la valeur de la propriété RegRoot. Si le programme d’installation effectue l’action personnalisée Set_RegRoot_HKLM, la valeur de la propriété RegRoot est réinitialisée à HKLM.
CustomActionTable (partielle)
Action | Type | Source | Cible |
---|---|---|---|
Set_RegRoot_HKLM | 51 | [RegRoot] | HKLM |
L’action INSTALL de niveau supérieur effectue les actions de la table InstallExecuteSequence , dans la séquence spécifiée dans le champ Séquence de cette table. La valeur créée dans le champ Séquence pour l’action personnalisée Set_RegRoot_HKLM (1501) spécifie que cette action personnalisée doit être effectuée après l’action InstallInitialize (1500) et avant l’action ProcessComponents (1600). Cette séquence garantit que l’enregistrement de l’action personnalisée Set_RegRoot_HKLM est évalué au moment de l’installation. Pour plus d’informations sur la séquence d’actions recommandée dans la table InstallExecuteSequence, consultez la rubrique InstallExecuteSequence suggérée . La syntaxe de l’instruction conditionnelle créée dans le champ Condition spécifie que l’action Set_RegRoot_HKLM doit être effectuée uniquement si la valeur de la propriété ALLUSERS est 1 au moment de l’installation. Une valeur de propriété ALLUSERS de 1 spécifie le contexte d’installation par ordinateur.
InstallExecuteSequenceTable (partielle)
Action | Condition | Séquence |
---|---|---|
Set_RegRoot_HKLM | ALLUSERS=1 | 1501 |
Les enregistrements suivants dans la table Registry effectuent les inscriptions si le composant ProductComponent est installé. La valeur -1 dans le champ Racine est requise pour effectuer l’inscription sous HKEY_LOCAL_MACHINE pour une installation par utilisateur et sous HKEY_CURRENT_USER pour une installation par utilisateur. L’enregistrement avec une chaîne vide dans le champ Registre ajoute une sous-clé pour l’application sous la clé de Registre AppPaths et définit la valeur « (Par défaut) » sur le chemin d’accès complet du fichier exécutable de l’application. L’inscription MyAppPathAlias mappe le fichier exécutable à un alias d’application et permet de lancer l’application si l’utilisateur tape l’alias « puapct » à une invite de ligne de commande. L’inscription MyAppPathRegistration mappe le nom du fichier exécutable au chemin d’accès complet du fichier.
Registre | Root | Clé | Nom | Valeur | Composant |
---|---|---|---|---|---|
-1 | Software\Microsoft\MyAppPathRegistrationLocation | [RegRoot]\Software\Microsoft\Windows\CurrentVersion\App Paths\PUAPCT.exe | ProductComponent | ||
MyAppPathAlias | -1 | Software\Microsoft\Windows\CurrentVersion\App Paths\PUAPCT.exe | [#MyAppFile] | ProductComponent | |
MyAppPathRegistration | -1 | Software\Microsoft\Windows\CurrentVersion\App Paths\PUASample1.exe | [#MyAppFile] | ProductComponent |
Annuler l’inscription en lecture automatique
Le PUASample.msi effectue des inscriptions qui permettent à l’utilisateur de l’application d’empêcher le lancement de la lecture automatique du matériel pour les appareils sélectionnés. Pour plus d’informations sur l’inscription d’un gestionnaire pour annuler la lecture automatique en réponse à un événement, consultez la rubrique Préparation du matériel et des logiciels à utiliser avec la lecture automatique dans la section extensibilité de l’interpréteur de commandes du Guide du développeur shell. L’enregistrement suivant inscrit le gestionnaire spécifié dans le champ Nom lors de l’installation du composant ProductComponent. La valeur -1 dans le champ Racine est requise pour spécifier à Windows Installer que l’inscription doit être redirigée vers un emplacement qui dépend du contexte d’installation.
Table Registre
Registre | Root | Clé | Nom | Valeur | Composant |
---|---|---|---|---|---|
MyAutoplayCancelRegistration | -1 | SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\CancelAutoplay\CLSID | 66A32FE6-229D-427b-A608-D273F40C034C | ProductComponent |
Inscription du gestionnaire en préversion
Le PUASample.msi effectue les inscriptions nécessaires à l’installation d’un gestionnaire d’aperçu qui active une préversion en lecture seule des fichiers .pua sans lancer l’application. Pour plus d’informations sur l’inscription des gestionnaires d’aperçu, consultez la rubrique Inscription des gestionnaires d’aperçu dans la section extensibilité de l’interpréteur de commandes du Guide du développeur shell. Les enregistrements suivants dans la table Registry effectuent les inscriptions si le composant ProductComponent est installé. La valeur -1 dans le champ Racine est requise pour spécifier à Windows Installer que l’inscription doit être redirigée vers un emplacement qui dépend du contexte d’installation.
Table Registre
Registre | Root | Clé | Nom | Valeur | Composant |
---|---|---|---|---|---|
MyPreviewHandlerRegistration1 | -1 | Software\Classes\.pua | puafile | ProductComponent | |
MyPreviewHandlerRegistration2 | -1 | Software\Microsoft\Windows\CurrentVersion\PreviewHandlers | {1531d583-8375-4d3f-b5fb-d23bbd169f22} | Gestionnaire microsoft Windows PUA TEST Preview | ProductComponent |
MyPreviewHandlerRegistration3 | -1 | Software\Classes\puafile\ShellEx\{8895b1c6-b41f-4c1c-a562-0d564250836f} | {1531d583-8375-4d3f-b5fb-d23bbd169f22} | ProductComponent | |
MyPreviewHandlerRegistration4 | -1 | Software\Classes\CLSID\{1531d583-8375-4d3f-b5fb-d23bbd169f22} | Per-User Exemple de gestionnaire d’application 1 Preview | ProductComponent | |
MyPreviewHandlerRegistration5 | -1 | Software\Classes\CLSID\{1531d583-8375-4d3f-b5fb-d23bbd169f22} | AppID | {6d2b5079-2f0b-48dd-ab7f-97cec514d30b} | ProductComponent |
MyPreviewHandlerRegistration6 | -1 | Software\Classes\CLSID\{1531d583-8375-4d3f-b5fb-d23bbd169f22} | DisplayName | @shell32,-38242 | ProductComponent |
MyPreviewHandlerRegistration7 | -1 | Software\Classes\CLSID\{1531d583-8375-4d3f-b5fb-d23bbd169f22} | Icône | notepad.exe,2 | ProductComponent |
MyPreviewHandlerRegistration8 | -1 | Software\Classes\CLSID\{1531d583-8375-4d3f-b5fb-d23bbd169f22}\InProcServer32 | ThreadingModel | Appartement | ProductComponent |
MyPreviewHandlerRegistration9 | -1 | Software\Classes\CLSID\{1531d583-8375-4d3f-b5fb-d23bbd169f22}\InProcServer32 | #%%SystemRoot%\system32\shell32.dll | ProductComponent | |
MyPreviewHandlerRegistration10 | -1 | Software\Classes\CLSID\{1531d583-8375-4d3f-b5fb-d23bbd169f22}\InProcServer32 | ProgID | puafile | ProductComponent |