-/*
+/*
uninstall.nsh
Var FileAssociation
-Section "un.Program Files" un.SecProgramFiles
+# ----------------------------------
+Section "un.LyX" un.SecUnProgramFiles
+
+ SectionIn RO
+ # LaTeX class files that were installed together with LyX
+ # will not be uninstalled because other LyX versions will
+ # need them and these few files don't harm to stay in LaTeX
+
# Binaries
- !insertmacro FileListLyXBin Delete "$INSTDIR\bin\"
- !insertmacro FileListLyXLauncher Delete "$INSTDIR\bin\"
- !insertmacro FileListQtBin Delete "$INSTDIR\bin\"
- !insertmacro FileListDll Delete "$INSTDIR\bin\"
- !insertmacro FileListMSVCBin Delete "$INSTDIR\bin\"
- !insertmacro FileListMSVCManifest Delete "$INSTDIR\bin\"
- !insertmacro FileListNetpbmBin Delete "$INSTDIR\bin\"
- !insertmacro FileListDTLBin Delete "$INSTDIR\bin\"
- !insertmacro FileListDvipostBin Delete "$INSTDIR\bin\"
- !insertmacro FileListPDFToolsBin Delete "$INSTDIR\bin\"
- !insertmacro FileListPDFViewBin Delete "$INSTDIR\bin\"
- !insertmacro FileListNSISPluginsStandard Delete "$INSTDIR\bin\"
- !insertmacro FileListNSISPlugins Delete "$INSTDIR\bin\"
- !insertmacro FileListMetaFile2EPS Delete "$INSTDIR\bin\"
- RMDir "$INSTDIR\bin"
-
+ RMDir /r "$INSTDIR\bin"
+
# Resources
RMDir /r "$INSTDIR\Resources"
- # Components of Python
- !insertmacro FileListPythonLibEncodings Delete "$INSTDIR\python\Lib\encodings\"
- Delete "$INSTDIR\python\Lib\encodings\*.pyc"
- RMDir "$INSTDIR\python\Lib\encodings"
- !insertmacro FileListPythonLib Delete "$INSTDIR\python\Lib\"
- Delete "$INSTDIR\python\Lib\*.pyc"
- RMDir "$INSTDIR\python\Lib"
- !insertmacro FileListPythonBin Delete "$INSTDIR\python\"
- !insertmacro FileListMSVCBin Delete "$INSTDIR\python\"
- !insertmacro FileListMSVCManifest Delete "$INSTDIR\python\"
- RMDir "$INSTDIR\python"
+ # Python
+ RMDir /r "$INSTDIR\python"
+ ReadRegStr $0 SHCTX "Software\Classes\Python.File" "OnlyWithLyX" # test if it was registered by this LyX version
+ ${if} $0 == "Yes${APP_SERIES_KEY}"
+ DeleteRegKey SHCTX "Software\Classes\Python.File"
+ ${endif}
- # Components of ImageMagick
- !insertmacro FileListImageMagick Delete "$INSTDIR\imagemagick\"
- !insertmacro FileListMSVCBin Delete "$INSTDIR\imagemagick\"
- !insertmacro FileListMSVCManifest Delete "$INSTDIR\imagemagick\"
- RMDir "$INSTDIR\imagemagick"
+ # ImageMagick
+ RMDir /r "$INSTDIR\imagemagick"
# Components of Ghostscript
- !insertmacro FileListGhostscriptBin Delete "$INSTDIR\ghostscript\bin\"
- !insertmacro FileListMSVCBin Delete "$INSTDIR\ghostscript\bin\"
- !insertmacro FileListMSVCManifest Delete "$INSTDIR\ghostscript\bin\"
- RMDir "$INSTDIR\ghostscript\bin"
- !insertmacro FileListGhostscriptLib Delete "$INSTDIR\ghostscript\lib\"
- RMDir "$INSTDIR\ghostscript\lib"
- !insertmacro FileListGhostscriptFonts Delete "$INSTDIR\ghostscript\fonts\"
- RMDir "$INSTDIR\ghostscript\fonts"
- !insertmacro FileListGhostscriptResourceCMap Delete "$INSTDIR\ghostscript\Resource\CMap\"
- RMDir "$INSTDIR\ghostscript\Resource\CMap"
- !insertmacro FileListGhostscriptResourceColorSpace Delete "$INSTDIR\ghostscript\Resource\ColorSpace\"
- RMDir "$INSTDIR\ghostscript\Resource\ColorSpace"
- !insertmacro FileListGhostscriptResourceDecoding Delete "$INSTDIR\ghostscript\Resource\Decoding\"
- RMDir "$INSTDIR\ghostscript\Resource\Decoding"
- !insertmacro FileListGhostscriptResourceEncoding Delete "$INSTDIR\ghostscript\Resource\Encoding\"
- RMDir "$INSTDIR\ghostscript\Resource\Encoding"
- RMDir "$INSTDIR\ghostscript\Resource"
- RMDir "$INSTDIR\ghostscript"
-
- # Aiksaurus Data
- !insertmacro FileListAiksaurusData Delete "$INSTDIR\aiksaurus\"
- RMDir "$INSTDIR\aiksaurus"
+ RMDir /r "$INSTDIR\ghostscript"
- # Shortcuts
- Delete "$SMPROGRAMS\${APP_NAME} ${APP_SERIES_NAME}.lnk"
+ # delete start menu folder
+ ReadRegStr $0 SHCTX "${APP_UNINST_KEY}" "StartMenu"
+ RMDir /r "$0"
+ # delete desktop icon
Delete "$DESKTOP\${APP_NAME} ${APP_SERIES_NAME}.lnk"
+
+ # remove file extension .lyx
+ ReadRegStr $0 SHCTX "${APP_DIR_REGKEY}" "OnlyWithLyX" # test if they were registered by this LyX version
+ ${if} $0 == "Yes${APP_SERIES_KEY}"
+ ReadRegStr $R0 SHCTX "Software\Classes\${APP_EXT}" ""
+ ${if} $R0 == "${APP_REGNAME_DOC}"
+ #DeleteRegKey SHCTX "Software\Classes\${APP_EXT}13"
+ #DeleteRegKey SHCTX "Software\Classes\${APP_EXT}14"
+ #DeleteRegKey SHCTX "Software\Classes\${APP_EXT}15"
+ #DeleteRegKey SHCTX "Software\Classes\${APP_EXT}16"
+ #DeleteRegKey SHCTX "Software\Classes\${APP_EXT}20"
+ #DeleteRegKey SHCTX "Software\Classes\${APP_EXT}21"
+ DeleteRegKey SHCTX "Software\Classes\${APP_EXT}"
+ #DeleteRegKey SHCTX "Software\Classes\${APP_REGNAME_DOC}"
+ ${endif}
+ ${endif}
+ ${if} $MultiUser.Privileges == "Admin"
+ DeleteRegKey HKCR "${APP_NAME}.Document"
+ ${endif}
# Uninstaller itself
Delete "$INSTDIR\${SETUP_UNINSTALLER}"
# Application folder
SetOutPath "$TEMP"
- RMDir "$INSTDIR"
+ RMDir /r "$INSTDIR"
- # Registry keys
- DeleteRegKey SHELL_CONTEXT "${APP_REGKEY_SETUP}"
- DeleteRegKey SHELL_CONTEXT "${APP_REGKEY}"
- DeleteRegKey SHELL_CONTEXT "Software\Classes\${APP_REGNAME_DOC}"
- DeleteRegKey SHELL_CONTEXT "Software\Microsoft\Windows\CurrentVersion\Uninstall\${SETUP_UNINSTALLER_KEY}"
+ # Registry keys and values
+ DeleteRegValue SHCTX "subkey" "key_name"
+ DeleteRegKey SHCTX "${APP_REGKEY_SETUP}"
+ DeleteRegKey SHCTX "${APP_REGKEY}"
+ DeleteRegKey SHCTX "${APP_UNINST_KEY}"
+ DeleteRegKey HKCR "Applications\${BIN_LYX}"
+ DeleteRegValue HKCR "${APP_NAME}.Document\Shell\open\command" ""
+ DeleteRegValue HKCR "${APP_NAME}.Document\DefaultIcon" ""
+ ReadRegStr $0 SHCTX ${APP_REGFOLDER} "latestVersion"
+ ${If} $0 == ${APP_SERIES_KEY}
+ DeleteRegValue SHCTX ${APP_REGFOLDER} "latestVersion"
+ StrCpy $0 0
+ StrCpy $R0 ""
+ ${Do}
+ StrCpy $R1 $R0
+ EnumRegKey $R0 SHCTX ${APP_REGFOLDER} $0
+ IntOp $0 $0 + 1
+ ${LoopUntil} $R0 == ""
+ ${If} $R1 != ""
+ WriteRegStr SHCTX ${APP_REGFOLDER} "latestVersion" $R1
+ ${EndIf}
+ ${EndIf}
+ DeleteRegKey /ifempty SHCTX ${APP_REGFOLDER}
# File associations
-
ReadRegStr $FileAssociation SHELL_CONTEXT "Software\Classes\${APP_EXT}" ""
${If} $FileAssociation == "${APP_REGNAME_DOC}"
DeleteRegKey SHELL_CONTEXT "Software\Classes\${APP_EXT}"
${EndIf}
- ${If} $MultiUser.Privileges != "Admin"
- ${OrIf} $MultiUser.Privileges != "Power"
+ # clean other registry entries
+ DeleteRegKey SHCTX "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\${APP_NAME}.exe"
+ DeleteRegKey SHCTX "SOFTWARE\${APP_REGKEY}"
+
+ # delete info that programs were installed together with LyX
+ DeleteRegValue SHCTX "SOFTWARE\MiKTeX.org\MiKTeX" "OnlyWithLyX"
+
+ # for texindy the path to the perl.exe must unfortunately be in Windows' PATH variable
+ # so we have to remove it now
+ ${if} $MultiUser.Privileges != "Admin"
+ ${andif} $MultiUser.Privileges != "Power"
+ # call the non-admin version
+ ${un.EnvVarUpdate} $0 "PATH" "R" "HKCU" "$INSTDIR\Perl\bin"
+ ${else}
+ ${un.EnvVarUpdate} $0 "PATH" "R" "HKLM" "$INSTDIR\Perl\bin"
+ ${endif}
- # Delete Postscript printer for metafile to EPS conversion
- ExecWait '$PrinterConf /q /dl /n "Metafile to EPS Converter"'
+SectionEnd
- ${EndIf}
+#---------------------------------
+# user preferences
+Section /o "un.$(UnLyXPreferencesTitle)" un.SecUnPreferences
+ # remove LyX's config files
+ StrCpy $AppSubfolder ${APP_DIR_USERDATA}
+ Call un.DelAppPathSub # function from LyXUtils.nsh
+ # remove registry settings
+ DeleteRegKey HKCU "Software\${APP_NAME}\${APP_NAME}${APP_SERIES_NAME}"
+
SectionEnd
-Section "un.User Preferences and Custom Files" un.SecUserFiles
+#---------------------------------
+# MiKTeX
+Section "un.MiKTeX" un.SecUnMiKTeX
+
+ ${if} $LaTeXInstalled == "MiKTeX" # only uninstall MiKTeX when it was installed together with LyX
+ ReadRegStr $1 SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\MiKTeX ${MiKTeXDeliveredVersion}" "UninstallString"
+ ExecWait $1 # run MiKTeX's uninstaller
+ ${endif}
- SetShellVarContext current
- RMDir /r "$APPDATA\${APP_DIR_USERDATA}"
-
SectionEnd
+
+#---------------------------------
+# Section descriptions
+!insertmacro MUI_UNFUNCTION_DESCRIPTION_BEGIN
+!insertmacro MUI_DESCRIPTION_TEXT ${un.SecUnMiKTeX} "$(SecUnMiKTeXDescription)"
+!insertmacro MUI_DESCRIPTION_TEXT ${un.SecUnPreferences} "$(SecUnPreferencesDescription)"
+!insertmacro MUI_DESCRIPTION_TEXT ${un.SecUnProgramFiles} "$(SecUnProgramFilesDescription)"
+!insertmacro MUI_UNFUNCTION_DESCRIPTION_END
+
+#Section "un.User Preferences and Custom Files" un.SecUserFiles
+#
+# SetShellVarContext current
+# RMDir /r "$APPDATA\${APP_DIR_USERDATA}"
+#
+#SectionEnd