]> git.lyx.org Git - features.git/commitdiff
Installer: uninstaller fixes and infrastructure changes:
authorUwe Stöhr <uwestoehr@web.de>
Thu, 19 Apr 2007 00:55:52 +0000 (00:55 +0000)
committerUwe Stöhr <uwestoehr@web.de>
Thu, 19 Apr 2007 00:55:52 +0000 (00:55 +0000)
- the uninstaller is now ready for uninstalling without admin permissions
- uninstalling does now correctly work after using the Update installer

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@17857 a592a061-630c-0410-9148-cb99ea01b6c8

development/Win32/packaging/installer/LyXWinInstaller/Changelog.txt
development/Win32/packaging/installer/LyXWinInstaller/InstallActions-complete.nsh
development/Win32/packaging/installer/LyXWinInstaller/InstallActions-small.nsh
development/Win32/packaging/installer/LyXWinInstaller/InstallActions-update.nsh [new file with mode: 0644]
development/Win32/packaging/installer/LyXWinInstaller/LanguageSettings.nsh
development/Win32/packaging/installer/LyXWinInstaller/LyX-Installer-Complete.nsi
development/Win32/packaging/installer/LyXWinInstaller/LyX-Installer-Small.nsi
development/Win32/packaging/installer/LyXWinInstaller/LyX-Installer-Update.nsi
development/Win32/packaging/installer/LyXWinInstaller/LyXUtils.nsh
development/Win32/packaging/installer/LyXWinInstaller/Uninstall.nsh
development/Win32/packaging/installer/LyXWinInstaller/Updated.nsh

index 122d9ef287f1cf0b8a8dd5a2a76d9ac73bab867a..6f5304207f8a529ff663f037226b702d65eb9f1a 100644 (file)
@@ -1,4 +1,14 @@
-Version LyX 1.5svn-15-04-2007
+Version LyX 1.5svn-xx-04-2007
+- LyX 1.5svn from xx-04-2007
+  - math-macro fixes
+
+- fix bug that JabRef wasn't recognized by the uninstaller
+- Update installer: require to close LyX before it can be updated
+- Update installer: fix bug that sessions files weren't actualized while
+  updating
+
+
+Version LyX 1.5svn-15-04-2007
 
 - LyX 1.5svn from 15-04-2007
   - reworked paragraph dialog
index f30b4ccab040aa67d17d837dfee39e72284f0732..e8b40c4e3fe3480dda23f537c82db06c63473807 100644 (file)
@@ -40,7 +40,8 @@ Section "-Installation actions" SecInstallation
     Abort
    ${endif} ; endif $LatexPath != ""
   ${endif}
-  
+
+  ; if GhostScript is not installed
   ${if} $GhostscriptPath == ""
    ; register Ghostscript
    WriteRegStr HKLM "SOFTWARE\GPL Ghostscript\${GhostscriptVersion}" "GS_DLL" "${GhostscriptDir}\bin\gsdll32.dll"
@@ -53,6 +54,7 @@ Section "-Installation actions" SecInstallation
    RMDir /r ${GhostscriptDir}   
   ${endif}
 
+  ; if ImageMagick is not installed
   ${if} $ImageMagickPath == ""
    ; register ImageMagick
    WriteRegStr HKLM "SOFTWARE\Classes\Applications" "AutoRun" "${ImageMagickDir}\convert.exe $$"
@@ -77,6 +79,7 @@ Section "-Installation actions" SecInstallation
    RMDir /r ${ImageMagickDir}
   ${endif}
 
+  ; if Aspell is not installed
   ${if} $AspellPath == ""
    ; extract Aspell's program files
    SetOutPath "$INSTDIR\external"
@@ -96,6 +99,7 @@ Section "-Installation actions" SecInstallation
    WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Aspell" "UninstallString" "${AspellDir}\${AspellUninstall}"
   ${endif}
 
+  ; if Aiksaurus is not installed
   ${if} $AiksaurusPath == ""
    ; extract Aiksaurus' program files
    SetOutPath "$INSTDIR\external"
@@ -106,6 +110,7 @@ Section "-Installation actions" SecInstallation
 ;   WriteRegStr HKLM "Software\Aiksaurus" "Data Path" "${AiksaurusDir}"
   ${endif}
 
+  ; if no PostScript viewer is installed
   ${if} $PSVPath == ""
    ${if} $InstallGSview == "true"
     ; launch installer
@@ -119,7 +124,8 @@ Section "-Installation actions" SecInstallation
     ${endif}
    ${endif}
   ${endif}
-  
+
+  ; if no BibTeX editor is installed
   ${if} $BibTeXEditorPath == ""
    ${if} $InstallJabRef == "true"
     ; launch installer
index ff17f4bf3c9fd2484d12ab36ec847f0994f7684b..00a70329482911e27f194c253d7c54c1fe2b7e34 100644 (file)
@@ -9,6 +9,7 @@ Section "-Installation actions" SecInstallation
   File /r "${PRODUCT_SOURCEDIR}\etc"
   File /r "${PRODUCT_SOURCEDIR}\Resources"
 
+  ; if GhostScript is not installed
   ${if} $GhostscriptPath == ""
    ; register Ghostscript
    WriteRegStr HKLM "SOFTWARE\GPL Ghostscript\${GhostscriptVersion}" "GS_DLL" "${GhostscriptDir}\bin\gsdll32.dll"
@@ -21,6 +22,7 @@ Section "-Installation actions" SecInstallation
    RMDir /r ${GhostscriptDir}   
   ${endif}
 
+  ; if ImageMagick is not installed
   ${if} $ImageMagickPath == ""
    ; register ImageMagick
    WriteRegStr HKLM "SOFTWARE\Classes\Applications" "AutoRun" "${ImageMagickDir}\convert.exe $$"
@@ -45,6 +47,7 @@ Section "-Installation actions" SecInstallation
    RMDir /r ${ImageMagickDir}
   ${endif}
 
+  ; if Aspell is not installed
   ${if} $AspellPath == ""
    ; extract Aspell's program files
    SetOutPath "$INSTDIR\external"
@@ -64,6 +67,7 @@ Section "-Installation actions" SecInstallation
    WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Aspell" "UninstallString" "${AspellDir}\${AspellUninstall}"
   ${endif}
 
+  ; if Aiksaurus is not installed
   ${if} $AiksaurusPath == ""
    ; extract Aiksaurus' program files
    SetOutPath "$INSTDIR\external"
diff --git a/development/Win32/packaging/installer/LyXWinInstaller/InstallActions-update.nsh b/development/Win32/packaging/installer/LyXWinInstaller/InstallActions-update.nsh
new file mode 100644 (file)
index 0000000..920adb7
--- /dev/null
@@ -0,0 +1,136 @@
+; The '-' makes the section invisible.
+; Sections are entered in order, so the settings above are all
+; available to SecInstallation
+Section "-Installation actions" SecInstallation
+
+  ; extract modified files
+  Call UpdateModifiedFiles ; macro from Updated.nsh
+  
+  ; delete files
+  Call DeleteFiles ; macro from Deleted.nsh
+  
+  ; delete old uninstaller
+  Delete "${PRODUCT_UNINSTALL_EXE}"
+
+  ; delete old start menu folder
+  ReadRegStr $0 SHCTX "${PRODUCT_UNINST_KEY_OLD}" "StartMenu"
+  RMDir /r $0
+  ; delete desktop icon
+  Delete "$DESKTOP\${PRODUCT_VERSION_OLD}.lnk"
+  
+  ; delete old registry entries
+  DeleteRegKey SHCTX "${PRODUCT_UNINST_KEY_OLD}"
+  DeleteRegKey SHCTX "${PRODUCT_DIR_REGKEY}"
+  DeleteRegKey HKCR "Applications\lyx.bat"
+  ; remove extension .lyx
+  ${RemoveFileAssociation} "${PRODUCT_EXT}" "${PRODUCT_NAME}"
+  DeleteRegKey HKCR "${PRODUCT_NAME}"
+  
+  ; determine the new name of the install location,
+  ; only when the user has used the default path settings of the previous LyX-version
+  StrCpy $String $INSTDIR
+  StrCpy $Search "${PRODUCT_VERSION_OLD}"
+  StrLen $3 $String
+  Call StrPoint ; search the $INSTDIR for the phrase in ${PRODUCT_VERSION_OLD} ; function from LyXUtils.nsh
+  ${if} $Pointer != "-1" ; if something was found
+  
+   IntOp $Pointer $Pointer - 1 ; jump before the first "\" of "\${PRODUCT_VERSION_OLD}"
+   StrCpy $String $String "$Pointer" ; $String is now the part before "\${PRODUCT_VERSION_OLD}"
+   ; rename the installation folder by copying LyX files
+   StrCpy $INSTDIR_NEW "$String\LyX ${PRODUCT_VERSION}"
+   CreateDirectory "$INSTDIR_NEW"
+   CopyFiles "$INSTDIR\*.*" "$INSTDIR_NEW"
+   ; delete the old folder
+   RMDir /r $INSTDIR
+   StrCpy $INSTDIR $INSTDIR_NEW
+   
+   ; set new PATH_PREFIX in the file lyxrc.dist
+   FileOpen $R1 "$INSTDIR\Resources\lyxrc.dist" a
+   FileRead $R1 $PathPrefix
+   ${WordReplace} $PathPrefix "${PRODUCT_VERSION_OLD}" "LyX ${PRODUCT_VERSION}" "+" $PathPrefix
+   FileSeek $R1 0 ; set file pointer to the beginning
+   FileWrite $R1 '$PathPrefix' ; overwrite the existing path with the actual one
+   FileClose $R1
+   
+   ; set the new path to the preferences file for all users
+   StrCpy $FileName "preferences"
+   StrCpy $OldString "${PRODUCT_VERSION_OLD}"
+   StrCpy $NewString "LyX ${PRODUCT_VERSION}"
+   Call CheckAppPathPreferences ; function from LyXUtils.nsh
+   
+   ; set the new path to the session file for all users
+   StrCpy $FileName "session"
+   Call CheckAppPathPreferences ; function from LyXUtils.nsh
+   
+   ; set new path to ImageMagick
+   ReadRegStr $ImageMagickPath SHCTX "SOFTWARE\Classes\Applications" "AutoRun"
+   ${if} $ImageMagickPath != ""
+    ${WordReplace} $ImageMagickPath "${PRODUCT_VERSION_OLD}" "LyX ${PRODUCT_VERSION}" "+" $ImageMagickPath ; macro from WordFunc.nsh
+    WriteRegStr SHCTX "SOFTWARE\Classes\Applications" "AutoRun" "$ImageMagickPath"
+   ${endif}
+  
+  ${endif} ; end ${if} $Pointer != "-1" (if the folder is renamed)
+  
+  ; register LyX
+  WriteRegStr SHCTX "${PRODUCT_DIR_REGKEY}" "" "${PRODUCT_EXE}"
+  WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "RootKey" "$ProductRootKey"
+  WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "DisplayName" "LyX ${PRODUCT_VERSION}"
+  WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "UninstallString" "${PRODUCT_UNINSTALL_EXE}"
+  WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "DisplayIcon" "${PRODUCT_EXE}"
+  WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
+  WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "StartMenu" "$SMPROGRAMS\$StartmenuFolder"
+  WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "URLUpdateInfo" "${PRODUCT_INFO_URL}"
+  WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_ABOUT_URL}"
+  WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "Publisher" "LyX Team"
+  WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "HelpLink" "${PRODUCT_HELP_LINK}"
+  WriteRegDWORD SHCTX "${PRODUCT_UNINST_KEY}" "NoModify" 0x00000001
+  WriteRegDWORD SHCTX "${PRODUCT_UNINST_KEY}" "NoRepair" 0x00000001
+  ; create start menu entry
+  SetOutPath "$INSTDIR\bin"
+  CreateDirectory "$SMPROGRAMS\$StartmenuFolder"
+  CreateShortCut "$SMPROGRAMS\$StartmenuFolder\${PRODUCT_NAME}.lnk" "${PRODUCT_BAT}" "" "${PRODUCT_EXE}"
+  SetOutPath "$INSTDIR"
+  CreateShortCut "$SMPROGRAMS\$StartmenuFolder\Uninstall.lnk" "${PRODUCT_UNINSTALL_EXE}"
+  
+  ; create desktop icon
+  ${if} $CreateDesktopIcon == "true"
+   SetOutPath "$INSTDIR\bin"
+   CreateShortCut "$DESKTOP\LyX ${PRODUCT_VERSION}.lnk" "${PRODUCT_BAT}" "" "${PRODUCT_EXE}"
+  ${endif}
+  
+  ; register the extension .lyx
+  ${CreateApplicationAssociation} "${PRODUCT_NAME}" "${PRODUCT_NAME}" "$(FileTypeTitle)" "${PRODUCT_EXE}" "${PRODUCT_BAT}"
+  ${CreateFileAssociation} "${PRODUCT_EXT}" "${PRODUCT_NAME}" "${PRODUCT_MIME_TYPE}"
+  
+  ; create Uninstaller
+  WriteUninstaller "${PRODUCT_UNINSTALL_EXE}"
+  
+  ; test if Python is installed
+  ; only use an existing python when it is version 2.5 because many Compaq and Dell PC are delivered
+  ; with outdated Python interpreters
+  ReadRegStr $PythonPath HKLM "Software\Python\PythonCore\2.5\InstallPath" ""
+  ${if} $PythonPath == ""
+   StrCpy $PythonPath "$INSTDIR\bin"
+  ${else}
+   StrCpy $PythonPath $PythonPath -1 ; remove the "\" at the end
+  ${endif}
+  
+  ; run LyX's configure script
+  ; create a bat-file to start configure in a console window so that the user see the progress
+  ; of the configuration and to have a signal when the configuration is ready to start LyX
+  ; this is important when LyX is installed together with MiKTeX or when LyX is installed for the first
+  ; time on a computer, because the installation of missing LaTeX-files required by LyX could last minutes
+  ; a batch file is needed because simply calling ExecWait '"$PythonPath\python.exe" "$INSTDIR\Resources\configure.py"'
+  ; creates the config files in $INSTDIR\bin
+  StrCpy $1 $INSTDIR 2 ; get drive letter
+  FileOpen $R1 "$INSTDIR\Resources\configLyX.bat" w
+  FileWrite $R1 '$1$\r$\n\
+                cd $INSTDIR\Resources\$\r$\n\
+                "$PythonPath\python.exe" configure.py'
+  FileClose $R1
+  MessageBox MB_OK|MB_ICONINFORMATION "$(LatexConfigInfo)"
+  ExecWait '"$INSTDIR\Resources\configLyX.bat"'
+  Delete "$INSTDIR\Resources\configLyX.bat"
+
+SectionEnd
index 59a044e68c22cd99471bca487de3c418b6b008c7..9fdee00eda464ccf1d7f444cba5f27b15b9fa019 100644 (file)
 !macroend
 
 ;--------------------
+; function that creates the installer page for the language setting
 Function SelectMenuLanguage
 
   !insertmacro MUI_INSTALLOPTIONS_EXTRACT "io_ui_language.ini"
index 9412d1a2089eb0fede7ee02ac4d49e59aecd1e91..7c200af5e4c7aaa05d550d13566238de054dd8f7 100644 (file)
@@ -231,7 +231,7 @@ Page custom MissingProgramsPage MissingProgramsPage_LeaveFunction
 ;--------------------------------
 ; Languages
 
-!insertmacro MUI_LANGUAGE "English" # first language is the default language
+!insertmacro MUI_LANGUAGE "English" ; first language is the default language
 !insertmacro MUI_LANGUAGE "Danish"
 !insertmacro MUI_LANGUAGE "Dutch"
 !insertmacro MUI_LANGUAGE "French"
@@ -315,10 +315,10 @@ SectionEnd
 ; This hook function is called internally by NSIS on installer startup
 Function .onInit
 
-  ; set the installer language to the Windows locale language  
+  ; set the installer language to the Windows locale language
   System::Call "kernel32::GetUserDefaultLangID()i.a"
 
-  ; Check that the installer is not currently running
+  ; check that the installer is not currently running
   System::Call 'kernel32::CreateMutexA(i 0, i 0, t "${INSTALLER_EXE}.Instance") i .r1 ?e'
   Pop $R0
   ${if} $R0 != "0"
@@ -331,23 +331,23 @@ Function .onInit
    Abort
   ${endif}
 
-  ; Check if LyX is already installed
+  ; check if LyX is already installed
   ReadRegStr $0 HKLM "${PRODUCT_UNINST_KEY}" "Publisher"
   ${if} $0 != ""
    MessageBox MB_OK|MB_ICONSTOP "$(StillInstalled)"
    Abort
   ${endif}
 
-  ; Default settings
-  ; These can be reset to "all" in section SecAllUsers.
+  ; default settings
+  ; these can be reset to "all" in section SecAllUsers
   SetShellVarContext current
   StrCpy $ProductRootKey "HKCU"
 
-  ; This can be reset to "true" in section SecDesktop.
+  ; this can be reset to "true" in section SecDesktop
   StrCpy $CreateDesktopIcon "false"
   StrCpy $CreateFileAssociations "false"
 
-  ; If the user does *not* have administrator privileges, abort
+  ; if the user does *not* have administrator privileges, abort
   StrCpy $Answer ""
   StrCpy $UserName ""
   !insertmacro IsUserAdmin $Answer $UserName ; macro from LyXUtils.nsh
index 73bc2aa862f894f1837dd2af9d08e7ca66af9f9a..db303e7dde42792fe3a47c97f5141e6074224f4f 100644 (file)
@@ -230,7 +230,7 @@ Page custom MissingProgramsPage MissingProgramsPage_LeaveFunction
 ;--------------------------------
 ; Languages
 
-!insertmacro MUI_LANGUAGE "English" # first language is the default language
+!insertmacro MUI_LANGUAGE "English" ; first language is the default language
 !insertmacro MUI_LANGUAGE "Danish"
 !insertmacro MUI_LANGUAGE "Dutch"
 !insertmacro MUI_LANGUAGE "French"
@@ -304,10 +304,10 @@ SectionEnd
 ; This hook function is called internally by NSIS on installer startup
 Function .onInit
 
-  ; set the installer language to the Windows locale language  
+  ; set the installer language to the Windows locale language
   System::Call "kernel32::GetUserDefaultLangID()i.a"
 
-  ; Check that the installer is not currently running
+  ; check that the installer is not currently running
   System::Call 'kernel32::CreateMutexA(i 0, i 0, t "${INSTALLER_EXE}.Instance") i .r1 ?e'
   Pop $R0
   ${if} $R0 != "0"
@@ -320,23 +320,23 @@ Function .onInit
    Abort
   ${endif}
 
-  ; Check if LyX is already installed
+  ; check if LyX is already installed
   ReadRegStr $0 HKLM "${PRODUCT_UNINST_KEY}" "Publisher"
   ${if} $0 != ""
    MessageBox MB_OK|MB_ICONSTOP "$(StillInstalled)"
    Abort
   ${endif}
 
-  ; Default settings
-  ; These can be reset to "all" in section SecAllUsers.
+  ; default settings
+  ; these can be reset to "all" in section SecAllUsers
   SetShellVarContext current
   StrCpy $ProductRootKey "HKCU"
 
-  ; This can be reset to "true" in section SecDesktop.
+  ; this can be reset to "true" in section SecDesktop
   StrCpy $CreateDesktopIcon "false"
   StrCpy $CreateFileAssociations "false"
 
-  ; If the user does *not* have administrator privileges, abort
+  ; if the user does *not* have administrator privileges, abort
   StrCpy $Answer ""
   StrCpy $UserName ""
   !insertmacro IsUserAdmin $Answer $UserName ; macro from LyXUtils.nsh
index ed77e9ef79626d317479054f9ad1c69c2c9f7b78..dbaea741cc92c5a64d264d1b3c97bdcd05b5d0f4 100644 (file)
@@ -26,7 +26,7 @@ SetCompressor lzma
 
 !define PRODUCT_DIR "D:\LyXPackage1.5"
 !define PRODUCT_NAME "LyX"
-!define PRODUCT_VERSION "1.5svn-15-04-2007"
+!define PRODUCT_VERSION "1.5svn-xx-04-2007"
 !define PRODUCT_VERSION_SHORT "150svn"
 !define PRODUCT_SUBFOLDER "lyx15"
 !define PRODUCT_LICENSE_FILE "${PRODUCT_DIR}\License.txt"
@@ -35,22 +35,23 @@ SetCompressor lzma
 !define PRODUCT_BAT "$INSTDIR\bin\lyx.bat"
 !define PRODUCT_EXT ".lyx"
 !define PRODUCT_MIME_TYPE "application/lyx"
-!define PRODUCT_UNINSTALL_EXE "$INSTDIR\LyXWinUninstall.exe"
+!define PRODUCT_UNINSTALL_EXE "$INSTDIR\LyXWinUninstall${PRODUCT_VERSION}.exe"
 !define PRODUCT_HELP_LINK "http://www.lyx.org/internet/mailing.php"
 !define PRODUCT_ABOUT_URL "http://www.lyx.org/about/"
 !define PRODUCT_INFO_URL "http://www.lyx.org/"
 
-BrandingText "LyXWinInstaller v3.12 - Update"
+BrandingText "LyXWinInstaller v3.13 - Update"
 !define INSTALLER_VERSION "Small"
-!define INSTALLER_EXE "LyXWin150svnUpdate-3-12.exe"
-!define INSTALLER2_EXE "LyXWin150svnSmall-3-12.exe" ; to check later if this installer version is running at the same time
-!define INSTALLER3_EXE "LyXWin150svnComplete-3-12.exe" ; to check later if this installer version is running at the same time
+!define INSTALLER_EXE "LyXWin150svnUpdate-3-13.exe"
+!define INSTALLER2_EXE "LyXWin150svnSmall-3-13.exe" ; to check later if this installer version is running at the same time
+!define INSTALLER3_EXE "LyXWin150svnComplete-3-13.exe" ; to check later if this installer version is running at the same time
 !define VERSION_BITMAP "${PRODUCT_DIR}\icons\lyx_logo_vert${PRODUCT_VERSION_SHORT}.bmp"
 
 !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\lyx.exe"
 !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\LyX${PRODUCT_VERSION_SHORT}"
 !define PRODUCT_UNINST_KEY_OLD "Software\Microsoft\Windows\CurrentVersion\Uninstall\LyX150svn"
-!define PRODUCT_VERSION_OLD "LyX 1.5svn-09-04-2007"
+!define PRODUCT_VERSION_OLD "LyX 1.5svn-15-04-2007"
+!define PRODUCT_UNINSTALL_EXE_OLD "$INSTDIR\LyXWinUninstall.exe"
 
 ;--------------------------------
 ; Make some of the information above available to NSIS.
@@ -63,7 +64,6 @@ InstallDir "$PROGRAMFILES\${PRODUCT_NAME} ${PRODUCT_VERSION}"
 ; Variables
 
 Var LatexPath
-Var EditorPath
 Var PythonPath
 Var ImageMagickPath
 Var PathPrefix
@@ -80,6 +80,7 @@ Var Search
 Var Pointer
 Var UserList
 Var INSTDIR_NEW
+Var FileName
 Var OldString
 Var NewString
 
@@ -156,7 +157,7 @@ Var NewString
 ;--------------------------------
 ; Languages
 
-!insertmacro MUI_LANGUAGE "English" # first language is the default language
+!insertmacro MUI_LANGUAGE "English" ; first language is the default language
 !insertmacro MUI_LANGUAGE "Danish"
 !insertmacro MUI_LANGUAGE "Dutch"
 !insertmacro MUI_LANGUAGE "French"
@@ -213,11 +214,21 @@ SectionEnd
 !insertmacro MUI_DESCRIPTION_TEXT ${SecDesktop} "$(SecDesktopDescription)"
 !insertmacro MUI_FUNCTION_DESCRIPTION_END
 
+; the installation section
+!include "InstallActions-update.nsh"
+
 ;--------------------------------
 ; This hook function is called internally by NSIS on installer startup
 Function .onInit
 
-  ; set the installer language to the Windows locale language  
+  ; Check that LyX is not currently running
+  FindProcDLL::FindProc "lyx.exe"
+  ${if} $R0 == "1"
+   MessageBox MB_OK|MB_ICONSTOP "$(UnInstallRunning)"
+   Abort
+  ${endif}
+  
+  ; set the installer language to the Windows locale language
   System::Call "kernel32::GetUserDefaultLangID()i.a"
   
   ; Check that the installer is not currently running
@@ -238,7 +249,7 @@ Function .onInit
    Abort
   ${endif}
   
-  ; Check where LyX is installed
+  ; check where LyX is installed
   ReadRegStr $0 HKLM "${PRODUCT_UNINST_KEY_OLD}" "DisplayIcon"
   ${if} $0 != ""
     SetShellVarContext all
@@ -260,7 +271,7 @@ Function .onInit
    StrCpy $INSTDIR $INSTDIR -12 ; delete the string "\bin\lyx.exe" or "\bin\lyx.bat"
   ${endif}
   
-  ; If the user does *not* have administrator privileges, abort
+  ; abort if the user doesn't have administrator privileges but LyX was installed as admin
   StrCpy $Answer ""
   StrCpy $UserName ""
   !insertmacro IsUserAdmin $Answer $UserName ; macro from LyXUtils.nsh
@@ -283,142 +294,88 @@ Function LaunchProduct
 FunctionEnd
 
 ;--------------------------------
+; The Uninstaller
 
-; The '-' makes the section invisible.
-; Sections are entered in order, so the settings above are all
-; available to SecInstallation
-Section "-Installation actions" SecInstallation
+Function un.onInit
+       
+  ; Check that LyX is not currently running
+  FindProcDLL::FindProc "lyx.exe"
+  ${if} $R0 == "1"
+   MessageBox MB_OK|MB_ICONSTOP "$(UnInstallRunning)"
+   Abort
+  ${endif}
 
-  ; extract modified files
-  Call UpdateModifiedFiles ; macro from Updated.nsh
-  
-  ; delete files
-  Call DeleteFiles ; macro from Deleted.nsh
+  ; set registry root key
+  StrCpy $Answer ""
+  !insertmacro IsUserAdmin $Answer $UserName ; macro from LyXUtils.nsh
+  ${if} $Answer == "yes"
+    SetShellVarContext all
+  ${else}
+   SetShellVarContext current
+  ${endif}
 
-  ; delete old start menu folder
-  ReadRegStr $0 SHCTX "${PRODUCT_UNINST_KEY_OLD}" "StartMenu"
-  RMDir /r $0
-  ; delete desktop icon
-  Delete "$DESKTOP\${PRODUCT_NAME}.lnk" ; remove this for the next version!
-  ; Delete "$DESKTOP\${PRODUCT_VERSION_OLD}.lnk" ; for the next version
-  
-  ; delete old registry entries
-  DeleteRegKey SHCTX "${PRODUCT_UNINST_KEY_OLD}"
-  DeleteRegKey SHCTX "${PRODUCT_DIR_REGKEY}"
-  DeleteRegKey HKCR "Applications\lyx.bat"
-  ; remove extension .lyx
-  ${RemoveFileAssociation} "${PRODUCT_EXT}" "${PRODUCT_NAME}"
-  DeleteRegKey HKCR "${PRODUCT_NAME}"
+  ; Ascertain whether the user has sufficient privileges to uninstall.
+  ; abort when LyX was installed with admin permissions but the user doesn't have administrator privileges
+  ReadRegStr $0 HKLM "${PRODUCT_UNINST_KEY}" "RootKey"
+  ${if} $0 != ""
+  ${andif} $Answer != "yes"
+   MessageBox MB_OK|MB_ICONSTOP "$(UnNotAdminLabel)"
+   Abort
+  ${endif}
+  ; abort when LyX couldn't be found in the registry
+  ${if} $0 == "" ; check in HKCU
+   ReadRegStr $0 HKCU "${PRODUCT_UNINST_KEY}" "RootKey"
+   ${if} $0 == ""
+     MessageBox MB_OK|MB_ICONEXCLAMATION "$(UnNotInRegistryLabel)"
+   ${endif}
+  ${endif}
   
-  ; determine the new name of the install location,
-  ; only when the user has used the default path settings of the previous LyX-version
-  StrCpy $String $INSTDIR
-  StrCpy $Search "${PRODUCT_VERSION_OLD}"
+FunctionEnd
+
+Function un.onUninstSuccess
+
+ HideWindow ; hides the uninstaller Window when it is ready
+
+FunctionEnd
+
+Section "un.LyX" un.SecUnProgramFiles
+
+  SectionIn RO
+
+  ; delete LaTeX class files that were installed together with LyX
+  FileOpen $R5 "$INSTDIR\Resources\uninstallPaths.dat" r
+  FileRead $R5 $LatexPath
+  FileClose $R5
+  StrCpy $String $LatexPath
+  StrCpy $Search "miktex\bin"
   StrLen $3 $String
-  Call StrPoint ; search the $INSTDIR for the phrase in ${PRODUCT_VERSION_OLD} ; function from LyXUtils.nsh
+  Call un.StrPoint ; search the LaTeXPath for the phrase "miktex\bin" (function from LyXUtils.nsh)
   ${if} $Pointer != "-1" ; if something was found
-  
-   IntOp $Pointer $Pointer - 1 ; jump before the first "\" of "\${PRODUCT_VERSION_OLD}"
-   StrCpy $String $String "$Pointer" ; $String is now the part before "\${PRODUCT_VERSION_OLD}"
-   ; rename the installation folder by copying LyX files
-   StrCpy $INSTDIR_NEW "$String\LyX ${PRODUCT_VERSION}"
-   CreateDirectory "$INSTDIR_NEW"
-   CopyFiles "$INSTDIR\*.*" "$INSTDIR_NEW"
-   ; delete the old folder
-   RMDir /r $INSTDIR
-   StrCpy $INSTDIR $INSTDIR_NEW
-   
-   ; set new PATH_PREFIX in the file lyxrc.dist
-   FileOpen $R1 "$INSTDIR\Resources\lyxrc.dist" a
-   FileRead $R1 $PathPrefix
-   ${WordReplace} $PathPrefix "${PRODUCT_VERSION_OLD}" "LyX ${PRODUCT_VERSION}" "+" $PathPrefix
-   FileSeek $R1 0 ; set file pointer to the beginning
-   FileWrite $R1 '$PathPrefix' ; overwrite the existing path with the actual one
-   FileClose $R1
-   
-   ; set the new path to the preferences files for all users
-   StrCpy $OldString "${PRODUCT_VERSION_OLD}"
-   StrCpy $NewString "LyX ${PRODUCT_VERSION}"
-   Call CheckAppPathPreferences ; function from LyXUtils.nsh
-   
-   ; Copy the given strings to variables that the Function "ReplaceLineContent" can later access them
-   ; set new PDF-viewer settings also to the preferences file for all users
-   StrCpy $OldString "PDFViewWin7"
-   StrCpy $NewString "PDFViewWin"
-   Call CheckAppPathPreferences ; function from LyXUtils.nsh
-   ; set new PDF-viewer settings also to the preferences file in the $INSTDIR
-   ; search for "$OldString" and replace it with "$NewString"
-   ; calls function "ReplaceLineContent" from LyXUtils.nsh
-   ${LineFind} "$INSTDIR\Resources\preferences" "" "1:-1" "ReplaceLineContent" ; macro from TextFunc.nsh
-   
-   ; set new path to ImageMagick
-   ReadRegStr $ImageMagickPath SHCTX "SOFTWARE\Classes\Applications" "AutoRun"
-   ${if} $ImageMagickPath != ""
-    ${WordReplace} $ImageMagickPath "${PRODUCT_VERSION_OLD}" "LyX ${PRODUCT_VERSION}" "+" $ImageMagickPath ; macro from WordFunc.nsh
-    WriteRegStr SHCTX "SOFTWARE\Classes\Applications" "AutoRun" "$ImageMagickPath"
-   ${endif}
-      
-  ${endif} ; end ${if} $Pointer != "-1" (if the folder is renamed)
-  
-  ; register LyX
-  WriteRegStr SHCTX "${PRODUCT_DIR_REGKEY}" "" "${PRODUCT_EXE}"
-  WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "RootKey" "$ProductRootKey"
-  WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "DisplayName" "LyX ${PRODUCT_VERSION}"
-  WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "UninstallString" "${PRODUCT_UNINSTALL_EXE}"
-  WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "DisplayIcon" "${PRODUCT_EXE}"
-  WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
-  WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "StartMenu" "$SMPROGRAMS\$StartmenuFolder"
-  WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "URLUpdateInfo" "${PRODUCT_INFO_URL}"
-  WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_ABOUT_URL}"
-  WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "Publisher" "LyX Team"
-  WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "HelpLink" "${PRODUCT_HELP_LINK}"
-  WriteRegDWORD SHCTX "${PRODUCT_UNINST_KEY}" "NoModify" 0x00000001
-  WriteRegDWORD SHCTX "${PRODUCT_UNINST_KEY}" "NoRepair" 0x00000001
-  ; create start menu entry
-  SetOutPath "$INSTDIR\bin"
-  CreateDirectory "$SMPROGRAMS\$StartmenuFolder"
-  CreateShortCut "$SMPROGRAMS\$StartmenuFolder\${PRODUCT_NAME}.lnk" "${PRODUCT_BAT}" "" "${PRODUCT_EXE}"
-  SetOutPath "$INSTDIR"
-  CreateShortCut "$SMPROGRAMS\$StartmenuFolder\Uninstall.lnk" "${PRODUCT_UNINSTALL_EXE}"
-  
-  ; create desktop icon
-  ${if} $CreateDesktopIcon == "true"
-   SetOutPath "$INSTDIR\bin"
-   CreateShortCut "$DESKTOP\LyX ${PRODUCT_VERSION}.lnk" "${PRODUCT_BAT}" "" "${PRODUCT_EXE}"
+   IntOp $Pointer $Pointer - 1 ; jump before the first "\" of "\miktex\bin"
+   StrCpy $String $String "$Pointer" ; $String is now the part before "\miktex\bin"
+   Delete "$String\tex\latex\cv.cls"
+   RMDir /r "$String\tex\latex\lyx"
+   RMDir /r "$String\tex\latex\revtex"
+   RMDir /r "$String\tex\latex\hollywood"
+   RMDir /r "$String\tex\latex\broadway"
+   ExecWait "$LatexPath\initexmf --update-fndb"
   ${endif}
+
+  ; delete start menu folder
+  ReadRegStr $0 SHCTX "${PRODUCT_UNINST_KEY}" "StartMenu"
+  RMDir /r "$0"
+  ; delete desktop icon
+  Delete "$DESKTOP\LyX ${PRODUCT_VERSION}.lnk"
+  ; delete registry entries
+  DeleteRegKey HKCU "${PRODUCT_UNINST_KEY}"
+  DeleteRegKey SHCTX "${PRODUCT_UNINST_KEY}"
+  DeleteRegKey SHCTX "${PRODUCT_DIR_REGKEY}"
   
-  ; register the extension .lyx
-  ${CreateApplicationAssociation} "${PRODUCT_NAME}" "${PRODUCT_NAME}" "$(FileTypeTitle)" "${PRODUCT_EXE}" "${PRODUCT_BAT}"
-  ${CreateFileAssociation} "${PRODUCT_EXT}" "${PRODUCT_NAME}" "${PRODUCT_MIME_TYPE}"
-
-  ; test if Python is installed
-  ; only use an existing python when it is version 2.5 because many Compaq and Dell PC are delivered
-  ; with outdated Python interpreters
-  ReadRegStr $PythonPath HKLM "Software\Python\PythonCore\2.5\InstallPath" ""
-  ${if} $PythonPath == ""
-   StrCpy $PythonPath "$INSTDIR\bin"
-  ${else}
-   StrCpy $PythonPath $PythonPath -1 ; remove the "\" at the end
-  ${endif}
+  ; run the installer of the old LyX version to clean up the third party products
+  WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "RootKey" "Start" ; dummy entry to let the uninstaller start
+  Exec "${PRODUCT_UNINSTALL_EXE_OLD}"
   
-  ; run LyX's configure script
-  ; create a bat-file to start configure in a console window so that the user see the progress
-  ; of the configuration and to have a signal when the configuration is ready to start LyX
-  ; this is important when LyX is installed together with MiKTeX or when LyX is installed for the first
-  ; time on a computer, because the installation of missing LaTeX-files required by LyX could last minutes
-  ; a batch file is needed because simply calling ExecWait '"$PythonPath\python.exe" "$INSTDIR\Resources\configure.py"'
-  ; creates the config files in $INSTDIR\bin
-  StrCpy $1 $INSTDIR 2 ; get drive letter
-  FileOpen $R1 "$INSTDIR\Resources\configLyX.bat" w
-  FileWrite $R1 '$1$\r$\n\
-                cd $INSTDIR\Resources\$\r$\n\
-                "$PythonPath\python.exe" configure.py'
-  FileClose $R1
-  MessageBox MB_OK|MB_ICONINFORMATION "$(LatexConfigInfo)"
-  ExecWait '"$INSTDIR\Resources\configLyX.bat"'
-  Delete "$INSTDIR\Resources\configLyX.bat"
-
 SectionEnd
 
+
 ; eof
index c64a004fff2a85e9ebc836037fe76a75ebaad184..25a18b520188947dfb792c977a66eeb1f3b9ae51 100644 (file)
@@ -367,7 +367,7 @@ FunctionEnd
 ;--------------------------------
 
 Function CheckAppPathPreferences
- ; modify the preferences file for all users
+ ; replaces a string "$OldString" with "$NewString" in a file "$FileName"
 
   ; get folder names
   !insertmacro AppPreSuff $AppPre $AppSuff
@@ -397,21 +397,21 @@ Function CheckAppPathPreferences
    ; AppPre and AppSuff are generated in the macro "AppPreSuff"
    StrCpy $AppPath "$AppPre\$0\$AppSuff\${PRODUCT_SUBFOLDER}"
    ; read the preferences file to test if it exists
-   FileOpen $R1 "$AppPath\preferences" r
+   FileOpen $R1 "$AppPath\$FileName" r
    IfErrors doneA
    FileClose $R1
    ; search for "$OldString" and replace it with "$NewString"
-   ${LineFind} "$AppPath\preferences" "" "1:-1" "ReplaceLineContent" ; macro from TextFunc.nsh
+   ${LineFind} "$AppPath\$FileName" "" "1:-1" "ReplaceLineContent" ; macro from TextFunc.nsh ; calls Function ReplaceLineContent
    doneA:
   Goto loopPrefs
   ready:
   ; now do the same for the last user name
   StrCpy $0 $UserList
   StrCpy $AppPath "$AppPre\$0\$AppSuff\${PRODUCT_SUBFOLDER}"
-  FileOpen $R1 "$AppPath\preferences" r
+  FileOpen $R1 "$AppPath\$FileName" r
   IfErrors doneB
   FileClose $R1
-  ${LineFind} "$AppPath\preferences" "" "1:-1" "ReplaceLineContent"
+  ${LineFind} "$AppPath\$FileName" "" "1:-1" "ReplaceLineContent"
   doneB:
   
 FunctionEnd
index 67b35e29a3659a21efc2641ae9c21efcbe513721..224e9dae2366374db6d00932a1823cbc262422ba 100644 (file)
@@ -10,32 +10,36 @@ Function un.onInit
    Abort
   ${endif}
 
-  ; Ascertain whether the user has sufficient privileges to uninstall.
-  SetShellVarContext current
-
-  ReadRegStr $0 HKCU "${PRODUCT_UNINST_KEY}" "RootKey"
-  ${if} $0 == ""
-    ReadRegStr $0 HKLM "${PRODUCT_UNINST_KEY}" "RootKey"
-    ${if} $0 == ""
-      MessageBox MB_OK|MB_ICONEXCLAMATION "$(UnNotInRegistryLabel)"
-    ${endif}
-  ${endif}
-
-  ; If the user does *not* have administrator privileges, abort
+  ; set registry root key
   StrCpy $Answer ""
   !insertmacro IsUserAdmin $Answer $UserName ; macro from LyXUtils.nsh
   ${if} $Answer == "yes"
     SetShellVarContext all
   ${else}
-    MessageBox MB_OK|MB_ICONSTOP "$(UnNotAdminLabel)"
-    Abort
+   SetShellVarContext current
+  ${endif}
+
+  ; Ascertain whether the user has sufficient privileges to uninstall.
+  ; abort when LyX was installed with admin permissions but the user doesn't have administrator privileges
+  ReadRegStr $0 HKLM "${PRODUCT_UNINST_KEY}" "RootKey"
+  ${if} $0 != ""
+  ${andif} $Answer != "yes"
+   MessageBox MB_OK|MB_ICONSTOP "$(UnNotAdminLabel)"
+   Abort
+  ${endif}
+  ; abort when LyX couldn't be found in the registry
+  ${if} $0 == "" ; check in HKCU
+   ReadRegStr $0 HKCU "${PRODUCT_UNINST_KEY}" "RootKey"
+   ${if} $0 == ""
+     MessageBox MB_OK|MB_ICONEXCLAMATION "$(UnNotInRegistryLabel)"
+   ${endif}
   ${endif}
 
   ; Macro to investigate name of LyX's preferences folders to be able remove them
   !insertmacro UnAppPreSuff $AppPre $AppSuff ; macro from LyXUtils.nsh
 
   ; test if Aspell was installed together with LyX
-  ReadRegStr $0 HKLM "Software\Aspell" "OnlyWithLyX" ; special entry to test if it was installed with LyX
+  ReadRegStr $0 SHCTX "Software\Aspell" "OnlyWithLyX" ; special entry to test if it was installed with LyX
   ${if} $0 == "Yes${PRODUCT_VERSION_SHORT}"
    SectionSetText 2 "Aspell" ; names the corersponding uninstaller section (has the index "2" as it is the third section in Uninstall.nsh)
    StrCpy $AspellInstallYes "Aspell"
@@ -52,15 +56,22 @@ Function un.onInit
    SectionSetText 3 "" ; hides the corresponding uninstaller section
   ${endif}
 
-  ; ignore JabRef because this could only be installed with the complete installer version
+  ; test if JabRef was installed together with LyX
+  ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${JabRefVersion}" "OnlyWithLyX"
+  ${if} $0 == "Yes${PRODUCT_VERSION_SHORT}"
+   SectionSetText 4 "JabRef" ; names the corersponding uninstaller section
+   StrCpy $JabRefInstalled "JabRef"
+  ${else}
    SectionSetText 4 "" ; hides the corresponding uninstaller section
-   StrCpy $JabRefInstalled ""
+  ${endif}
 
-  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "$(UnReallyRemoveLabel)" IDYES +2
+  ; question message if the user really wants to uninstall LyX
+  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "$(UnReallyRemoveLabel)" IDYES +2 ; continue if yes
   Abort
 
 FunctionEnd
 
+; ----------------------------------
 
 Function un.onUninstSuccess
   HideWindow
@@ -68,6 +79,7 @@ Function un.onUninstSuccess
   
 FunctionEnd
 
+; ----------------------------------
 ; Uninstall sections
 
 Section "un.LyX" un.SecUnProgramFiles
@@ -96,14 +108,14 @@ Section "un.LyX" un.SecUnProgramFiles
   ; delete LyX's installation folder
   RMDir /r $INSTDIR
   ; delete start menu folder
-  ReadRegStr $0 ${PRODUCT_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "StartMenu"
+  ReadRegStr $0 SHCTX "${PRODUCT_UNINST_KEY}" "StartMenu"
   RMDir /r "$0"
   ; delete desktop icon
   Delete "$DESKTOP\LyX ${PRODUCT_VERSION}.lnk"
   ; delete registry entries
   DeleteRegKey HKCU "${PRODUCT_UNINST_KEY}"
-  DeleteRegKey ${PRODUCT_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
-  DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
+  DeleteRegKey SHCTX "${PRODUCT_UNINST_KEY}"
+  DeleteRegKey SHCTX "${PRODUCT_DIR_REGKEY}"
   DeleteRegKey HKCR "Applications\lyx.exe"
   DeleteRegKey HKCR "Applications\lyx.bat"
 
@@ -112,49 +124,51 @@ Section "un.LyX" un.SecUnProgramFiles
   ${if} $5 == "True"
    RMDir /r "${AiksaurusDir}"
   ${endif}
-;  StrCpy $0 ""
-;  ReadRegStr $0 HKLM "Software\Aiksaurus" "OnlyWithLyX" ; special entry to test if it was installed with LyX
-;  ${if} $0 == "Yes${PRODUCT_VERSION_SHORT}" 
-;   ; unregister Aiksaurus
-;   ReadRegStr $1 HKLM "Software\Aiksaurus" "Data Path"
-;   RMDir /r "$1"
-;   DeleteRegKey HKLM "SOFTWARE\Aiksaurus"
-;  ${endif}
-
-  ; ImageMagick
-  StrCpy $0 ""
-  ReadRegStr $0 HKLM "Software\ImageMagick" "OnlyWithLyX" ; special entry to test if it was installed with LyX
-  ${if} $0 == "Yes${PRODUCT_VERSION_SHORT}" 
-   ; unregister ImageMagick
-   DeleteRegValue HKLM "SOFTWARE\Classes\Applications" "AutoRun"
-   DeleteRegKey HKLM "SOFTWARE\ImageMagick"
-  ${endif}
-  
-  ; Ghostscript and GSview
-  StrCpy $0 ""
-  StrCpy $5 ""
-  ReadRegStr $0 HKLM "SOFTWARE\GPL Ghostscript" "OnlyWithLyX" ; special entry to test if it was installed with LyX
+  ReadRegStr $0 SHCTX "Software\Aiksaurus" "OnlyWithLyX" ; special entry to test if it was installed with LyX
   ${if} $0 == "Yes${PRODUCT_VERSION_SHORT}"
-   ; unregister Ghostscript
-   DeleteRegKey HKLM "SOFTWARE\GPL Ghostscript"
-   ; test if GSview is installed
-   EnumRegValue $5 HKLM "Software\Ghostgum\GSview" 0
-   ${if} $5 != ""
-    ; unregister GSview
-    MessageBox MB_ICONINFORMATION|MB_OK "$(UnGSview)"
-    ReadRegStr $3 HKLM "Software\Ghostgum\GSview" "$5"
-    ReadRegStr $4 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\GSview $5" "UninstallString"
-    ExecWait "$4"
-   ${endif}
+   ; unregister Aiksaurus
+   ReadRegStr $1 SHCTX "Software\Aiksaurus" "Data Path"
+   RMDir /r "$1"
+   DeleteRegKey SHCTX "SOFTWARE\Aiksaurus"
   ${endif}
+
+  ; the following can only be done with admin permissions
+  ${if} $Answer == "yes" ; if admin
   
-  ; MiKTeX specific LyX setting 
-  DeleteRegValue HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "MIKTEX_AUTOINSTALL"
-  DeleteRegValue HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "MIKTEX_REPOSITORY"
+   ; ImageMagick
+   ReadRegStr $0 SHCTX "Software\ImageMagick" "OnlyWithLyX" ; special entry to test if it was installed with LyX
+   ${if} $0 == "Yes${PRODUCT_VERSION_SHORT}"
+    ; unregister ImageMagick
+    DeleteRegValue SHCTX "SOFTWARE\Classes\Applications" "AutoRun"
+    DeleteRegKey SHCTX "SOFTWARE\ImageMagick"
+   ${endif}
   
-  ; remove extension .lyx
-  ${RemoveFileAssociation} "${PRODUCT_EXT}" "${PRODUCT_NAME}"
-  DeleteRegKey HKCR "${PRODUCT_NAME}"
+   ; Ghostscript and GSview
+   ReadRegStr $0 HKLM "SOFTWARE\GPL Ghostscript" "OnlyWithLyX" ; special entry to test if it was installed with LyX
+   ${if} $0 == "Yes${PRODUCT_VERSION_SHORT}"
+    ; unregister Ghostscript
+    DeleteRegKey HKLM "SOFTWARE\GPL Ghostscript"
+    ; test if GSview is installed
+    StrCpy $5 ""
+    EnumRegValue $5 HKLM "Software\Ghostgum\GSview" 0
+    ${if} $5 != ""
+     ; unregister GSview
+     MessageBox MB_ICONINFORMATION|MB_OK "$(UnGSview)"
+     ReadRegStr $3 HKLM "Software\Ghostgum\GSview" "$5"
+     ReadRegStr $4 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\GSview $5" "UninstallString"
+     ExecWait "$4"
+    ${endif}
+   ${endif}
+   
+   ; MiKTeX specific LyX setting 
+   DeleteRegValue HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "MIKTEX_AUTOINSTALL"
+   DeleteRegValue HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "MIKTEX_REPOSITORY"
+   
+   ; remove extension .lyx
+   ${RemoveFileAssociation} "${PRODUCT_EXT}" "${PRODUCT_NAME}"
+   DeleteRegKey HKCR "${PRODUCT_NAME}"
+   
+  ${endif} ; end if Answer (if admin)
   
   SetAutoClose true
 
index e673ed089ff0114129a67c5e80d3a586202321e0..5cf01ad8e5b3d795b599f45ef7b72b9bf13eaddb 100644 (file)
@@ -1,42 +1,23 @@
 Function UpdateModifiedFiles
 
- ; list with modified files
+ ; list with modified files for LyX 1.5svn xx-04-2007
  SetOutPath "$INSTDIR\bin"
- File "${PRODUCT_SOURCEDIR}\bin\lyx.exe"
- File "${PRODUCT_SOURCEDIR}\bin\tex2lyx.exe"
- File "${PRODUCT_SOURCEDIR}\bin\pdfclose.exe"
- File "${PRODUCT_SOURCEDIR}\bin\pdfopen.exe"
- File "${PRODUCT_SOURCEDIR}\bin\PDFViewWin.exe"
+ File "${PRODUCT_SOURCEDIR}\bin\lyx.exe" ; always here
+ File "${PRODUCT_SOURCEDIR}\bin\tex2lyx.exe" ; always here
  SetOutPath "$INSTDIR\Resources"
- File /r "${PRODUCT_SOURCEDIR}\Resources\fonts"
- File /r "${PRODUCT_SOURCEDIR}\Resources\locale"
- File "${PRODUCT_SOURCEDIR}\Resources\CREDITS"
- SetOutPath "$INSTDIR\Resources\bind"
- File "${PRODUCT_SOURCEDIR}\Resources\bind\aqua.bind"
- SetOutPath "$INSTDIR\Resources\images"
- File "${PRODUCT_SOURCEDIR}\Resources\images\dialog-show_mathdelimiter.xpm"
- File "${PRODUCT_SOURCEDIR}\Resources\images\dialog-show_mathmatrix.xpm"
- SetOutPath "$INSTDIR\Resources\images\math"
- File "${PRODUCT_SOURCEDIR}\Resources\images\math\frac.xpm"
- File "${PRODUCT_SOURCEDIR}\Resources\images\math\sqrt.xpm"
- File "${PRODUCT_SOURCEDIR}\Resources\images\math\cases.xpm"
- File "${PRODUCT_SOURCEDIR}\Resources\images\math\root.xpm"
- SetOutPath "$INSTDIR\Resources\layouts"
- File "${PRODUCT_SOURCEDIR}\Resources\layouts\europecv.layout"
- File "${PRODUCT_SOURCEDIR}\Resources\layouts\moderncv.layout"
- File "${PRODUCT_SOURCEDIR}\Resources\layouts\g-brief2.layout"
- File "${PRODUCT_SOURCEDIR}\Resources\layouts\beamer.layout"
- SetOutPath "$INSTDIR\Resources\templates"
- File "${PRODUCT_SOURCEDIR}\Resources\templates\g-brief2.lyx"
+ File /r "${PRODUCT_SOURCEDIR}\Resources\locale" ; always here
+ File "${PRODUCT_SOURCEDIR}\Resources\configure.py"
+ SetOutPath "$INSTDIR\Resources\doc"
+ File "${PRODUCT_SOURCEDIR}\Resources\doc\Intro.lyx"
+ File "${PRODUCT_SOURCEDIR}\Resources\doc\EmbeddedObjects.lyx"
+ File "${PRODUCT_SOURCEDIR}\Resources\doc\TOC.lyx" ; must be here when another \doc file has been changed
+ File "${PRODUCT_SOURCEDIR}\Resources\doc\Tutorial.lyx"
  SetOutPath "$INSTDIR\Resources\doc\es"
- File "${PRODUCT_SOURCEDIR}\Resources\doc\es\EmbeddedObjects.lyx"
  File "${PRODUCT_SOURCEDIR}\Resources\doc\es\Extended.lyx"
- SetOutPath "$INSTDIR\Resources\doc\de"
- File "${PRODUCT_SOURCEDIR}\Resources\doc\de\Extended.lyx"
- File "${PRODUCT_SOURCEDIR}\Resources\doc\de\UserGuide.lyx"
- SetOutPath "$INSTDIR\Resources\ui"
- File "${PRODUCT_SOURCEDIR}\Resources\ui\stdtoolbars.inc"
- File "${PRODUCT_SOURCEDIR}\Resources\ui\stdmenus.inc"
+ File "${PRODUCT_SOURCEDIR}\Resources\doc\es\EmbeddedObjects.lyx"
+ File "${PRODUCT_SOURCEDIR}\Resources\doc\es\TOC.lyx" ; must be here when another \doc file has been changed
+ SetOutPath "$INSTDIR\Resources\layouts"
+ File "${PRODUCT_SOURCEDIR}\Resources\layouts\g-brief2.layout"
 
 FunctionEnd