Pour gérer le programme associé à une extension
Tutorial pour apprentis
Macro
Cette macro peut être ajoutée, soit directement dans le script, soit dans un fichier à part qui sera inclu au début de votre script d'installation :
!macro NSISFR_ASSOCIER_EXT EXT DESCRIP PROG DEFAULT_ICON DEFAULT_CMD CMD Push $0 StrCpy $NSISFR_EXT_CMD "${CMD}" StrCmp "$NSISFR_EXT_CMD" "" +1 +2 StrCpy $NSISFR_EXT_CMD "open" ReadRegStr $NSISFR_EXT_IDX HKCR ".${EXT}" "" StrCmp "$NSISFR_EXT_IDX" "" +1 +2 StrCpy $NSISFR_EXT_IDX "${EXT}file" WriteRegStr HKCR ".${EXT}" "" "$NSISFR_EXT_IDX" ReadRegStr $0 HKCR "$NSISFR_EXT_IDX" "" StrCmp $0 "" 0 +2 WriteRegStr HKCR "$NSISFR_EXT_IDX" "backup_default" "$0" WriteRegStr HKCR "$NSISFR_EXT_IDX" "" "${DESCRIP}" StrCmp "${DEFAULT_CMD}" "1" 0 +5 ReadRegStr $0 HKCR "$NSISFR_EXT_IDX\shell" "" StrCmp $0 "" 0 +2 WriteRegStr HKCR "$NSISFR_EXT_IDX\shell" "backup_default" "$0" WriteRegStr HKCR "$NSISFR_EXT_IDX\shell" "" "$NSISFR_EXT_CMD" StrCmp "${DEFAULT_ICON}" "1" 0 +5 ReadRegStr $0 HKCR "$NSISFR_EXT_IDX\DefaultIcon" "" StrCmp $0 "" 0 +2 WriteRegStr HKCR "$NSISFR_EXT_IDX\DefaultIcon" "backup_default" "$0" WriteRegStr HKCR "$NSISFR_EXT_IDX\DefaultIcon" "" "${DEFAULT_ICON}" ReadRegStr $0 HKCR "$NSISFR_EXT_IDX\shell\$NSISFR_EXT_CMD\command" "" StrCmp $0 "" 0 +2 WriteRegStr HKCR "$NSISFR_EXT_IDX\shell\$NSISFR_EXT_CMD\command" "backup_default" "$0" WriteRegStr HKCR "$NSISFR_EXT_IDX\shell\$NSISFR_EXT_CMD\command" "" '${PROG} "%1"' Pop $0 !macroend !macro NSISFR_DESASSOCIER_EXT EXT CMD Push $0 Push $1 StrCmp "${CMD}" "" +1 +2 StrCpy "${CMD}" "open" ReadRegStr $1 HKCR ".${EXT}" "" ReadRegStr $0 HKCR "$1\shell" "" StrCmp $0 "${CMD}" 0 +4 ReadRegStr $0 HKCR "$1\shell" "backup_default" WriteRegStr HKCR "$1\shell" "" "$0" DeleteRegValue HKCR "$1\shell" "backup_default" ReadRegStr $0 HKCR "$1\DefaultIcon" "backup_default" StrCmp $0 "" 0 +3 WriteRegStr HKCR "$1\DefaultIcon" "" "$0" DeleteRegValue HKCR "$1\DefaultIcon" "backup_default" ReadRegStr $0 HKCR "$1\shell\${CMD}\command" "backup_default" StrCmp $0 "" 0 +5 WriteRegStr HKCR "$1\shell\${CMD}\command" "" "$0" DeleteRegValue HKCR "$1\shell\${CMD}\command" "backup_default" Goto +2 DeleteRegKey HKCR "$1\shell\${CMD}" Pop $1 Pop $0 !macroend
Association
Pour ajouter un programme associé à une extension :
!insertmacro NSISFR_ASSOCIER_EXT "ext" "description" "$INSTDIR\MonProgramme.exe" "$INSTDIR\icone.ico" "1" "commande"
Note :
- ext correspond à l'extension (ex : dll)
- description correspond à la description du type de fichiers (ex : Exécutable)
- $INSTDIR\MonProgramme.exe correspond au programe à exécuter
- $INSTDIR\icone.ico correspond à l'icône associée aux fichiers
- 1 spécifit qu'il s'agit de la commande par défaut (en gras, et lancée en cas de double-clic)
- commande correspond au nom de la commande de l'action (si vide, open est utilisé)
Désassociation
Pour supprimer une association entre un programme et une extension :
!insertmacro NSISFR_DESASSOCIER_EXT "ext" "commande"
Note :
- ext correspond à l'extension (ex : dll)
- commande correspond au nom de la commande de l'action (si vide, open est utilisé)
Une idée de pas à pas ?
Contactez Julien.
